exception Error type token = WRITELN WRITE WHILE VAR TIMES THEN SLASH SEMICOLON RPAREN READLN RBRACKET PROGRAM PROCEDURE PLUS OR OF NOT NEW NE MINUS LT LPAREN LE LBRACKET INTEGER INTCONST of (int32) IF ID of (string Location.t) GT GE FUNCTION EQ END ELSE DOT DO COMMA COLONEQ COLON BOOLEAN BOOLCONST of (bool) BEGIN ARRAY AND val program: (Lexing.lexbuf -> token) -> Lexing.lexbuf -> (LPP.program)