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