public override void Generate(int b, int a) { int label = NewLabel(); ex.Jump(0, a); EmitLabel(label); st.Generate(label, a); }
public override void Generate(int b, int a) { After = a; int label = NewLabel(); st.Generate(b, label); EmitLabel(label); ex.Jump(b, 0); }
public override void Generate(int b, int a) { After = a; // save label a expr.Jump(0, a); int label = NewLabel(); // label for stmt EmitLabel(label); stmt.Generate(label, b); EmitStatement("goto L" + b); }
public override void Generate(int b, int a) { int label1 = NewLabel(); int label2 = NewLabel(); ex.Jump(0, label2); EmitLabel(label1); st1.Generate(label1, a); EmitStatement("Goto L" + a); EmitLabel(label2); st2.Generate(label2, a); }