Esempio n. 1
0
        public ail.net.parser.GrammarSymbol AddSymbol(int xi_symbol_id, ail.net.parser.GrammarSymbol.EType xi_type, string xi_name)
        {
            ail.net.parser.GrammarSymbol result = (ail.net.parser.GrammarSymbol)PoolAttr[xi_symbol_id];

            if (result == (object)null)
            {
                result = new ail.net.parser.GrammarSymbol();

                result.Id   = xi_symbol_id;
                result.Type = xi_type;
                result.Name = xi_name;

                PoolAttr[xi_symbol_id] = result;

                if (result.IsNonTerminal())
                {
                    NonTerminalCountAttr++;
                }
                else if (result.IsTerminal())
                {
                    TerminalCountAttr++;
                }
            }

            ail.net.framework.Assert.NonNullReference(result, "result");

            result.AddRef();

            return(result);
        }
Esempio n. 2
0
        public ail.net.parser.GrammarSymbol AddRhsSymbol(int xi_symbol_id, ail.net.parser.GrammarSymbol.EType xi_type, string xi_name)
        {
            ail.net.parser.GrammarSymbol result = GrammarPool.Instance.AddSymbol(xi_symbol_id, xi_type, xi_name);

            RhsAttr.Add(result);

            if (result.IsNonTerminal())
            {
                RhsNonTerminalCountAttr++;
            }
            else if (result.IsTerminal())
            {
                RhsTerminalCountAttr++;
            }

            return(result);
        }