public void Emit_Or_Shortcut(parse_tree.boolean2 left, parse_tree.boolean_expression right) { System.Reflection.Emit.Label l2 = gen.DefineLabel(); left.emit_code(this, 0); gen.Emit(OpCodes.Dup); gen.Emit(System.Reflection.Emit.OpCodes.Brtrue, l2); right.emit_code(this, 0); Emit_Or(); gen.MarkLabel(l2); }
public override void Emit_Code(generate_interface.typ gen) { object o; parse_tree.boolean_expression be = this.parse_tree as parse_tree.boolean_expression; if (Component.reverse_loop_logic) { o = gen.Loop_Start(this.before_Child == null, true); } else { bool negated = be.top_level_negated(); o = gen.Loop_Start(this.before_Child == null, negated); if (negated) { be = be.remove_negation(); } } if (this.before_Child != null) { this.before_Child.Emit_Code(gen); } gen.Loop_Start_Condition(o); if (this.parse_tree != null) { interpreter_pkg.emit_code(be, this.Text, gen); } gen.Loop_End_Condition(o); if (this.after_Child != null) { this.after_Child.Emit_Code(gen); } gen.Loop_End(o); if (this.Successor != null) { this.Successor.Emit_Code(gen); } }
public void Emit_Or_Shortcut(parse_tree.boolean2 left, parse_tree.boolean_expression right) { left.emit_code(this, 0); stream.Write(" || "); right.emit_code(this, 0); }
public void Emit_Or_Shortcut(parse_tree.boolean2 left, parse_tree.boolean_expression right) { strings.Append("||"); }