aboutsummaryrefslogtreecommitdiff
path: root/examples/working-loaded/parser.test
blob: 0398c0886cdd0c730b77bf5b54572a9943ee4a45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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 ] len 0 gt { "stack garbage" die } rep

"generation done" dump

# 100000 {
  Sparser .run =*consume
  [ "(" "(" /2 "+" /1 "-" /1 ")" ")" "+" /1 "" ] { _ consume } each
# } rep

result dump