--- /dev/null
+open Printf
+
+module T = Tiger_parser
+
+type t = T.token
+
+let to_string = function
+ | T.TYPE -> "TYPE"
+ | T.VAR -> "VAR"
+ | T.FUNCTION -> "FUNCTION"
+ | T.BREAK -> "BREAK"
+ | T.OF -> "OF"
+ | T.END -> "END"
+ | T.IN -> "IN"
+ | T.NIL -> "NIL"
+ | T.LET -> "LET"
+ | T.DO -> "DO"
+ | T.TO -> "TO"
+ | T.FOR -> "FOR"
+ | T.WHILE -> "WHILE"
+ | T.ELSE -> "ELSE"
+ | T.THEN -> "THEN"
+ | T.IF -> "IF"
+ | T.ARRAY -> "ARRAY"
+ | T.ASSIGN -> "ASSIGN"
+ | T.OR -> "OR"
+ | T.AND -> "AND"
+ | T.GE -> "GE"
+ | T.GT -> "GT"
+ | T.LE -> "LE"
+ | T.LT -> "LT"
+ | T.NEQ -> "NEQ"
+ | T.EQ -> "EQ"
+ | T.DIVIDE -> "DIVIDE"
+ | T.TIMES -> "TIMES"
+ | T.MINUS -> "MINUS"
+ | T.PLUS -> "PLUS"
+ | T.DOT -> "DOT"
+ | T.RBRACE -> "RBRACE"
+ | T.LBRACE -> "LBRACE"
+ | T.RBRACK -> "RBRACK"
+ | T.LBRACK -> "LBRACK"
+ | T.RPAREN -> "RPAREN"
+ | T.LPAREN -> "LPAREN"
+ | T.SEMICOLON -> "SEMICOLON"
+ | T.COLON -> "COLON"
+ | T.COMMA -> "COMMA"
+ | T.STRING s -> sprintf "STRING (%S)" s
+ | T.INT i -> sprintf "INT (%d)" i
+ | T.ID id -> sprintf "ID (%s)" id
+ | T.EOF -> "EOF"