aboutsummaryrefslogtreecommitdiff
path: root/tools/parse.nom
diff options
context:
space:
mode:
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 ""