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)); }