X-Git-Url: https://git.xandkar.net/?p=tiger.ml.git;a=blobdiff_plain;f=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_tree.mli;fp=compiler%2Fsrc%2Flib%2Ftiger%2Ftiger_tree.mli;h=8b3f5f5b831eb7d406c7abdda0d8d86142f2b036;hp=0000000000000000000000000000000000000000;hb=528693fddf524eab49efab2ba6f8df19d95badf0;hpb=68e4b4a947a95a965381457c2dc80bef05f8f58a 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