protected virtual void _Generate(AstNodeStmIfElse ifElse) { Output.Write("if ("); Generate(ifElse.Condition); Output.Write(") "); Generate(ifElse.True); if (ifElse.False != null) { Output.Write(" else "); Generate(ifElse.False); } }
protected virtual void _Generate(AstNodeStmIfElse ifElse) { var afterIfLabel = DefineLabel("AfterIf"); Generate(ifElse.Condition); Emit(OpCodes.Brfalse, afterIfLabel); Generate(ifElse.True); if (ifElse.False != null) { var afterElseLabel = DefineLabel("AfterElse"); Emit(OpCodes.Br, afterElseLabel); MarkLabel(afterIfLabel); Generate(ifElse.False); MarkLabel(afterElseLabel); } else { MarkLabel(afterIfLabel); } }