Exemplo n.º 1
0
        public override SemanticCheckResult VisitWhile(ASTWhileNode While)
        {
            var cond = While.Condition.Accept(this);

            While.SemanticCheckResult.Ensure(cond);
            var body = While.Body.Accept(this);

            While.SemanticCheckResult.Ensure(body);
            While.SemanticCheckResult.EnsureReturnType(CompilationUnit.TypeEnvironment.Object);
            return(While.SemanticCheckResult);
        }
Exemplo n.º 2
0
        public ASTCILNode VisitWhile(ASTWhileNode While)
        {
            var ifLabel = labelIlGenerator.GenerateIf();

            return(new ASTCILIfNode((ASTCILExpressionNode)While.Condition.Accept(this),
                                    new ASTCILBlockNode(new[]
            {
                (ASTCILExpressionNode)While.Body.Accept(this), new ASTCILGotoNode(ifLabel.init)
            }),
                                    new ASTCILVoidNode(), ifLabel));
        }
 public virtual T VisitWhile(ASTWhileNode While)
 {
     While.Condition.Accept(this);
     While.Body.Accept(this);
     return(default(T));
 }