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
| sequence ^"&~" e*/ws /ws
-sequence ::= e*/ws
- (ws "/" e)?
- (ws "=>" ws (word|quoted))? => "seq"
+ps ::= (e*/ ws) => "ps"
+psx ::= ps
+ | ps ws ^"/" e
+sequence ::= psx
+ | psx ^"=>" (word|quoted) /ws
ec ::= [~\-\]\\\~]
| escaped
range ::= ec => "range"
| ec ^"-" ec
-e ::= word => "nonTerminal"
+e ::= word => "nonTerminal"
| quoted => "literal"
| ^"()"
- | ^"{" alternatives "}" /ws
+ | ^"{" sequence "}" /ws
| ^"[" (range*) "]"
| ^"[~" (range*) "]"
| ^"^" quoted /ws