1 s ::= w* Grammar w* => "gram"
3 grammar ::= R+/ws => "grammar"
4 Grammar ::= R+ => "grammar"
5 R ::= word ^"::=" Alternatives
6 | word ^"!::=" Alternatives
8 ec ::= [~\]\\\-\~] | escaped
10 Alternatives ::= EquiAlt +/ ">"
11 EquiAlt ::= Conjuncts +/ "|" => "alternatives"
13 Sequence ::= E+ ^"/" E
17 | rewrite ^"&" Sequence
18 | rewrite ^"&~" Sequence
20 rewrite ::= Sequence /ws => "rewrite"
21 | Sequence ^"=>" word /ws
22 | Sequence ^"=>" quoted /ws
23 | Sequence "=>" "()" /ws => "wrap"
25 range ::= ec => "range0" | ec ^"-" ec => "range0"
26 E ::= word => "nonTerminalY"
28 | ^"{" Alternatives "}"
29 | "[" [\~]? range* "]" => "range"
38 | "^" quoted => "care"
47 > ^"(" Alternatives ")"
54 word ::= an++ => "sify"
55 quoted ::= "\"" ([~\"\\] | escaped)* "\"" => "sify"
56 escaped ::= "\\n" => "\n"