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

_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,6,7,8,],[1,25,26,27,]),}

_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',103),
  ('expression -> IDENTIFIER_STR NEQ VALUE_STR','expression',3,'p_expression_unit','parser.py',104),
  ('expression -> IDENTIFIER_STR CONTAINS VALUE_STR','expression',3,'p_expression_unit','parser.py',105),
  ('expression -> IDENTIFIER_STR NOT_CONTAINS VALUE_STR','expression',3,'p_expression_unit','parser.py',106),
  ('expression -> IDENTIFIER_STR IN VALUE_LIST_STR','expression',3,'p_expression_unit','parser.py',107),
  ('expression -> IDENTIFIER_STR NOT_IN VALUE_LIST_STR','expression',3,'p_expression_unit','parser.py',108),
  ('expression -> IDENTIFIER_LIST HAS VALUE_STR','expression',3,'p_expression_unit','parser.py',109),
  ('expression -> IDENTIFIER_LIST NOT_HAS VALUE_STR','expression',3,'p_expression_unit','parser.py',110),
  ('expression -> IDENTIFIER_IP EQ VALUE_IP','expression',3,'p_expression_unit','parser.py',111),
  ('expression -> IDENTIFIER_IP NEQ VALUE_IP','expression',3,'p_expression_unit','parser.py',112),
  ('expression -> IDENTIFIER_IP IN VALUE_LIST_IP_CIDR','expression',3,'p_expression_unit','parser.py',113),
  ('expression -> IDENTIFIER_IP NOT_IN VALUE_LIST_IP_CIDR','expression',3,'p_expression_unit','parser.py',114),
  ('expression -> IDENTIFIER_NUM EQ VALUE_NUM','expression',3,'p_expression_unit','parser.py',115),
  ('expression -> IDENTIFIER_NUM NEQ VALUE_NUM','expression',3,'p_expression_unit','parser.py',116),
  ('expression -> IDENTIFIER_NUM IN VALUE_LIST_NUM','expression',3,'p_expression_unit','parser.py',117),
  ('expression -> IDENTIFIER_NUM NOT_IN VALUE_LIST_NUM','expression',3,'p_expression_unit','parser.py',118),
  ('expression -> expression AND expression','expression',3,'p_expression_binop','parser.py',132),
  ('expression -> expression OR expression','expression',3,'p_expression_binop','parser.py',133),
  ('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','parser.py',140),
]
