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

_lr_method = 'LALR'

_lr_signature = 'CATEGORY FALSE FEEDBACK LBRACKET MNUMERICAL NUMERICAL OPTION QUESTION QUESTIONC QUESTIOND RANGE RBRACKET TRUEgift : question_set\n    question_set : question_set question\n    question_set : question\n    \n    question : CATEGORY\n    question : QUESTION answer\n    question : QUESTION missing QUESTIONC\n    question : QUESTIOND\n    \n    missing : LBRACKET options\n    missing : LBRACKET numerical\n    \n    answer : LBRACKET RBRACKET\n    answer : LBRACKET options RBRACKET\n    answer : LBRACKET truefalse RBRACKET\n    answer : LBRACKET numerical RBRACKET\n    answer : MNUMERICAL numerical RBRACKET\n    \n    options : options option\n    options : option\n    \n    option : OPTION FEEDBACK\n    option : OPTION\n    \n    truefalse : TRUE FEEDBACK\n    truefalse : FALSE FEEDBACK\n    truefalse : TRUE\n    truefalse : FALSE\n    \n    numerical : NUMERICAL FEEDBACK\n    numerical : RANGE FEEDBACK\n    numerical : NUMERICAL\n    numerical : RANGE\n    numerical : options\n    '
    
_lr_action_items = {'CATEGORY':([0,2,3,4,6,7,8,12,13,25,27,28,34,],[4,4,-3,-4,-7,-2,-5,-6,-10,-11,-12,-13,-14,]),'QUESTION':([0,2,3,4,6,7,8,12,13,25,27,28,34,],[5,5,-3,-4,-7,-2,-5,-6,-10,-11,-12,-13,-14,]),'QUESTIOND':([0,2,3,4,6,7,8,12,13,25,27,28,34,],[6,6,-3,-4,-7,-2,-5,-6,-10,-11,-12,-13,-14,]),'$end':([1,2,3,4,6,7,8,12,13,25,27,28,34,],[0,-1,-3,-4,-7,-2,-5,-6,-10,-11,-12,-13,-14,]),'LBRACKET':([5,],[10,]),'MNUMERICAL':([5,],[11,]),'QUESTIONC':([9,14,16,17,20,21,22,26,31,32,33,],[12,-8,-9,-16,-25,-26,-18,-15,-23,-24,-17,]),'RBRACKET':([10,14,15,16,17,18,19,20,21,22,23,24,26,29,30,31,32,33,],[13,25,27,28,-16,-21,-22,-25,-26,-18,34,-27,-15,-19,-20,-23,-24,-17,]),'TRUE':([10,],[18,]),'FALSE':([10,],[19,]),'NUMERICAL':([10,11,],[20,20,]),'RANGE':([10,11,],[21,21,]),'OPTION':([10,11,14,17,22,24,26,33,],[22,22,22,-16,-18,22,-15,-17,]),'FEEDBACK':([18,19,20,21,22,],[29,30,31,32,33,]),}

_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 = {'gift':([0,],[1,]),'question_set':([0,],[2,]),'question':([0,2,],[3,7,]),'answer':([5,],[8,]),'missing':([5,],[9,]),'options':([10,11,],[14,24,]),'truefalse':([10,],[15,]),'numerical':([10,11,],[16,23,]),'option':([10,11,14,24,],[17,17,26,26,]),}

_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' -> gift","S'",1,None,None,None),
  ('gift -> question_set','gift',1,'p_expression_gift','parser.py',69),
  ('question_set -> question_set question','question_set',2,'p_expression_question_set','parser.py',75),
  ('question_set -> question','question_set',1,'p_expression_question_set','parser.py',76),
  ('question -> CATEGORY','question',1,'p_expresion_question','parser.py',87),
  ('question -> QUESTION answer','question',2,'p_expresion_question','parser.py',88),
  ('question -> QUESTION missing QUESTIONC','question',3,'p_expresion_question','parser.py',89),
  ('question -> QUESTIOND','question',1,'p_expresion_question','parser.py',90),
  ('missing -> LBRACKET options','missing',2,'p_expression_missing','parser.py',110),
  ('missing -> LBRACKET numerical','missing',2,'p_expression_missing','parser.py',111),
  ('answer -> LBRACKET RBRACKET','answer',2,'p_expression_answer','parser.py',118),
  ('answer -> LBRACKET options RBRACKET','answer',3,'p_expression_answer','parser.py',119),
  ('answer -> LBRACKET truefalse RBRACKET','answer',3,'p_expression_answer','parser.py',120),
  ('answer -> LBRACKET numerical RBRACKET','answer',3,'p_expression_answer','parser.py',121),
  ('answer -> MNUMERICAL numerical RBRACKET','answer',3,'p_expression_answer','parser.py',122),
  ('options -> options option','options',2,'p_expression_options','parser.py',132),
  ('options -> option','options',1,'p_expression_options','parser.py',133),
  ('option -> OPTION FEEDBACK','option',2,'p_expression_option','parser.py',143),
  ('option -> OPTION','option',1,'p_expression_option','parser.py',144),
  ('truefalse -> TRUE FEEDBACK','truefalse',2,'p_expression_truefalse','parser.py',154),
  ('truefalse -> FALSE FEEDBACK','truefalse',2,'p_expression_truefalse','parser.py',155),
  ('truefalse -> TRUE','truefalse',1,'p_expression_truefalse','parser.py',156),
  ('truefalse -> FALSE','truefalse',1,'p_expression_truefalse','parser.py',157),
  ('numerical -> NUMERICAL FEEDBACK','numerical',2,'p_expression_numerical','parser.py',168),
  ('numerical -> RANGE FEEDBACK','numerical',2,'p_expression_numerical','parser.py',169),
  ('numerical -> NUMERICAL','numerical',1,'p_expression_numerical','parser.py',170),
  ('numerical -> RANGE','numerical',1,'p_expression_numerical','parser.py',171),
  ('numerical -> options','numerical',1,'p_expression_numerical','parser.py',172),
]
