r ::= word ^"::=" alternatives /ws
| word ^"!::=" alternatives /ws
-alternatives ::= equiAlt +/ (ws ">" ws)
-equiAlt ::= conjuncts +/ (ws "|" ws)
+alternatives ::= (conjuncts +/ (ws "|" ws)) +/ (ws ">" ws)
conjuncts ::= sequence
| sequence ^"&" e*/ws /ws
range ::= ec => "range"
| ec ^"-" ec
-e ::= word => "nonTerminal"
+e ::= word => "nonTerminal"
| quoted => "literal"
| ^"()"
- | ^"{" sequence "}" /ws
+ | ^"{" sequence "}" /ws
| ^"[" (range*) "]"
| ^"[~" (range*) "]"
| ^"^" quoted /ws