sig
type token =
SPACE of int
| COLON
| NEWLINE
| LPAREN
| RPAREN
| LBRACKET
| RBRACKET
| COMMA
| LBRACE
| RBRACE
| PLUS
| MINUS
| TIMES
| DIVIDE
| MOD
| POWER
| PLUSA
| MINUSA
| TIMESA
| DIVIDEA
| MODA
| POWERA
| EQ
| NEQ
| GT
| LT
| GEQ
| LEQ
| AND
| OR
| NAND
| NOR
| XOR
| NOT
| IF
| ELSE
| ELSIF
| WHILE
| ASSIGN
| RETURN
| CLASS
| EXTEND
| SUPER
| INIT
| PRIVATE
| PROTECTED
| PUBLIC
| NULL
| VOID
| THIS
| NEW
| MAIN
| ARRAY
| REFINABLE
| REFINE
| REFINES
| TO
| SEMI
| DOT
| EOF
| TYPE of string
| ILIT of int
| FLIT of float
| BLIT of bool
| SLIT of string
| ID of string
val cdecls :
(Lexing.lexbuf -> Parser.token) -> Lexing.lexbuf -> Ast.program
end