1structure Tree  =
2struct
3  type size = int
4
5datatype stm = SEQ of stm * stm
6             | LABEL of Temp.label
7             | JUMP of Temp.label
8             | CJUMP of exp * Temp.label
9             | MOVE of exp * exp
10             | EXP of exp
11
12     and exp = BINOP of binop * exp * exp
13             | RELOP of relop * exp * exp
14             | MEM of exp
15             | TEMP of Temp.temp
16             | ESEQ of stm * exp
17             | NAME of Temp.label
18             | NCONST of Arbint.int
19             | WCONST of Arbint.int
20             | CALL of exp * exp
21             | PAIR of exp * exp
22
23      and binop = PLUS | MINUS | MUL | DIV
24                | AND | OR | LSHIFT | RSHIFT | ARSHIFT | XOR | ROR
25
26      and relop = EQ | NE | LT | GT | LE | GE
27                | CC | LS | HI | CS
28
29  fun pair2list (PAIR(v1, v2)) =
30        (pair2list v1) @ (pair2list v2)
31   |  pair2list v = [v]
32
33end
34