internal LRAction this[Symbol symbol]
 {
     get
     {
         return actionList.FirstOrDefault(a => a.Symbol.Equals(symbol));
     }
 }
 internal Group(ushort tableIndex, string name, Symbol container, Symbol start, Symbol end,
     GroupAdvanceMode advance, GroupEndingMode ending)
 {
     TableIndex = tableIndex;
     Name = name;
     Container = container;
     Start = start;
     End = end;
     Advance = advance;
     Ending = ending;
     Nesting = new List<ushort>();
 }
 internal Token(Symbol parent, string data)
 {
     State = 0;
     Symbol = parent;
     Data = data;
 }
 internal Production(Symbol head, ushort tableIndex)
 {
     Head = head;
     Handle = new List<Symbol>();
     TableIndex = tableIndex;
 }
 public FAState(ushort tableIndex, Symbol symbol)
 {
     TableIndex = tableIndex;
     Edges = new List<FAEdge>();
     Accept = symbol;
 }
 internal LRAction(Symbol symbol, LRActionType type, ushort value)
 {
     Symbol = symbol;
     Type = type;
     Value = value;
 }