
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'

_lr_method = 'LALR'

_lr_signature = 'COINDEX COLON COMMA EQUAL LBRACE LPAREN NUMBER QUOTE RBRACE RPAREN SLASH TEXT TILDE ULINEexpr : entity\n                | rootroot : feature\n                | root COMMA featureentityAny : LBRACE RBRACEentity : LBRACE NUMBER RBRACEentity : LBRACE COINDEX RBRACEentity : LBRACE QUOTE TEXT QUOTE RBRACEentity : LBRACE TILDE RBRACEentityOpen : LBRACE TEXTentityOpen : LBRACE functionentityAnchor : entityOpen anchorentityFeature : entityOpen   COLON feature\n                         | entityAnchor COLON featureentityFeature : entityFeature COMMA featureentity : entityOpen    RBRACE\n                  | entityAnchor  RBRACE\n                  | entityFeature RBRACEfeature : TEXT EQUAL entity\n                   | TEXT EQUAL entityAny\n                   | TEXT EQUAL restrictionfeature : function EQUAL entity\n                   | function EQUAL entityAny\n                   | function EQUAL restrictionfunction : TEXT LPAREN RPARENfunction : TEXT LPAREN restriction RPARENfunctionOpen : TEXT LPAREN entityfunctionArgument : functionOpen     COMMA entity\n                            | functionArgument COMMA entityfunction : functionOpen     RPAREN\n                    | functionArgument RPARENrestriction : SLASH entityrestriction : SLASH entity anchoranchor : ULINE COINDEX'
    
_lr_action_items = {'LBRACE':([0,20,21,30,32,34,44,],[4,43,4,43,4,4,4,]),'TEXT':([0,4,13,16,24,27,29,43,],[5,17,5,38,5,5,5,17,]),'$end':([1,2,3,9,22,26,28,35,36,37,39,40,41,42,49,52,53,54,58,59,61,62,],[0,-1,-2,-3,-16,-17,-18,-4,-6,-7,-9,-19,-20,-21,-34,-22,-23,-24,-5,-32,-8,-33,]),'COMMA':([3,8,9,11,12,22,26,28,35,36,37,39,40,41,42,47,48,49,50,51,52,53,54,55,56,58,59,61,62,],[13,29,-3,32,34,-16,-17,-18,-4,-6,-7,-9,-19,-20,-21,-27,-13,-34,-14,-15,-22,-23,-24,-28,-29,-5,-32,-8,-33,]),'NUMBER':([4,43,],[14,14,]),'COINDEX':([4,25,43,],[15,49,15,]),'QUOTE':([4,38,43,],[16,57,16,]),'TILDE':([4,43,],[18,18,]),'EQUAL':([5,10,31,33,45,60,],[20,30,-30,-31,-25,-26,]),'LPAREN':([5,17,],[21,21,]),'RBRACE':([6,7,8,14,15,17,18,19,22,23,26,28,31,33,36,37,39,40,41,42,43,45,48,49,50,51,52,53,54,57,58,59,60,61,62,],[22,26,28,36,37,-10,39,-11,-16,-12,-17,-18,-30,-31,-6,-7,-9,-19,-20,-21,58,-25,-13,-34,-14,-15,-22,-23,-24,61,-5,-32,-26,-8,-33,]),'COLON':([6,7,17,19,23,31,33,45,49,60,],[24,27,-10,-11,-12,-30,-31,-25,-34,-26,]),'ULINE':([6,17,19,22,26,28,31,33,36,37,39,45,59,60,61,],[25,-10,-11,-16,-17,-18,-30,-31,-6,-7,-9,-25,25,-26,-8,]),'RPAREN':([11,12,21,22,26,28,36,37,39,46,47,49,55,56,59,61,62,],[31,33,45,-16,-17,-18,-6,-7,-9,60,-27,-34,-28,-29,-32,-8,-33,]),'SLASH':([20,21,30,],[44,44,44,]),}

_lr_action = {}
for _k, _v in _lr_action_items.items():
   for _x,_y in zip(_v[0],_v[1]):
      if not _x in _lr_action:  _lr_action[_x] = {}
      _lr_action[_x][_k] = _y
del _lr_action_items

_lr_goto_items = {'expr':([0,],[1,]),'entity':([0,20,21,30,32,34,44,],[2,40,47,52,55,56,59,]),'root':([0,],[3,]),'entityOpen':([0,20,21,30,32,34,44,],[6,6,6,6,6,6,6,]),'entityAnchor':([0,20,21,30,32,34,44,],[7,7,7,7,7,7,7,]),'entityFeature':([0,20,21,30,32,34,44,],[8,8,8,8,8,8,8,]),'feature':([0,13,24,27,29,],[9,35,48,50,51,]),'function':([0,4,13,24,27,29,43,],[10,19,10,10,10,10,19,]),'functionOpen':([0,4,13,24,27,29,43,],[11,11,11,11,11,11,11,]),'functionArgument':([0,4,13,24,27,29,43,],[12,12,12,12,12,12,12,]),'anchor':([6,59,],[23,62,]),'entityAny':([20,30,],[41,53,]),'restriction':([20,21,30,],[42,46,54,]),}

_lr_goto = {}
for _k, _v in _lr_goto_items.items():
   for _x, _y in zip(_v[0], _v[1]):
       if not _x in _lr_goto: _lr_goto[_x] = {}
       _lr_goto[_x][_k] = _y
del _lr_goto_items
_lr_productions = [
  ("S' -> expr","S'",1,None,None,None),
  ('expr -> entity','expr',1,'p_expr','parser.py',150),
  ('expr -> root','expr',1,'p_expr','parser.py',151),
  ('root -> feature','root',1,'p_root','parser.py',156),
  ('root -> root COMMA feature','root',3,'p_root','parser.py',157),
  ('entityAny -> LBRACE RBRACE','entityAny',2,'p_entity_any','parser.py',166),
  ('entity -> LBRACE NUMBER RBRACE','entity',3,'p_entity_number','parser.py',170),
  ('entity -> LBRACE COINDEX RBRACE','entity',3,'p_entity_coindex','parser.py',174),
  ('entity -> LBRACE QUOTE TEXT QUOTE RBRACE','entity',5,'p_entity_name','parser.py',178),
  ('entity -> LBRACE TILDE RBRACE','entity',3,'p_entity_tilde','parser.py',182),
  ('entityOpen -> LBRACE TEXT','entityOpen',2,'p_entity_normal_open','parser.py',186),
  ('entityOpen -> LBRACE function','entityOpen',2,'p_entity_function_open','parser.py',190),
  ('entityAnchor -> entityOpen anchor','entityAnchor',2,'p_entity_anchor','parser.py',194),
  ('entityFeature -> entityOpen COLON feature','entityFeature',3,'p_entity_feature0','parser.py',199),
  ('entityFeature -> entityAnchor COLON feature','entityFeature',3,'p_entity_feature0','parser.py',200),
  ('entityFeature -> entityFeature COMMA feature','entityFeature',3,'p_entity_feature','parser.py',205),
  ('entity -> entityOpen RBRACE','entity',2,'p_entity_close','parser.py',210),
  ('entity -> entityAnchor RBRACE','entity',2,'p_entity_close','parser.py',211),
  ('entity -> entityFeature RBRACE','entity',2,'p_entity_close','parser.py',212),
  ('feature -> TEXT EQUAL entity','feature',3,'p_feature','parser.py',217),
  ('feature -> TEXT EQUAL entityAny','feature',3,'p_feature','parser.py',218),
  ('feature -> TEXT EQUAL restriction','feature',3,'p_feature','parser.py',219),
  ('feature -> function EQUAL entity','feature',3,'p_function_feature','parser.py',223),
  ('feature -> function EQUAL entityAny','feature',3,'p_function_feature','parser.py',224),
  ('feature -> function EQUAL restriction','feature',3,'p_function_feature','parser.py',225),
  ('function -> TEXT LPAREN RPAREN','function',3,'p_function_any','parser.py',230),
  ('function -> TEXT LPAREN restriction RPAREN','function',4,'p_function_restriction','parser.py',234),
  ('functionOpen -> TEXT LPAREN entity','functionOpen',3,'p_function_open','parser.py',238),
  ('functionArgument -> functionOpen COMMA entity','functionArgument',3,'p_function_argument','parser.py',242),
  ('functionArgument -> functionArgument COMMA entity','functionArgument',3,'p_function_argument','parser.py',243),
  ('function -> functionOpen RPAREN','function',2,'p_function_close','parser.py',248),
  ('function -> functionArgument RPAREN','function',2,'p_function_close','parser.py',249),
  ('restriction -> SLASH entity','restriction',2,'p_restriction','parser.py',254),
  ('restriction -> SLASH entity anchor','restriction',3,'p_restriction_anchor','parser.py',258),
  ('anchor -> ULINE COINDEX','anchor',2,'p_anchor','parser.py',263),
]
