Complete 1.02.p.1: Tiger lexer
[tiger.ml.git] / tiger / src / lib / tiger / tiger_parser.ml
diff --git a/tiger/src/lib/tiger/tiger_parser.ml b/tiger/src/lib/tiger/tiger_parser.ml
new file mode 100644 (file)
index 0000000..191f8a3
--- /dev/null
@@ -0,0 +1,95 @@
+open Printf
+
+module Token = struct
+  type t =
+    | AND
+    | ARRAY
+    | ASSIGN
+    | BREAK
+    | COLON
+    | COMMA
+    | DIVIDE
+    | DO
+    | DOT
+    | ELSE
+    | END
+    | EOF
+    | EQ
+    | FOR
+    | FUNCTION
+    | GE
+    | GT
+    | ID of string
+    | IF
+    | IN
+    | INT of int
+    | LBRACE
+    | LBRACK
+    | LE
+    | LET
+    | LPAREN
+    | LT
+    | MINUS
+    | NEQ
+    | NIL
+    | OF
+    | OR
+    | PLUS
+    | RBRACE
+    | RBRACK
+    | RPAREN
+    | SEMICOLON
+    | STRING of string
+    | THEN
+    | TIMES
+    | TO
+    | TYPE
+    | VAR
+    | WHILE
+
+  let to_string = function
+    | TYPE      -> "TYPE"
+    | VAR       -> "VAR"
+    | FUNCTION  -> "FUNCTION"
+    | BREAK     -> "BREAK"
+    | OF        -> "OF"
+    | END       -> "END"
+    | IN        -> "IN"
+    | NIL       -> "NIL"
+    | LET       -> "LET"
+    | DO        -> "DO"
+    | TO        -> "TO"
+    | FOR       -> "FOR"
+    | WHILE     -> "WHILE"
+    | ELSE      -> "ELSE"
+    | THEN      -> "THEN"
+    | IF        -> "IF"
+    | ARRAY     -> "ARRAY"
+    | ASSIGN    -> "ASSIGN"
+    | OR        -> "OR"
+    | AND       -> "AND"
+    | GE        -> "GE"
+    | GT        -> "GT"
+    | LE        -> "LE"
+    | LT        -> "LT"
+    | NEQ       -> "NEQ"
+    | EQ        -> "EQ"
+    | DIVIDE    -> "DIVIDE"
+    | TIMES     -> "TIMES"
+    | MINUS     -> "MINUS"
+    | PLUS      -> "PLUS"
+    | DOT       -> "DOT"
+    | RBRACE    -> "RBRACE"
+    | LBRACE    -> "LBRACE"
+    | RBRACK    -> "RBRACK"
+    | LBRACK    -> "LBRACK"
+    | RPAREN    -> "RPAREN"
+    | LPAREN    -> "LPAREN"
+    | SEMICOLON -> "SEMICOLON"
+    | COLON     -> "COLON"
+    | COMMA     -> "COMMA"
+    | STRING s  -> sprintf "STRING (%S)" s
+    | INT    i  -> sprintf "INT (%d)" i
+    | ID     id -> sprintf "ID (%s)" id
+    | EOF       -> "EOF"
+end
This page took 0.029531 seconds and 4 git commands to generate.