arrow ::= "->" | "~>" lowercase ::= 'a'|'b'|'c'|'d'|'e'|'f'|'g'|'h'|'i'|'j'|'k'|'l'|'m'|'n'|'o'|'p'|'q'|'r'|'s'|'t'|'u'|'v'|'w'|'x'|'y'|'z' uppercase ::= 'A'|'B'|'C'|'D'|'E'|'F'|'G'|'H'|'I'|'J'|'K'|'L'|'M'|'N'|'O'|'P'|'Q'|'R'|'S'|'T'|'U'|'V'|'W'|'X'|'Y'|'Z' digit ::= '0'|'1'|'2'|'3'|'4'|'5'|'6'|'7'|'8'|'9' alphanumeric ::= lowercase | uppercase | digit Op ::= "+" | "-" | "*" | "<<" | ">>" | "|" | "&" | "^" | "||" | "&&" Id ::= lowercase (lowercase | '_' | digit)*