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

_lr_method = 'LALR'

_lr_signature = 'AND COMMA EQ FIELD ISLATESTVERSION LPAREN NE NULL OR RPAREN STRING SUBSTRINGOF TOLOWERexpression : LPAREN expression RPARENsubstringof : SUBSTRINGOF LPAREN STRING COMMA expression RPARENtolower : TOLOWER LPAREN FIELD RPARENexpression : FIELDexpression : expression OR expression\n| expression AND expression\n| expression NE expression\n| expression EQ expressionexpression : STRINGexpression : NULL\n| substringof\n| tolower\n| ISLATESTVERSION'

_lr_action_items = {
    'LPAREN': ([
        0,
        2,
        9,
        10,
        11,
        12,
        13,
        14,
        25,
    ], [
        2,
        2,
        16,
        17,
        2,
        2,
        2,
        2,
        2,
    ]),
    'FIELD': ([
        0,
        2,
        11,
        12,
        13,
        14,
        17,
        25,
    ], [
        3,
        3,
        3,
        3,
        3,
        3,
        24,
        3,
    ]),
    'STRING': ([
        0,
        2,
        11,
        12,
        13,
        14,
        16,
        25,
    ], [
        4,
        4,
        4,
        4,
        4,
        4,
        23,
        4,
    ]),
    'NULL': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        5,
        5,
        5,
        5,
        5,
        5,
        5,
    ]),
    'ISLATESTVERSION': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        8,
        8,
        8,
        8,
        8,
        8,
        8,
    ]),
    'SUBSTRINGOF': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        9,
        9,
        9,
        9,
        9,
        9,
        9,
    ]),
    'TOLOWER': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        10,
        10,
        10,
        10,
        10,
        10,
        10,
    ]),
    '$end': ([
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        18,
        19,
        20,
        21,
        22,
        26,
        28,
    ], [
        0,
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        -5,
        -6,
        -7,
        -8,
        -1,
        -3,
        -2,
    ]),
    'OR': ([
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        15,
        18,
        19,
        20,
        21,
        22,
        26,
        27,
        28,
    ], [
        11,
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        11,
        11,
        11,
        11,
        11,
        -1,
        -3,
        11,
        -2,
    ]),
    'AND': ([
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        15,
        18,
        19,
        20,
        21,
        22,
        26,
        27,
        28,
    ], [
        12,
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        12,
        12,
        12,
        12,
        12,
        -1,
        -3,
        12,
        -2,
    ]),
    'NE': ([
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        15,
        18,
        19,
        20,
        21,
        22,
        26,
        27,
        28,
    ], [
        13,
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        13,
        13,
        13,
        13,
        13,
        -1,
        -3,
        13,
        -2,
    ]),
    'EQ': ([
        1,
        3,
        4,
        5,
        6,
        7,
        8,
        15,
        18,
        19,
        20,
        21,
        22,
        26,
        27,
        28,
    ], [
        14,
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        14,
        14,
        14,
        14,
        14,
        -1,
        -3,
        14,
        -2,
    ]),
    'RPAREN': ([
        3,
        4,
        5,
        6,
        7,
        8,
        15,
        18,
        19,
        20,
        21,
        22,
        24,
        26,
        27,
        28,
    ], [
        -4,
        -9,
        -10,
        -11,
        -12,
        -13,
        22,
        -5,
        -6,
        -7,
        -8,
        -1,
        26,
        -3,
        28,
        -2,
    ]),
    'COMMA': ([
        23,
    ], [
        25,
    ]),
}

_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,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        1,
        15,
        18,
        19,
        20,
        21,
        27,
    ]),
    'substringof': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        6,
        6,
        6,
        6,
        6,
        6,
        6,
    ]),
    'tolower': ([
        0,
        2,
        11,
        12,
        13,
        14,
        25,
    ], [
        7,
        7,
        7,
        7,
        7,
        7,
        7,
    ]),
}

_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 -> LPAREN expression RPAREN', 'expression', 3, 'p_expression_expr',
     'filteryacc.py', 27),
    ('substringof -> SUBSTRINGOF LPAREN STRING COMMA expression RPAREN', 'substringof', 6,
     'p_substringof', 'filteryacc.py', 33),
    ('tolower -> TOLOWER LPAREN FIELD RPAREN', 'tolower', 4, 'p_tolower', 'filteryacc.py', 47),
    ('expression -> FIELD', 'expression', 1, 'p_expression_field', 'filteryacc.py', 55),
    ('expression -> expression OR expression', 'expression', 3, 'p_expression_op', 'filteryacc.py',
     68),
    ('expression -> expression AND expression', 'expression', 3, 'p_expression_op', 'filteryacc.py',
     69),
    ('expression -> expression NE expression', 'expression', 3, 'p_expression_op', 'filteryacc.py',
     70),
    ('expression -> expression EQ expression', 'expression', 3, 'p_expression_op', 'filteryacc.py',
     71),
    ('expression -> STRING', 'expression', 1, 'p_expression_str', 'filteryacc.py', 95),
    ('expression -> NULL', 'expression', 1, 'p_expression', 'filteryacc.py', 108),
    ('expression -> substringof', 'expression', 1, 'p_expression', 'filteryacc.py', 109),
    ('expression -> tolower', 'expression', 1, 'p_expression', 'filteryacc.py', 110),
    ('expression -> ISLATESTVERSION', 'expression', 1, 'p_expression', 'filteryacc.py', 111),
]
