public override IVecValue VisitWhilestmt([NotNull] VectorizeParser.WhilestmtContext context) { scopes.Push(new Scope("while", CurrentScope)); var condition = context.expression(); var body = context.statement(); bool running = ((VecBool)condition.Accept(this)).Value; while (running) { body.Accept(this); running = ((VecBool)condition.Accept(this)).Value; } scopes.Pop(); return(VecNull.Value); }
/// <summary> /// Exit a parse tree produced by <see cref="VectorizeParser.whilestmt"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitWhilestmt([NotNull] VectorizeParser.WhilestmtContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="VectorizeParser.whilestmt"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitWhilestmt([NotNull] VectorizeParser.WhilestmtContext context) { return(VisitChildren(context)); }