3 Def = Id "(" (Id+/comma) "->" (Id+/comma) ")" "=" Exprs /ws
7 Expr = Id ^"::" ShipName /ws
10 | (Int|Port) ^"-->" Ports /ws
11 | (Int|Port) ws! ^"-[" Int "]->" ws! Ports
12 | (Int|Port) ^"-[*]->" Ports /ws
13 // | "if" "then" "else"
21 ShipName = "":: [A-Z] [a-zA-Z0-9_]*
22 Id = "":: [a-z] [a-zA-Z0-9_]*
24 Comment = "//" (~eol)* eol!
25 | "/*" (any* &~ (any*! "*/" any*!)) "*/"
26 ws = (wsc | Comment)* -> ~wsc
28 wsc = [\r\n ] | \{ | \}