blob: 6cb98b012d780fecc554e57f7c1de2d95aad7752 (
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 .glr ":" via
/S :nonterminal ==S
/expr :nonterminal ==expr
/num :nonterminal ==num
S [ expr ] { :0 } :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
"" _ consume :result ==result
}' rep
result dump
|