cup_spec = package? import* class? code* symbol+ precedence* start? production+ package = "package" ID ("." ID)* ";" import = "import" ID ("." ID)* (".*")? ";" class = "class" ID ";" code = ("action""code"|"parser""code"|"init""with"|"scan""with") CODE ";"? symbol = ("terminal"|"non""terminal"|"nonterminal") JTYPE? ID ("," ID)* ";" precedence = "precedence" ("left"|"right"|"nonassoc") ID ("," ID)* ";" start = "start" "with" ID ";" production = ID "::=" rhs ("|" rhs)* ";" rhs = ( ID (":" ID)? | CODE )* ("%prec" ID)? ID = [:jletter:] [:jletterdigit:]* JTYPE = /* Any non primitive Java Type */ CODE = "{:" /* Any Java code */ ":}"