Пример #1
0
 public override void VisitIf(IfStatement ifStmt)
 {
     ifStmt.Test.Accept(this);
     if (ifStmt.Test.NodeType != typeManager.BoolType) {
         report.Error(ifStmt.Test.Location,
                      "BOOL expression expected");
     }
     ifStmt.ThenPart.Accept(this);
     if (ifStmt.ElsePart != null)
         ifStmt.ElsePart.Accept(this);
 }
Пример #2
0
 public override void VisitIf(IfStatement ifStmt)
 {
     Label endLabel = ilGenerator.DefineLabel();
     ifStmt.Test.Accept(this);
     if (ifStmt.ElsePart == null) {
         ilGenerator.Emit(OpCodes.Brfalse, endLabel);
         ifStmt.ThenPart.Accept(this);
     }
     else {
         Label elseLabel = ilGenerator.DefineLabel();
         ilGenerator.Emit(OpCodes.Brfalse, elseLabel);
         ifStmt.ThenPart.Accept(this);
         ilGenerator.Emit(OpCodes.Br, endLabel);
         ilGenerator.MarkLabel(elseLabel);
         ifStmt.ElsePart.Accept(this);
     }
     ilGenerator.MarkLabel(endLabel);
 }
Пример #3
0
 public IfExpression(Expression test,
                     Node thenPart,
                     Node elsePart,
                     Location location)
     : base(location)
 {
     ifStatement = new IfStatement(test, thenPart, elsePart, location);
 }
Пример #4
0
 public virtual void VisitIf(IfStatement ifStmt)
 {
 }