-s ::= w* Grammar w* => "gram"
+s ::= ws grammar ws => "gram"
ws !::= w**
-grammar ::= R+/ws => "grammar"
-Grammar ::= R+ => "grammar"
-R ::= word ^"::=" Alternatives
- | word ^"!::=" Alternatives
+grammar ::= r+/ws => "grammar"
+r ::= word ^"::=" alternatives /ws
+ | word ^"!::=" alternatives /ws
ec ::= [~\]\\\-\~] | escaped
-Alternatives ::= EquiAlt +/ ">"
+alternatives ::= EquiAlt +/ (ws ">" ws)
EquiAlt ::= Conjuncts +/ "|" => "alternatives"
sequence ::= Es
> Es ^"/" E /ws
Es ::= E+
+//es ::= E+/ws
Conjuncts ::= rewrite
| rewrite ^"&" sequence
range ::= ec => "range0" | ec ^"-" ec => "range0"
E ::= word => "nonTerminalY"
| [(][)] => "epsilon"
- | ^"{" Alternatives "}"
+ | ^"{" alternatives "}"
| "[" [\~]? range* "]" => "range"
| E ^"*/" E
| E ^"+/" E
| (E ^"++" > E ^"+")
| "(" word ^")"
- > ^"(" Alternatives ")"
+ > ^"(" alternatives ")"
w !::= " "
| "//" [~\n]* "\n"