IsReducingAction() public method

public IsReducingAction ( ) : bool
return bool
Example #1
0
        public void CheckClosure(ProdItem item)
        {
            CSymbol csymbol = item.Next();

            if (csymbol == null)
            {
                return;
            }
            csymbol.AddStartItems(this, item.FirstOfRest(csymbol.m_parser));
            if (!item.IsReducingAction())
            {
                return;
            }
            this.MaybeAdd(new ProdItem(item.m_prod, item.m_pos + 1));
        }
Example #2
0
 public void AddEntries()
 {
     for (ProdItemList prodItemList = this.m_items; prodItemList.m_pi != null; prodItemList = prodItemList.m_next)
     {
         ProdItem pi1 = prodItemList.m_pi;
         if (!pi1.m_done)
         {
             CSymbol csymbol = pi1.Next();
             if (csymbol != null && !pi1.IsReducingAction())
             {
                 ParseState parseState = new ParseState(this.m_sgen, csymbol);
                 parseState.MaybeAdd(new ProdItem(pi1.m_prod, pi1.m_pos + 1));
                 for (ProdItemList next = prodItemList.m_next; next != null && next.m_pi != null; next = next.m_next)
                 {
                     ProdItem pi2 = next.m_pi;
                     if (csymbol == pi2.Next())
                     {
                         parseState.MaybeAdd(new ProdItem(pi2.m_prod, pi2.m_pos + 1));
                         pi2.m_done = true;
                     }
                 }
                 if (!this.m_items.AtEnd)
                 {
                     if (csymbol.IsAction())
                     {
                         ParseState next = parseState.CheckExists();
                         foreach (CSymbol key in (IEnumerable)csymbol.m_follow.Keys)
                         {
                             if (key != this.m_sgen.m_symbols.EOFSymbol)
                             {
                                 this.GetTransition(key).m_next = new ParserShift((ParserAction)csymbol, next);
                             }
                         }
                     }
                     else
                     {
                         this.GetTransition(csymbol).m_next = new ParserShift((ParserAction)null, parseState.CheckExists());
                     }
                 }
             }
         }
     }
 }
Example #3
0
		public void CheckClosure(ProdItem item) 
		{
			CSymbol ss = item.Next();
			if (ss!=null) 
			{
				ss.AddStartItems(this,item.FirstOfRest(ss.m_parser));
				if (item.IsReducingAction())
					MaybeAdd(new ProdItem(item.m_prod, item.m_pos+1));
			}
		}