public override CfdgCompiler VisitReplacement_loop([NotNull] CfdgParser.Replacement_loopContext context) { var hasLoop = context.NUMBER() != null; if (hasLoop) { // This is the replacement for our modification. currentReplacement.Push(new Replacement()); currentReplacement.Peek().loop = Convert.ToInt32(context.NUMBER().GetText()); currentReplacements.Push(new List <Replacement>()); } var result = VisitChildren(context); if (hasLoop) { currentReplacement.Peek().replacements = currentReplacements.Pop().ToArray(); currentReplacements.Peek().Add(currentReplacement.Pop()); } return(result); }
/// <summary> /// Exit a parse tree produced by <see cref="CfdgParser.replacement_loop"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitReplacement_loop([NotNull] CfdgParser.Replacement_loopContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="CfdgParser.replacement_loop"/>. /// <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 VisitReplacement_loop([NotNull] CfdgParser.Replacement_loopContext context) { return(VisitChildren(context)); }