/// <summary> /// Construct new symbol from specified rule context in stated scope with metadata. /// </summary> /// <param name="context"> Parse rule context of symbol in parse tree. </param> /// <param name="scope"> Symbol scope according to parse tree lookup. </param> /// <param name="meta"> Metadata dictionary. </param> public SymbolBase(SymbolContext context, Scope scope, Dictionary <string, ParserRuleContext> meta = null) { _ = context ?? throw new ArgumentNullException(nameof(scope)); Guid = Guid.NewGuid(); Name = context.GetText(); Context = context; Scope = scope; Meta = meta ?? new(); }
public override void EnterSymbol([NotNull] SymbolContext context) { var e = CreateElementOnStack <Symbol>().Initialize(context.GetText()); GiveChildToParent(e); }
public override SymbolBase VisitSymbol([NotNull] SymbolContext context) => new SymbolSymbol(context.GetText());