-s ::= !ws Grammar ws => "gram"
-Grammar ::= NonTerminal +/ ws => "grammar"
-NonTerminal ::= word ^"::=" RHS /ws
-
-RHS ::= (Conjuncts +/ (!ws "|" !ws)) +/ (!ws ">" !ws)
-
-Conjuncts ::= Sequence
- | Sequence ^"&" Elements /ws
- | Sequence ^"&~" Elements /ws
-Elements ::= e*/ws
-
-psy ::= Elements => "ps"
- | psy !wp ^"/" !ws e
- | psy ^"->" e /ws
-Sequence ::= Quoted => "qprod"
- > psy => "psx"
- | psy "=>" ^"[]" /ws
- | psy ^"=>" ("()"|word|Quoted) /ws
-
-ec ::= ~[\-\]\\]
+// use 'a'-'z' or 'a-z' instead of [a-z]?
+// EOF token?
+// #include (with renaming?)
+
+s = ws! Grammar ws!
+
+Grammar = NonTerminal +/ ws
+
+NonTerminal = Word "=" RHS /ws
+ | Word "*" ws! ^"=" ws! RHS
+ | Word "*/" Word ws! ^"=" ws! RHS
+
+RHS = (Sequence +/ (ws! "|" ws!)) +/ (ws! ">" ws!)
+
+Elements = e*/ws
+
+PreSequence = Elements
+ | (Quoted|Word) ^"::" PreSequence /ws
+ > PreSequence ^"/" e /ws
+ | PreSequence ^"->" e /ws
+
+Sequence = psx:: PreSequence
+ | Sequence ^"&" Elements /ws
+ | Sequence ^"&~" Elements /ws
+
+ec = ~[\-\]\\]