type token =
  | LPAREN
  | RPAREN
  | LBRACE
  | RBRACE
  | LSQBRACKET
  | RSQBRACKET
  | EOF
  | PLUS
  | MINUS
  | TIMES
  | DIVIDE
  | PERCENT
  | PLUS_PLUS
  | MINUS_MINUS
  | PIPE
  | TILDE
  | QUEST
  | SEMI
  | COLON
  | DOT
  | AT
  | CARET
  | ASSIGN
  | QUEST_ASSIGN
  | DEF
  | AND
  | OR
  | EQ
  | NEQ
  | EXCLAMATION
  | LT
  | GT
  | LEQ
  | GEQ
  | EPSILON
  | NIL
  | TRUE
  | FALSE
  | LET
  | THIS
  | NO_TOKEN
  | FUNC_CALL
  | PREDEFINED_LABEL of (int)
  | STRING_LITERAL of (string)
  | ID of (string)
  | FLOAT of (float)
  | INTEGER of (int)

val lattice :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast.lattice
