aboutsummaryrefslogtreecommitdiff
path: root/tools/parse.nom
diff options
context:
space:
mode:
authorBruce Hill <bitbucket@bruce-hill.com>2018-07-22 13:59:08 -0700
committerBruce Hill <bitbucket@bruce-hill.com>2018-07-22 13:59:08 -0700
commitdfd39f0b14794b360fd6c961c65ab45d229e00b1 (patch)
tree51f0c30ef3a32c969c63321da8164436a3ba8b31 /tools/parse.nom
parent01d5f810ed7fd6e9b261b1fe793f8666970b2068 (diff)
Shifting further towards having inline tests. Also added a helper
function for directly extracting source lines from a Source or AST.
Diffstat (limited to 'tools/parse.nom')
-rwxr-xr-xtools/parse.nom27
1 files changed, 27 insertions, 0 deletions
diff --git a/tools/parse.nom b/tools/parse.nom
new file mode 100755
index 0000000..68be3a8
--- /dev/null
+++ b/tools/parse.nom
@@ -0,0 +1,27 @@
+#!/usr/bin/env nomsu -V2.4.4.3
+use "core"
+use "lib/os.nom"
+action [print tree %t at indent %indent]:
+ if %t.type is:
+ "Action":
+ say "\(%indent)Action (\(%t.stub)):"
+ for %arg in %t:
+ if (%arg is syntax tree):
+ print tree %arg at indent "\%indent "
+ "Number":
+ say "\(%indent)\(%t.1)"
+ "Var":
+ say "\(%indent)%\(%t.1)"
+ else:
+ say "\(%indent)\(%t.type):"
+ for %arg in %t:
+ if:
+ (%arg is syntax tree):
+ print tree %arg at indent "\%indent "
+ else:
+ say "\%indent \(quote %arg)"
+
+for %path in (=lua "arg"):
+ for file %filename in %path:
+ unless (%filename matches "%.nom$"): do next %filename
+ print tree (parse (read file %filename) from %filename) at indent ""