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

_lr_method = 'LALR'

_lr_signature = 'DEF ELSE FRONT_IS_CLEAR IF IFELSE INT LBRACE LEFT_IS_CLEAR LPAREN MARKERS_PRESENT MOVE NOT NO_MARKERS_PRESENT PICK_MARKER PUT_MARKER RBRACE REPEAT RIGHT_IS_CLEAR RPAREN RUN SEMI TURN_LEFT TURN_RIGHT WHILEprog : DEF RUN LPAREN RPAREN LBRACE stmt RBRACEstmt : while\n                | repeat\n                | stmt_stmt\n                | action\n                | if\n                | ifelse\n        stmt_stmt : stmt SEMI stmt\n        if : IF LPAREN cond RPAREN LBRACE stmt RBRACE\n        ifelse : IFELSE LPAREN cond RPAREN LBRACE stmt RBRACE ELSE LBRACE stmt RBRACE\n        while : WHILE LPAREN cond RPAREN LBRACE stmt RBRACE\n        repeat : REPEAT LPAREN cste RPAREN LBRACE stmt RBRACE\n        cond : cond_without_not\n                | NOT cond_without_not\n        cond_without_not : FRONT_IS_CLEAR LPAREN RPAREN\n                            | LEFT_IS_CLEAR LPAREN RPAREN\n                            | RIGHT_IS_CLEAR LPAREN RPAREN\n                            | MARKERS_PRESENT LPAREN RPAREN \n                            | NO_MARKERS_PRESENT LPAREN RPAREN\n        action : MOVE LPAREN RPAREN\n                  | TURN_RIGHT LPAREN RPAREN\n                  | TURN_LEFT LPAREN RPAREN\n                  | PICK_MARKER LPAREN RPAREN\n                  | PUT_MARKER LPAREN RPAREN\n        cste : INT\n        '
    
_lr_action_items = {'DEF':([0,],[2,]),'$end':([1,23,],[0,-1,]),'RUN':([2,],[3,]),'LPAREN':([3,14,15,16,17,18,19,20,21,22,38,39,40,41,42,],[4,25,26,27,28,29,30,31,32,33,54,55,56,57,58,]),'RPAREN':([4,27,28,29,30,31,35,36,43,44,50,51,53,54,55,56,57,58,63,64,65,66,67,],[5,45,46,47,48,49,52,-13,59,-25,60,61,-14,63,64,65,66,67,-15,-16,-17,-18,-19,]),'LBRACE':([5,52,59,60,61,79,],[6,62,68,69,70,80,]),'WHILE':([6,24,62,68,69,70,80,],[14,14,14,14,14,14,14,]),'REPEAT':([6,24,62,68,69,70,80,],[15,15,15,15,15,15,15,]),'MOVE':([6,24,62,68,69,70,80,],[16,16,16,16,16,16,16,]),'TURN_RIGHT':([6,24,62,68,69,70,80,],[17,17,17,17,17,17,17,]),'TURN_LEFT':([6,24,62,68,69,70,80,],[18,18,18,18,18,18,18,]),'PICK_MARKER':([6,24,62,68,69,70,80,],[19,19,19,19,19,19,19,]),'PUT_MARKER':([6,24,62,68,69,70,80,],[20,20,20,20,20,20,20,]),'IF':([6,24,62,68,69,70,80,],[21,21,21,21,21,21,21,]),'IFELSE':([6,24,62,68,69,70,80,],[22,22,22,22,22,22,22,]),'RBRACE':([7,8,9,10,11,12,13,34,45,46,47,48,49,71,72,73,74,75,76,77,81,82,],[23,-2,-3,-4,-5,-6,-7,-8,-20,-21,-22,-23,-24,75,76,77,78,-11,-12,-9,82,-10,]),'SEMI':([7,8,9,10,11,12,13,34,45,46,47,48,49,71,72,73,74,75,76,77,81,82,],[24,-2,-3,-4,-5,-6,-7,24,-20,-21,-22,-23,-24,24,24,24,24,-11,-12,-9,24,-10,]),'NOT':([25,32,33,],[37,37,37,]),'FRONT_IS_CLEAR':([25,32,33,37,],[38,38,38,38,]),'LEFT_IS_CLEAR':([25,32,33,37,],[39,39,39,39,]),'RIGHT_IS_CLEAR':([25,32,33,37,],[40,40,40,40,]),'MARKERS_PRESENT':([25,32,33,37,],[41,41,41,41,]),'NO_MARKERS_PRESENT':([25,32,33,37,],[42,42,42,42,]),'INT':([26,],[44,]),'ELSE':([78,],[79,]),}

_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 = {'prog':([0,],[1,]),'stmt':([6,24,62,68,69,70,80,],[7,34,71,72,73,74,81,]),'while':([6,24,62,68,69,70,80,],[8,8,8,8,8,8,8,]),'repeat':([6,24,62,68,69,70,80,],[9,9,9,9,9,9,9,]),'stmt_stmt':([6,24,62,68,69,70,80,],[10,10,10,10,10,10,10,]),'action':([6,24,62,68,69,70,80,],[11,11,11,11,11,11,11,]),'if':([6,24,62,68,69,70,80,],[12,12,12,12,12,12,12,]),'ifelse':([6,24,62,68,69,70,80,],[13,13,13,13,13,13,13,]),'cond':([25,32,33,],[35,50,51,]),'cond_without_not':([25,32,33,37,],[36,36,36,53,]),'cste':([26,],[43,]),}

_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' -> prog","S'",1,None,None,None),
  ('prog -> DEF RUN LPAREN RPAREN LBRACE stmt RBRACE','prog',7,'p_prog','parser_with_curly.py',88),
  ('stmt -> while','stmt',1,'p_stmt','parser_with_curly.py',93),
  ('stmt -> repeat','stmt',1,'p_stmt','parser_with_curly.py',94),
  ('stmt -> stmt_stmt','stmt',1,'p_stmt','parser_with_curly.py',95),
  ('stmt -> action','stmt',1,'p_stmt','parser_with_curly.py',96),
  ('stmt -> if','stmt',1,'p_stmt','parser_with_curly.py',97),
  ('stmt -> ifelse','stmt',1,'p_stmt','parser_with_curly.py',98),
  ('stmt_stmt -> stmt SEMI stmt','stmt_stmt',3,'p_stmt_stmt','parser_with_curly.py',104),
  ('if -> IF LPAREN cond RPAREN LBRACE stmt RBRACE','if',7,'p_if','parser_with_curly.py',112),
  ('ifelse -> IFELSE LPAREN cond RPAREN LBRACE stmt RBRACE ELSE LBRACE stmt RBRACE','ifelse',11,'p_ifelse','parser_with_curly.py',134),
  ('while -> WHILE LPAREN cond RPAREN LBRACE stmt RBRACE','while',7,'p_while','parser_with_curly.py',158),
  ('repeat -> REPEAT LPAREN cste RPAREN LBRACE stmt RBRACE','repeat',7,'p_repeat','parser_with_curly.py',178),
  ('cond -> cond_without_not','cond',1,'p_cond','parser_with_curly.py',198),
  ('cond -> NOT cond_without_not','cond',2,'p_cond','parser_with_curly.py',199),
  ('cond_without_not -> FRONT_IS_CLEAR LPAREN RPAREN','cond_without_not',3,'p_cond_without_not','parser_with_curly.py',211),
  ('cond_without_not -> LEFT_IS_CLEAR LPAREN RPAREN','cond_without_not',3,'p_cond_without_not','parser_with_curly.py',212),
  ('cond_without_not -> RIGHT_IS_CLEAR LPAREN RPAREN','cond_without_not',3,'p_cond_without_not','parser_with_curly.py',213),
  ('cond_without_not -> MARKERS_PRESENT LPAREN RPAREN','cond_without_not',3,'p_cond_without_not','parser_with_curly.py',214),
  ('cond_without_not -> NO_MARKERS_PRESENT LPAREN RPAREN','cond_without_not',3,'p_cond_without_not','parser_with_curly.py',215),
  ('action -> MOVE LPAREN RPAREN','action',3,'p_action','parser_with_curly.py',221),
  ('action -> TURN_RIGHT LPAREN RPAREN','action',3,'p_action','parser_with_curly.py',222),
  ('action -> TURN_LEFT LPAREN RPAREN','action',3,'p_action','parser_with_curly.py',223),
  ('action -> PICK_MARKER LPAREN RPAREN','action',3,'p_action','parser_with_curly.py',224),
  ('action -> PUT_MARKER LPAREN RPAREN','action',3,'p_action','parser_with_curly.py',225),
  ('cste -> INT','cste',1,'p_cste','parser_with_curly.py',233),
]
