From a5e76400d3f0fe3244e366a624bfbf83f382c861 Mon Sep 17 00:00:00 2001 From: Drahflow Date: Mon, 4 Jan 2016 12:30:30 +0100 Subject: LALR(1) parser generator --- examples/working-loaded/parser.test | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 examples/working-loaded/parser.test (limited to 'examples/working-loaded/parser.test') 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 -- cgit v1.2.3