Example #1
0
        public override object VisitMacro(MFSHParser.MacroContext context)
        {
            const String fcn = "VisitMacro";

            this.TraceMsg(context, fcn);
            String[] names = context
                             .NAME()
                             .Select((a) => a.GetText())
                             .ToArray();
            MIMacro    macro      = new MIMacro(this.SourceName, context.Start.Line, names[0], names.Skip(1));
            MacroBlock macroBlock = new MacroBlock("macro", macro);

            this.PushState(macroBlock);

            var redirectContext = context.redirect();

            if (redirectContext != null)
            {
                macro.Redirect = (String)(this.Visit(redirectContext.singleString()));
            }
            macro.OnceFlag = context.ONCE() != null;

            return(null);
        }
 /// <summary>
 /// Visit a parse tree produced by <see cref="MFSHParser.macro"/>.
 /// <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 VisitMacro([NotNull] MFSHParser.MacroContext context)
 {
     return(VisitChildren(context));
 }