sig
  type token =
      PROGRAM
    | CONST
    | TYPE
    | ARRAY
    | OF
    | RECORD
    | END
    | VAR
    | IF
    | THEN
    | ELSE
    | WHILE
    | DO
    | BEGIN
    | RETURN
    | PROCEDURE
    | FUNCTION
    | NEW
    | DELETE
    | TRUE
    | FALSE
    | NOT
    | INTEGER
    | BOOLEAN
    | POINTER
    | LBRACK
    | RBRACK
    | INTERV
    | SEMICOL
    | COMMA
    | COLON
    | DOT
    | LPAR
    | RPAR
    | ASSIGN
    | ADDRESS_OF
    | EQ
    | NEQ
    | LE
    | LT
    | GE
    | GT
    | PLUS
    | MINUS
    | OR
    | MULT
    | DIV
    | MOD
    | AND
    | NUMERAL of int
    | NAME of string
  val program :
    (Lexing.lexbuf -> Parser.token) -> Lexing.lexbuf -> Pascal_ir.program
end