From: Siraaj Khandkar Date: Fri, 28 Sep 2018 14:01:32 +0000 (-0400) Subject: Define the tree IR X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=commitdiff_plain;h=528693fddf524eab49efab2ba6f8df19d95badf0 Define the tree IR --- diff --git a/compiler/src/lib/tiger/tiger_tree.ml b/compiler/src/lib/tiger/tiger_tree.ml new file mode 100644 index 0000000..8b3f5f5 --- /dev/null +++ b/compiler/src/lib/tiger/tiger_tree.ml @@ -0,0 +1,25 @@ +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 diff --git a/compiler/src/lib/tiger/tiger_tree.mli b/compiler/src/lib/tiger/tiger_tree.mli new file mode 100644 index 0000000..8b3f5f5 --- /dev/null +++ b/compiler/src/lib/tiger/tiger_tree.mli @@ -0,0 +1,25 @@ +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