Ejemplo n.º 1
0
        public override void EnterRuleref([NotNull] ANTLRv4Parser.RulerefContext context)
        {
            TerminalNodeImpl first = context.GetChild(0) as TerminalNodeImpl;
            string           id    = context.GetChild(0).GetText();
            IList <ISymbol>  list  = _pd.RootScope.LookupType(id);

            if (!list.Any())
            {
                ISymbol sym = new NonterminalSymbol(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;
        }
Ejemplo n.º 2
0
 public override void EnterRuleref([NotNull] ANTLRv4Parser.RulerefContext context)
 {
     RHS[current_nonterminal].Add(context.GetChild(0) as ITerminalNode);
 }