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

_lr_method = 'LALR'

_lr_signature = 'COINDEX COINDEX0 COLON COMMA EQUAL LBRACE LPAREN NUMBER QUOTE RBRACE RPAREN SLASH TEXT TILDE ULINEexpr : entity\n                | subjectsubject : feature\n                   | subject COMMA featureentity : LBRACE NUMBER RBRACEentity : LBRACE QUOTE TEXT QUOTE RBRACEentityOpen : LBRACE TEXTentityOpen : LBRACE functionentityAnchor : entityOpen anchorentityFeature : entityOpen   COLON feature\n                         | entityAnchor COLON featureentityFeature : entityFeature COMMA featureentity : entityOpen    RBRACE\n                  | entityAnchor  RBRACE\n                  | entityFeature RBRACEreference : LBRACE COINDEX RBRACEreference : LBRACE COINDEX0 RBRACEreference : LBRACE TILDE RBRACErestriction : SLASH entity\n                       | SLASH referencerestriction : SLASH entity anchor\n                       | SLASH reference anchorany : LBRACE RBRACEfeature : TEXT EQUAL entity\n                   | TEXT EQUAL reference\n                   | TEXT EQUAL restriction\n                   | TEXT EQUAL anyfeature : function EQUAL entity\n                   | function EQUAL reference\n                   | function EQUAL restriction\n                   | function EQUAL anyfunction : TEXT LPAREN RPARENfunction : TEXT LPAREN restriction RPARENfunctionOpen : TEXT LPAREN entity\n                        | TEXT LPAREN referencefunctionArgument : functionOpen     COMMA entity\n                            | functionOpen     COMMA reference\n                            | functionArgument COMMA entity\n                            | functionArgument COMMA referencefunction : functionOpen     RPAREN\n                    | functionArgument RPARENanchor : ULINE COINDEX'
    
_lr_action_items = {'LBRACE':([0,18,19,28,30,32,41,],[4,40,46,40,46,46,46,]),'TEXT':([0,4,13,15,22,25,27,40,46,],[5,16,5,35,5,5,5,16,16,]),'$end':([1,2,3,9,20,24,26,33,34,36,37,38,39,48,51,52,53,54,60,64,65,67,68,69,70,71,72,],[0,-1,-2,-3,-13,-14,-15,-4,-5,-24,-25,-26,-27,-42,-28,-29,-30,-31,-23,-19,-20,-6,-16,-17,-18,-21,-22,]),'COMMA':([3,8,9,11,12,20,24,26,33,34,36,37,38,39,44,45,47,48,49,50,51,52,53,54,55,56,57,58,60,64,65,67,68,69,70,71,72,],[13,27,-3,30,32,-13,-14,-15,-4,-5,-24,-25,-26,-27,-34,-35,-10,-42,-11,-12,-28,-29,-30,-31,-36,-37,-38,-39,-23,-19,-20,-6,-16,-17,-18,-21,-22,]),'NUMBER':([4,40,46,],[14,14,14,]),'QUOTE':([4,35,40,46,],[15,59,15,15,]),'EQUAL':([5,10,29,31,42,66,],[18,28,-40,-41,-32,-33,]),'LPAREN':([5,16,],[19,19,]),'RBRACE':([6,7,8,14,16,17,20,21,24,26,29,31,34,36,37,38,39,40,42,47,48,49,50,51,52,53,54,59,60,61,62,63,64,65,66,67,68,69,70,71,72,],[20,24,26,34,-7,-8,-13,-9,-14,-15,-40,-41,-5,-24,-25,-26,-27,60,-32,-10,-42,-11,-12,-28,-29,-30,-31,67,-23,68,69,70,-19,-20,-33,-6,-16,-17,-18,-21,-22,]),'COLON':([6,7,16,17,21,29,31,42,48,66,],[22,25,-7,-8,-9,-40,-41,-32,-42,-33,]),'ULINE':([6,16,17,20,24,26,29,31,34,42,64,65,66,67,68,69,70,],[23,-7,-8,-13,-14,-15,-40,-41,-5,-32,23,23,-33,-6,-16,-17,-18,]),'RPAREN':([11,12,19,20,24,26,34,43,44,45,48,55,56,57,58,64,65,67,68,69,70,71,72,],[29,31,42,-13,-14,-15,-5,66,-34,-35,-42,-36,-37,-38,-39,-19,-20,-6,-16,-17,-18,-21,-22,]),'SLASH':([18,19,28,],[41,41,41,]),'COINDEX':([23,40,46,],[48,61,61,]),'COINDEX0':([40,46,],[62,62,]),'TILDE':([40,46,],[63,63,]),}

_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,18,19,28,30,32,41,],[2,36,44,51,55,57,64,]),'subject':([0,],[3,]),'entityOpen':([0,18,19,28,30,32,41,],[6,6,6,6,6,6,6,]),'entityAnchor':([0,18,19,28,30,32,41,],[7,7,7,7,7,7,7,]),'entityFeature':([0,18,19,28,30,32,41,],[8,8,8,8,8,8,8,]),'feature':([0,13,22,25,27,],[9,33,47,49,50,]),'function':([0,4,13,22,25,27,40,46,],[10,17,10,10,10,10,17,17,]),'functionOpen':([0,4,13,22,25,27,40,46,],[11,11,11,11,11,11,11,11,]),'functionArgument':([0,4,13,22,25,27,40,46,],[12,12,12,12,12,12,12,12,]),'anchor':([6,64,65,],[21,71,72,]),'reference':([18,19,28,30,32,41,],[37,45,52,56,58,65,]),'restriction':([18,19,28,],[38,43,53,]),'any':([18,28,],[39,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',169),
  ('expr -> subject','expr',1,'p_expr','parser.py',170),
  ('subject -> feature','subject',1,'p_subject','parser.py',175),
  ('subject -> subject COMMA feature','subject',3,'p_subject','parser.py',176),
  ('entity -> LBRACE NUMBER RBRACE','entity',3,'p_entity_number','parser.py',185),
  ('entity -> LBRACE QUOTE TEXT QUOTE RBRACE','entity',5,'p_entity_name','parser.py',189),
  ('entityOpen -> LBRACE TEXT','entityOpen',2,'p_entity_normal_open','parser.py',193),
  ('entityOpen -> LBRACE function','entityOpen',2,'p_entity_function_open','parser.py',197),
  ('entityAnchor -> entityOpen anchor','entityAnchor',2,'p_entity_anchor','parser.py',201),
  ('entityFeature -> entityOpen COLON feature','entityFeature',3,'p_entity_feature0','parser.py',206),
  ('entityFeature -> entityAnchor COLON feature','entityFeature',3,'p_entity_feature0','parser.py',207),
  ('entityFeature -> entityFeature COMMA feature','entityFeature',3,'p_entity_feature','parser.py',212),
  ('entity -> entityOpen RBRACE','entity',2,'p_entity_close','parser.py',217),
  ('entity -> entityAnchor RBRACE','entity',2,'p_entity_close','parser.py',218),
  ('entity -> entityFeature RBRACE','entity',2,'p_entity_close','parser.py',219),
  ('reference -> LBRACE COINDEX RBRACE','reference',3,'p_reference_coindex','parser.py',224),
  ('reference -> LBRACE COINDEX0 RBRACE','reference',3,'p_reference_subject','parser.py',228),
  ('reference -> LBRACE TILDE RBRACE','reference',3,'p_reference_tilde','parser.py',232),
  ('restriction -> SLASH entity','restriction',2,'p_restriction','parser.py',237),
  ('restriction -> SLASH reference','restriction',2,'p_restriction','parser.py',238),
  ('restriction -> SLASH entity anchor','restriction',3,'p_restriction_anchor','parser.py',242),
  ('restriction -> SLASH reference anchor','restriction',3,'p_restriction_anchor','parser.py',243),
  ('any -> LBRACE RBRACE','any',2,'p_any','parser.py',247),
  ('feature -> TEXT EQUAL entity','feature',3,'p_feature','parser.py',252),
  ('feature -> TEXT EQUAL reference','feature',3,'p_feature','parser.py',253),
  ('feature -> TEXT EQUAL restriction','feature',3,'p_feature','parser.py',254),
  ('feature -> TEXT EQUAL any','feature',3,'p_feature','parser.py',255),
  ('feature -> function EQUAL entity','feature',3,'p_function_feature','parser.py',259),
  ('feature -> function EQUAL reference','feature',3,'p_function_feature','parser.py',260),
  ('feature -> function EQUAL restriction','feature',3,'p_function_feature','parser.py',261),
  ('feature -> function EQUAL any','feature',3,'p_function_feature','parser.py',262),
  ('function -> TEXT LPAREN RPAREN','function',3,'p_function_any','parser.py',267),
  ('function -> TEXT LPAREN restriction RPAREN','function',4,'p_function_restriction','parser.py',271),
  ('functionOpen -> TEXT LPAREN entity','functionOpen',3,'p_function_open','parser.py',275),
  ('functionOpen -> TEXT LPAREN reference','functionOpen',3,'p_function_open','parser.py',276),
  ('functionArgument -> functionOpen COMMA entity','functionArgument',3,'p_function_argument','parser.py',280),
  ('functionArgument -> functionOpen COMMA reference','functionArgument',3,'p_function_argument','parser.py',281),
  ('functionArgument -> functionArgument COMMA entity','functionArgument',3,'p_function_argument','parser.py',282),
  ('functionArgument -> functionArgument COMMA reference','functionArgument',3,'p_function_argument','parser.py',283),
  ('function -> functionOpen RPAREN','function',2,'p_function_close','parser.py',288),
  ('function -> functionArgument RPAREN','function',2,'p_function_close','parser.py',289),
  ('anchor -> ULINE COINDEX','anchor',2,'p_anchor','parser.py',294),
]
