📄 ifthenelseexp.java
字号:
package Translate;class IfThenElseExp extends Exp { Exp cond, a, b; Temp.Label t; Temp.Label f; Temp.Label join; IfThenElseExp(Exp cc, Exp aa, Exp bb) { cond=cc; a=aa; b=bb; } // ------- unCx -------- public Tree.Stm unCx(Temp.Label tt, Temp.Label ff) { t = new Temp.Label(); f = new Temp.Label(); return new Tree.SEQ( cond.unCx(t,f), new Tree.SEQ( new Tree.SEQ( new Tree.LABEL(t), new Tree.CJUMP(Tree.CJUMP.NE,new Tree.CONST(0),a.unEx(),tt,ff)), new Tree.SEQ( new Tree.LABEL(f), new Tree.CJUMP(Tree.CJUMP.NE,new Tree.CONST(0),b.unEx(),tt,ff)))); } // ------- unEx -------- public Tree.Exp unEx() { Temp.Temp r= new Temp.Temp(); t = new Temp.Label(); f = new Temp.Label(); join = new Temp.Label(); return new Tree.ESEQ( new Tree.SEQ( new Tree.SEQ( cond.unCx(t,f), new Tree.SEQ( new Tree.SEQ( new Tree.LABEL(t), new Tree.MOVE( new Tree.TEMP(r), a.unEx())), new Tree.JUMP(join))), new Tree.SEQ( new Tree.SEQ( new Tree.SEQ( new Tree.LABEL(f), new Tree.MOVE( new Tree.TEMP(r), b.unEx())), new Tree.JUMP(join)), new Tree.LABEL(join))), new Tree.TEMP(r)); } // ------- unNx -------- public Tree.Stm unNx() { t = new Temp.Label(); f = new Temp.Label(); join = new Temp.Label(); Temp.Temp r = new Temp.Temp(); return new Tree.SEQ( new Tree.SEQ( cond.unCx(t,f), new Tree.SEQ( new Tree.SEQ( new Tree.LABEL(t), new Tree.MOVE( new Tree.TEMP(r), a.unEx())), new Tree.JUMP(join))), new Tree.SEQ( new Tree.SEQ( new Tree.SEQ( new Tree.LABEL(f), new Tree.MOVE( new Tree.TEMP(r), b.unEx())), new Tree.JUMP(join)), new Tree.LABEL(join))); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -