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); }
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)); }