| 1 | open Printf |
| 2 | |
| 3 | module Token = struct |
| 4 | type t = |
| 5 | | AND |
| 6 | | ARRAY |
| 7 | | ASSIGN |
| 8 | | BREAK |
| 9 | | COLON |
| 10 | | COMMA |
| 11 | | DIVIDE |
| 12 | | DO |
| 13 | | DOT |
| 14 | | ELSE |
| 15 | | END |
| 16 | | EOF |
| 17 | | EQ |
| 18 | | FOR |
| 19 | | FUNCTION |
| 20 | | GE |
| 21 | | GT |
| 22 | | ID of string |
| 23 | | IF |
| 24 | | IN |
| 25 | | INT of int |
| 26 | | LBRACE |
| 27 | | LBRACK |
| 28 | | LE |
| 29 | | LET |
| 30 | | LPAREN |
| 31 | | LT |
| 32 | | MINUS |
| 33 | | NEQ |
| 34 | | NIL |
| 35 | | OF |
| 36 | | OR |
| 37 | | PLUS |
| 38 | | RBRACE |
| 39 | | RBRACK |
| 40 | | RPAREN |
| 41 | | SEMICOLON |
| 42 | | STRING of string |
| 43 | | THEN |
| 44 | | TIMES |
| 45 | | TO |
| 46 | | TYPE |
| 47 | | VAR |
| 48 | | WHILE |
| 49 | |
| 50 | let to_string = function |
| 51 | | TYPE -> "TYPE" |
| 52 | | VAR -> "VAR" |
| 53 | | FUNCTION -> "FUNCTION" |
| 54 | | BREAK -> "BREAK" |
| 55 | | OF -> "OF" |
| 56 | | END -> "END" |
| 57 | | IN -> "IN" |
| 58 | | NIL -> "NIL" |
| 59 | | LET -> "LET" |
| 60 | | DO -> "DO" |
| 61 | | TO -> "TO" |
| 62 | | FOR -> "FOR" |
| 63 | | WHILE -> "WHILE" |
| 64 | | ELSE -> "ELSE" |
| 65 | | THEN -> "THEN" |
| 66 | | IF -> "IF" |
| 67 | | ARRAY -> "ARRAY" |
| 68 | | ASSIGN -> "ASSIGN" |
| 69 | | OR -> "OR" |
| 70 | | AND -> "AND" |
| 71 | | GE -> "GE" |
| 72 | | GT -> "GT" |
| 73 | | LE -> "LE" |
| 74 | | LT -> "LT" |
| 75 | | NEQ -> "NEQ" |
| 76 | | EQ -> "EQ" |
| 77 | | DIVIDE -> "DIVIDE" |
| 78 | | TIMES -> "TIMES" |
| 79 | | MINUS -> "MINUS" |
| 80 | | PLUS -> "PLUS" |
| 81 | | DOT -> "DOT" |
| 82 | | RBRACE -> "RBRACE" |
| 83 | | LBRACE -> "LBRACE" |
| 84 | | RBRACK -> "RBRACK" |
| 85 | | LBRACK -> "LBRACK" |
| 86 | | RPAREN -> "RPAREN" |
| 87 | | LPAREN -> "LPAREN" |
| 88 | | SEMICOLON -> "SEMICOLON" |
| 89 | | COLON -> "COLON" |
| 90 | | COMMA -> "COMMA" |
| 91 | | STRING s -> sprintf "STRING (%S)" s |
| 92 | | INT i -> sprintf "INT (%d)" i |
| 93 | | ID id -> sprintf "ID (%s)" id |
| 94 | | EOF -> "EOF" |
| 95 | end |