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

_lr_method = 'LALR'

_lr_signature = 'leftORleftANDAND CONTAINS EQ HAS IDENTIFIER_BOOL IDENTIFIER_IP IDENTIFIER_LIST IDENTIFIER_NUM IDENTIFIER_STR IN LPAREN NEQ NOT_CONTAINS NOT_HAS NOT_IN OR RPAREN VALUE_BOOL VALUE_IP VALUE_LIST_IP_CIDR VALUE_LIST_NUM VALUE_LIST_STR VALUE_NUM VALUE_STRexpression : IDENTIFIER_STR EQ VALUE_STR\n    | IDENTIFIER_STR NEQ VALUE_STR\n    | IDENTIFIER_STR CONTAINS VALUE_STR\n    | IDENTIFIER_STR NOT_CONTAINS VALUE_STR\n    | IDENTIFIER_STR IN VALUE_LIST_STR\n    | IDENTIFIER_STR NOT_IN VALUE_LIST_STR\n    | IDENTIFIER_LIST HAS VALUE_STR\n    | IDENTIFIER_LIST NOT_HAS VALUE_STR\n    | IDENTIFIER_IP EQ VALUE_IP\n    | IDENTIFIER_IP NEQ VALUE_IP\n    | IDENTIFIER_IP IN VALUE_LIST_IP_CIDR\n    | IDENTIFIER_IP NOT_IN VALUE_LIST_IP_CIDR\n    | IDENTIFIER_NUM EQ VALUE_NUM\n    | IDENTIFIER_NUM NEQ VALUE_NUM\n    | IDENTIFIER_NUM IN VALUE_LIST_NUM\n    | IDENTIFIER_NUM NOT_IN VALUE_LIST_NUM\n    | IDENTIFIER_BOOL EQ VALUE_BOOLexpression : expression AND expression\n    | expression OR expressionexpression : LPAREN expression RPAREN'
    
_lr_action_items = {'IDENTIFIER_STR':([0,7,8,9,],[2,2,2,2,]),'IDENTIFIER_LIST':([0,7,8,9,],[3,3,3,3,]),'IDENTIFIER_IP':([0,7,8,9,],[4,4,4,4,]),'IDENTIFIER_NUM':([0,7,8,9,],[5,5,5,5,]),'IDENTIFIER_BOOL':([0,7,8,9,],[6,6,6,6,]),'LPAREN':([0,7,8,9,],[7,7,7,7,]),'$end':([1,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[0,-18,-19,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-20,]),'AND':([1,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[8,8,-18,8,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-20,]),'OR':([1,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[9,9,-18,-19,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-20,]),'EQ':([2,4,5,6,],[10,18,22,26,]),'NEQ':([2,4,5,],[11,19,23,]),'CONTAINS':([2,],[12,]),'NOT_CONTAINS':([2,],[13,]),'IN':([2,4,5,],[14,20,24,]),'NOT_IN':([2,4,5,],[15,21,25,]),'HAS':([3,],[16,]),'NOT_HAS':([3,],[17,]),'VALUE_STR':([10,11,12,13,16,17,],[30,31,32,33,36,37,]),'VALUE_LIST_STR':([14,15,],[34,35,]),'VALUE_IP':([18,19,],[38,39,]),'VALUE_LIST_IP_CIDR':([20,21,],[40,41,]),'VALUE_NUM':([22,23,],[42,43,]),'VALUE_LIST_NUM':([24,25,],[44,45,]),'VALUE_BOOL':([26,],[46,]),'RPAREN':([27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,],[47,-18,-19,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-20,]),}

_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 = {'expression':([0,7,8,9,],[1,27,28,29,]),}

_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' -> expression","S'",1,None,None,None),
  ('expression -> IDENTIFIER_STR EQ VALUE_STR','expression',3,'p_expression_unit','parser.py',126),
  ('expression -> IDENTIFIER_STR NEQ VALUE_STR','expression',3,'p_expression_unit','parser.py',127),
  ('expression -> IDENTIFIER_STR CONTAINS VALUE_STR','expression',3,'p_expression_unit','parser.py',128),
  ('expression -> IDENTIFIER_STR NOT_CONTAINS VALUE_STR','expression',3,'p_expression_unit','parser.py',129),
  ('expression -> IDENTIFIER_STR IN VALUE_LIST_STR','expression',3,'p_expression_unit','parser.py',130),
  ('expression -> IDENTIFIER_STR NOT_IN VALUE_LIST_STR','expression',3,'p_expression_unit','parser.py',131),
  ('expression -> IDENTIFIER_LIST HAS VALUE_STR','expression',3,'p_expression_unit','parser.py',132),
  ('expression -> IDENTIFIER_LIST NOT_HAS VALUE_STR','expression',3,'p_expression_unit','parser.py',133),
  ('expression -> IDENTIFIER_IP EQ VALUE_IP','expression',3,'p_expression_unit','parser.py',134),
  ('expression -> IDENTIFIER_IP NEQ VALUE_IP','expression',3,'p_expression_unit','parser.py',135),
  ('expression -> IDENTIFIER_IP IN VALUE_LIST_IP_CIDR','expression',3,'p_expression_unit','parser.py',136),
  ('expression -> IDENTIFIER_IP NOT_IN VALUE_LIST_IP_CIDR','expression',3,'p_expression_unit','parser.py',137),
  ('expression -> IDENTIFIER_NUM EQ VALUE_NUM','expression',3,'p_expression_unit','parser.py',138),
  ('expression -> IDENTIFIER_NUM NEQ VALUE_NUM','expression',3,'p_expression_unit','parser.py',139),
  ('expression -> IDENTIFIER_NUM IN VALUE_LIST_NUM','expression',3,'p_expression_unit','parser.py',140),
  ('expression -> IDENTIFIER_NUM NOT_IN VALUE_LIST_NUM','expression',3,'p_expression_unit','parser.py',141),
  ('expression -> IDENTIFIER_BOOL EQ VALUE_BOOL','expression',3,'p_expression_unit','parser.py',142),
  ('expression -> expression AND expression','expression',3,'p_expression_binop','parser.py',159),
  ('expression -> expression OR expression','expression',3,'p_expression_binop','parser.py',160),
  ('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','parser.py',167),
]
