--- /dev/null
+type exp =
+ | CONST of int
+ | NAME of Tiger_temp.Label.t
+ | TEMP of Tiger_temp.Temp.t
+ | BINOP of binop * exp * exp
+ | MEM of exp
+ | CALL of exp * exp list
+ | ESEQ of stm * exp
+and stm =
+ | MOVE of exp * exp
+ | EXP of exp
+ | JUMP of exp * Tiger_temp.Label.t list
+ (* List is for possible locations that exp can evaluate to, which will be
+ * needed for dataflow analysis, but for now, the common case will be
+ * JUMP(NAME, l, [l]) *)
+ | CJUMP of relop * exp * exp * Tiger_temp.Label.t * Tiger_temp.Label.t
+ | SEQ of stm * stm
+ | LABEL of Tiger_temp.Label.t
+and binop =
+ | PLUS | MINUS | MUL | DIV | AND | OR | LSHIFT | RSHIFT | ARSHIFT | XOR
+and relop =
+ | EQ | NE | LT | GT | LE | GE
+ | ULT | ULE | UGT | UGE
+
+type t = exp
--- /dev/null
+type exp =
+ | CONST of int
+ | NAME of Tiger_temp.Label.t
+ | TEMP of Tiger_temp.Temp.t
+ | BINOP of binop * exp * exp
+ | MEM of exp
+ | CALL of exp * exp list
+ | ESEQ of stm * exp
+and stm =
+ | MOVE of exp * exp
+ | EXP of exp
+ | JUMP of exp * Tiger_temp.Label.t list
+ (* List is for possible locations that exp can evaluate to, which will be
+ * needed for dataflow analysis, but for now, the common case will be
+ * JUMP(NAME, l, [l]) *)
+ | CJUMP of relop * exp * exp * Tiger_temp.Label.t * Tiger_temp.Label.t
+ | SEQ of stm * stm
+ | LABEL of Tiger_temp.Label.t
+and binop =
+ | PLUS | MINUS | MUL | DIV | AND | OR | LSHIFT | RSHIFT | ARSHIFT | XOR
+and relop =
+ | EQ | NE | LT | GT | LE | GE
+ | ULT | ULE | UGT | UGE
+
+type t = exp