Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
 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);
 }