diff options
| author | Drahflow <drahflow@gmx.de> | 2016-01-04 12:30:30 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2016-01-04 12:30:30 +0100 |
| commit | a5e76400d3f0fe3244e366a624bfbf83f382c861 (patch) | |
| tree | 748e6ec8644e9d274b28f2432d1900e2cc6a0324 /examples | |
| parent | 176e3bd5fe52fc68f1f0d050899aee4f5f06ece0 (diff) | |
LALR(1) parser generator
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/working-loaded/parser.test | 26 |
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 |
