aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDrahflow <drahflow@gmx.de>2016-01-04 12:30:30 +0100
committerDrahflow <drahflow@gmx.de>2016-01-04 12:30:30 +0100
commita5e76400d3f0fe3244e366a624bfbf83f382c861 (patch)
tree748e6ec8644e9d274b28f2432d1900e2cc6a0324 /examples
parent176e3bd5fe52fc68f1f0d050899aee4f5f06ece0 (diff)
LALR(1) parser generator
Diffstat (limited to 'examples')
-rw-r--r--examples/working-loaded/parser.test26
1 files changed, 26 insertions, 0 deletions
diff --git a/examples/working-loaded/parser.test b/examples/working-loaded/parser.test
new file mode 100644
index 0000000..8af1003
--- /dev/null
+++ b/examples/working-loaded/parser.test
@@ -0,0 +1,26 @@
+parser .lalr1 ":" via
+
+/S :nonterminal ==S
+/expr :nonterminal ==expr
+/num :nonterminal ==num
+
+999 ==result
+S [ expr ] { :0 _ =result } :rule
+expr [ num ] { :0 } :rule
+expr [ expr "+" expr ] { ==s s :2 s :0 add } :rule
+expr [ expr "-" expr ] { ==s s :2 s :0 sub } :rule
+expr [ "(" expr ")" ] { ==s s :1 } :rule
+num [ /0 ] { -- 0 } :rule
+num [ /1 ] { -- 1 } :rule
+num [ /2 ] { -- 2 } :rule
+
+S :automaton ==Sparser
+
+"generation done" dump
+
+100000 {
+ Sparser .run =*consume
+ [ "(" /2 "+" /1 "-" /1 ")" "+" /1 "" ] { _ consume } each
+} rep
+
+result dump