s ::= w* Grammar w* => "gram"
Grammar ::= R+ => "grammar"
-R ::= word ^"::=" Class+/">"
- | word ^"!::=" Class+/">"
+R ::= word ^"::=" Sequence
+ | word ^"!::=" Sequence
ec ::= [~\]\\\-\~] | escaped
+Sequence ::= Class +/ ">"
Class ::= Rewrite +/ "|" => "alternatives"
Rewrite ::= Rewritex
range ::= ec => "range0" | ec ^"-" ec => "range0"
E ::= word => "nonTerminalY"
| [(][)] => "epsilon"
- | ^"{" Class+/">" "}"
+ | ^"{" Sequence "}"
| "[" [\~]? range* "]" => "range"
| E ^"*/" E
| E ^"+/" E
| (E ^"++" > E ^"+")
| "(" word ^")"
- > ^"(" Class+/">" ")"
+ > ^"(" Sequence ")"
w !::= " "
| "//" [~\n]* "\n"