public override void EnterTerminal([NotNull] ANTLRv4Parser.TerminalContext context) { TerminalNodeImpl first = context.GetChild(0) as TerminalNodeImpl; if (first.Symbol.Type == ANTLRv4Parser.STRING_LITERAL) { Literals.Add(first); } }
public override void EnterTerminal([NotNull] ANTLRv4Parser.TerminalContext context) { TerminalNodeImpl first = context.GetChild(0) as TerminalNodeImpl; if (first.Symbol.Type == ANTLRv4Parser.TOKEN_REF) { string id = first.GetText(); IList <ISymbol> list = _pd.RootScope.LookupType(id); if (!list.Any()) { ISymbol sym = new TerminalSymbol(id, first.Symbol); _pd.RootScope.define(ref sym); } List <CombinedScopeSymbol> new_attrs = new List <CombinedScopeSymbol>(); foreach (ISymbol sym in list) { CombinedScopeSymbol s = new RefSymbol(first.Symbol, sym); new_attrs.Add(s); } _pd.Attributes[context] = new_attrs; _pd.Attributes[context.GetChild(0)] = new_attrs; } }
/// <summary> /// Exit a parse tree produced by <see cref="ANTLRv4Parser.terminal"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitTerminal([NotNull] ANTLRv4Parser.TerminalContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="ANTLRv4Parser.terminal"/>. /// <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 VisitTerminal([NotNull] ANTLRv4Parser.TerminalContext context) { return(VisitChildren(context)); }