public override object VisitForStmt([NotNull] CalculatorParser.ForStmtContext context) { var stack = new Stack(m_stack); var oldStack = m_stack; m_stack = stack; if (context.declaration() != null) { context.declaration().Accept(this); } while (context.expression() is null || (bool)context.expression().Accept(this)) { context.block().Accept(this); if (m_broken) { m_broken = false; break; } if (context.forAssign() != null) { context.forAssign().Accept(this); } if (m_continued) { m_continued = false; continue; } } m_stack = oldStack; return(null); }
/// <summary> /// Visit a parse tree produced by <see cref="CalculatorParser.forStmt"/>. /// <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 VisitForStmt([NotNull] CalculatorParser.ForStmtContext context) { return(VisitChildren(context)); }