-s = ws grammar:Grammar ws
+
+// use 'a'-'z' or 'a-z' instead of [a-z]?
+// EOF token?
+// #include (with renaming?)
+// ANTLR uses ! and ^ suffixes
+
+s = !ws (grammar::Grammar) !ws
Grammar = NonTerminal +/ ws
-NonTerminal = Word !wp ^"=" !wp RHS
+NonTerminal = Word ^"=" RHS /ws
RHS = (Sequence +/ (!ws "|" !ws)) +/ (!ws ">" !ws)
PreSequence = ps:: Elements
| (Quoted|Word) ^"::" PreSequence /ws
- > PreSequence !wp ^"/" !ws e
- | PreSequence ^"->" e /ws
+ > PreSequence ^"/" e /ws
+ | PreSequence ^"->" e /ws
Sequence = psx:: PreSequence
- | Sequence !ws ^"&" !ws Elements
- | Sequence !ws ^"&~" !ws Elements
+ | Sequence ^"&" Elements /ws
+ | Sequence ^"&~" Elements /ws
ec = ~[\-\]\\]
| escaped
| ec ^"-" ec
e = (Quoted|Word) ^":" e
- > nonTerminal:: Word
+ >
+ nonTerminal:: Word
| literal:: Quoted
| ^"()"
- | ^"{" Sequence "}" /ws
+ | ^"{" PreSequence "}" /ws
| ^"[" Range* "]"
| e ^"++" /ws -> ~[/]
| e ^"+" /ws -> ~[+]