s ::= ws grammar ws => "gram"
-ws !::= w**
+ws !::= w** | ws "//" ([~\n]*) "\n" ws
wp !::= w++
grammar ::= r +/ ws => "grammar"
| "(" word ^")" /ws
> ^"(" alternatives ")" /ws
w !::= " "
- | "//" ([~\n]*) "\n"
| "\n"
| "\r"
-word ::= [a-zA-Z0-9_]+ !=> [a-zA-Z0-9_]
+word ::= [a-zA-Z0-9_]++
quoted ::= "\"" (([~\"\\] | escaped)+) "\""
| "\"\"" => ""
escaped ::= "\\n" => "\n"