462afca2a921098be0eb9615be3eeac387e8ad29
[fleet.git] / src / edu / berkeley / fleet / f0 / f0.g
1 s               = ws! (Def+/ws) ws!
2
3 Def = Id "(" (Id+/comma) "->" (Id+/comma) ")" "=" Exprs /ws
4
5 Exprs = Expr +/ ws
6
7 Expr = Id   ^"::" ShipName  /ws
8      | Expr ^";;" Expr      /ws
9      | ^"{" Exprs "}"       /ws
10      | (Int|Port)     ^"-->"              Ports /ws
11      | (Int|Port) ws! ^"-[" Int "]->" ws! Ports
12      | (Int|Port)     ^"-[*]->"           Ports /ws
13 //   | "if" "then" "else"
14 //   | "while"
15
16 Ports    = Port +/ comma
17 Port     = "Port":: Id
18          | "Port":: Id "." Id
19
20 Int      = [\-0-9]++
21 ShipName = "":: [A-Z] [a-zA-Z0-9_]*
22 Id       = "":: [a-z] [a-zA-Z0-9_]*
23
24 Comment = "//" (~eol)* eol!
25            | "/*" (any* &~ (any*! "*/" any*!)) "*/"
26 ws      = (wsc | Comment)* -> ~wsc
27 eol     = [\r\n]
28 wsc     = [\r\n ] | \{ | \}
29 comma   = ws! "," ws!
30 any     = ~[]