Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
 /// <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)
 {
 }
Ejemplo n.º 3
0
 /// <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));
 }