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

_lr_method = "LALR"

_lr_signature = "leftRETRYPOINTERPPOINTERPARALLELCOMMENT DIRECTIVE LPAREN NUMBER PARALLEL POINTER PPOINTER RETRY RPAREN SEPERATOR TASKNAME\n    expression :  expression POINTER expression\n                | expression PPOINTER expression\n                | expression PARALLEL expression\n                | descriptor POINTER expression\n                | descriptor PPOINTER expression\n                | factor RETRY task\n                | task RETRY factor\n    \n    expression : term\n    \n    term : task\n    \n    descriptor : NUMBER\n    \n    factor : NUMBER\n    \n    task : TASKNAME\n    \n    task_group : expression SEPERATOR expression\n                | task_group SEPERATOR expression\n    \n    task :  task LPAREN task_group RPAREN\n    "

_lr_action_items = {
    "NUMBER": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            14,
            15,
            27,
            28,
        ],
        [
            6,
            6,
            6,
            6,
            6,
            6,
            23,
            6,
            6,
            6,
        ],
    ),
    "TASKNAME": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            13,
            15,
            27,
            28,
        ],
        [
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
            7,
        ],
    ),
    "$end": (
        [
            1,
            4,
            5,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            26,
        ],
        [
            0,
            -9,
            -8,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            -15,
        ],
    ),
    "POINTER": (
        [
            1,
            2,
            4,
            5,
            6,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            29,
            30,
        ],
        [
            8,
            11,
            -9,
            -8,
            -10,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            8,
            -15,
            8,
            8,
        ],
    ),
    "PPOINTER": (
        [
            1,
            2,
            4,
            5,
            6,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            29,
            30,
        ],
        [
            9,
            12,
            -9,
            -8,
            -10,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            9,
            -15,
            9,
            9,
        ],
    ),
    "PARALLEL": (
        [
            1,
            4,
            5,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            25,
            26,
            29,
            30,
        ],
        [
            10,
            -9,
            -8,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            10,
            -15,
            10,
            10,
        ],
    ),
    "RETRY": (
        [
            3,
            4,
            6,
            7,
            26,
        ],
        [
            13,
            14,
            -11,
            -12,
            -15,
        ],
    ),
    "LPAREN": (
        [
            4,
            7,
            21,
            26,
        ],
        [
            15,
            -12,
            15,
            -15,
        ],
    ),
    "SEPERATOR": (
        [
            4,
            5,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            24,
            25,
            26,
            29,
            30,
        ],
        [
            -9,
            -8,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            27,
            28,
            -15,
            -14,
            -13,
        ],
    ),
    "RPAREN": (
        [
            4,
            5,
            7,
            16,
            17,
            18,
            19,
            20,
            21,
            22,
            23,
            24,
            26,
            29,
            30,
        ],
        [
            -9,
            -8,
            -12,
            -1,
            -2,
            -3,
            -4,
            -5,
            -6,
            -7,
            -11,
            26,
            -15,
            -14,
            -13,
        ],
    ),
}

_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,
            8,
            9,
            10,
            11,
            12,
            15,
            27,
            28,
        ],
        [
            1,
            16,
            17,
            18,
            19,
            20,
            25,
            29,
            30,
        ],
    ),
    "descriptor": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            15,
            27,
            28,
        ],
        [
            2,
            2,
            2,
            2,
            2,
            2,
            2,
            2,
            2,
        ],
    ),
    "factor": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            14,
            15,
            27,
            28,
        ],
        [
            3,
            3,
            3,
            3,
            3,
            3,
            22,
            3,
            3,
            3,
        ],
    ),
    "task": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            13,
            15,
            27,
            28,
        ],
        [
            4,
            4,
            4,
            4,
            4,
            4,
            21,
            4,
            4,
            4,
        ],
    ),
    "term": (
        [
            0,
            8,
            9,
            10,
            11,
            12,
            15,
            27,
            28,
        ],
        [
            5,
            5,
            5,
            5,
            5,
            5,
            5,
            5,
            5,
        ],
    ),
    "task_group": (
        [
            15,
        ],
        [
            24,
        ],
    ),
}

_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 -> expression POINTER expression",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        16,
    ),
    (
        "expression -> expression PPOINTER expression",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        17,
    ),
    (
        "expression -> expression PARALLEL expression",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        18,
    ),
    (
        "expression -> descriptor POINTER expression",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        19,
    ),
    (
        "expression -> descriptor PPOINTER expression",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        20,
    ),
    (
        "expression -> factor RETRY task",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        21,
    ),
    (
        "expression -> task RETRY factor",
        "expression",
        3,
        "p_expression",
        "grammar.py",
        22,
    ),
    ("expression -> term", "expression", 1, "p_expression_term", "grammar.py", 30),
    ("term -> task", "term", 1, "p_task", "grammar.py", 37),
    ("descriptor -> NUMBER", "descriptor", 1, "p_descriptor", "grammar.py", 44),
    ("factor -> NUMBER", "factor", 1, "p_factor", "grammar.py", 60),
    ("task -> TASKNAME", "task", 1, "p_task_taskname", "grammar.py", 75),
    (
        "task_group -> expression SEPERATOR expression",
        "task_group",
        3,
        "p_task_group",
        "grammar.py",
        83,
    ),
    (
        "task_group -> task_group SEPERATOR expression",
        "task_group",
        3,
        "p_task_group",
        "grammar.py",
        84,
    ),
    (
        "task -> task LPAREN task_group RPAREN",
        "task",
        4,
        "p_task_conditional_statement",
        "grammar.py",
        91,
    ),
]
