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