예제 #1
0
        /// <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();
        }
예제 #2
0
        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());