// the grammar. An equivalent lex+yacc grammar and support code would
// be several times as long.
-Comment !::= "//" ~[\n]* "\n"
+Comment ! = "//" ~[\n]* "\n"
| "/*" ~[\n]* "*/"
-ws ::= w**
-w ::= [\r\n ]
+ws = w**
+w = [\r\n ]
| Comment
-Program ::= Statement+ /ws
+Program = Statement+ /ws
-Statement ::= Move ";"? /ws
+Statement = Move ";"? /ws
| "{" Statement* "}"
| Port "RENAMES" Port "ENDRENAME" ";" /ws
// | "#define" Port Port /ws
-Move ::= Source ^"->" Destination /ws
+Move = Source ^"->" Destination /ws
| Source ^"=>" Destination /ws
| Destination ^":=" Source /ws
-Destination ::= Port +/ (ws "," ws)
-Source ::= Port
+Destination = Port +/ (ws "," ws)
+Source = Port
| CodeBag
-CodeBag ::= CodeBagName? "{" Statement* "}" ";"? /ws
+CodeBag = CodeBagName? "{" Statement* "}" ";"? /ws
// Note: this deviates from ies06
-Port ::= shipname ("." portname)*
-shipname ::= name index?
-portname ::= name index?
-name ::= [A-Za-z] [A-Za-z0-9\[\]\.]*
-index ::= "[" [0-9]+ "]"
+Port = shipname ("." portname)*
+shipname = name index?
+portname = name index?
+name = [A-Za-z] [A-Za-z0-9\[\]\.]*
+index = "[" [0-9]+ "]"
| [0-9]+