28293031323334
iffalse = f; } public ExpList kids() { return new ExpList(left, new ExpList(right, null)); }
21222324252627
args = a; } public ExpList kids() { return new ExpList(func, args); }
14151617181920
public MEM(Exp e) { exp = e; } public ExpList kids() { return new ExpList(exp, null); }
32333435363738
return new ExpList(exp, null); } public Stm build(ExpList kids) { return new JUMP(kids.head, targets); }
242526272829303132
return new ExpList(src, null); } public Stm build(ExpList kids) { if (dst instanceof MEM) return new MOVE(new MEM(kids.head), kids.tail.head); else return new MOVE(dst, kids.head); }
18192021222324
public ExpList kids() { return new ExpList(exp, null); } public Exp build(ExpList kids) { return new MEM(kids.head); }
390391392393394395396397
{ IRTree2.Exp e = n.e.accept(this).unEx(); ExpList params = new ExpList(e, null); Temp t = new Temp(); return new Ex(new ESEQ(new MOVE(new TEMP(t), currFrame.externalCall("newArray", params)), new TEMP(t))); }
22232425262728
targets = t; } public JUMP(Label target) { this(new NAME(target), new LabelList(target, null)); }
102103104105106107108
} public Exp visit(TVarDecl n) { Access ac = currFrame.allocLocal(false); return new Nx(new IRTree2.MOVE(ac.exp(new TEMP(currFrame.FP())),new IRTree2.CONST(0))); }