| Sequence ^"&~" Elements /ws
Elements ::= e*/ws
-ps ::= Elements => "ps"
- | (e+/ws !ws)? ^"^" Quoted (!ws e+/ws)?
-psy ::= ps
- | ps !wp ^"/" !ws e
-psx ::= psy => "psy"
- | psy ^"->" e /ws
-Sequence ::= Quoted => "qprod"
- > psx => "psx"
- | psx "=>" ^"[]" /ws
- | psx ^"=>" ("()"|word|Quoted) /ws
+PreSequence ::= Elements => "ps"
+ | PreSequence !wp ^"/" !ws e
+ | PreSequence ^"->" e /ws
+ | (Quoted|word) ^"::" PreSequence /ws
+ | PreSequence ^"=>" ("[]"|"()"|word|Quoted) /ws
+Sequence ::= PreSequence => "psx"
ec ::= ~[\-\]\\]
| escaped
Range ::= ec => "range"
| ec ^"-" ec
-e ::= word => "nonTerminal"
+e ::=
+ (Quoted|word) ^":" e
+ > word => "nonTerminal"
| Quoted => "literal"
| ^"()"
| ^"{" Sequence "}" /ws
| ^"[" Range* "]"
-
| e ^"++" /ws -> ~[/]
| e ^"+" /ws -> ~[+]
| e ^"++/" e /ws
| e ^"*/" e /ws
| ^"!" e /ws
| e ^"?" /ws
+ | ^"^" Quoted /ws
| "(" word ^")" /ws
> ^"(" RHS ")" /ws