public void visit(StmtNode_IfElse node) { var elseLabel = ILGenerator.DefineLabel(); var endLabel = ILGenerator.DefineLabel(); new ExprNodeVisitor_CodeEmitor(this, typeof(int), node.Expr); ILGenerator.Emit(OpCodes.Brfalse, elseLabel); if (node.IfStmt != null) { node.IfStmt.acceptVisitor(this); } ILGenerator.Emit(OpCodes.Br, endLabel); ILGenerator.MarkLabel(elseLabel); if (node.ElseStmt != null) { node.ElseStmt.acceptVisitor(this); } ILGenerator.MarkLabel(endLabel); }
public void visit(StmtNode_IfElse node) { var elseLabel = ILGenerator.DefineLabel(); var endLabel = ILGenerator.DefineLabel(); new ExprNodeVisitor_CodeEmitor(this, typeof(int), node.Expr); ILGenerator.Emit(OpCodes.Brfalse, elseLabel); if (node.IfStmt != null) node.IfStmt.acceptVisitor(this); ILGenerator.Emit(OpCodes.Br, endLabel); ILGenerator.MarkLabel(elseLabel); if (node.ElseStmt != null) node.ElseStmt.acceptVisitor(this); ILGenerator.MarkLabel(endLabel); }