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

_lr_method = 'LALR'

_lr_signature = 'rootB CNOT CP CZ FLOAT FSIM H ISWP M MEASURE NEWLINE QREG RX RXY RY RZ S SD SISWP SSWP SWP T TD X X2M X2P XY XY2M XY2P XYARB Y Y2M Y2P Z Z2M Z2P Z4M Z4Proot : programprogram : instruction NEWLINE program\n        | instruction\n        | NEWLINE program\n        |\n        instruction : MEASURE qlist\n        | M qlist\n        | B qlistqlist : QREG qlist\n        | QREG\n        instruction : XYARB QREG FLOAT FLOAT\n        | RXY QREG FLOAT FLOATinstruction : RX QREG FLOAT\n        | RY QREG FLOATinstruction : XY QREG FLOAT\n        | XY2P QREG FLOAT\n        | XY2M QREG FLOAT\n        | RZ QREG FLOATinstruction : X QREG\n        | X2P QREG\n        | X2M QREG\n        | Y QREG\n        | Y2P QREG\n        | Y2M QREG\n        | Z QREG\n        | Z2P QREG\n        | Z2M QREG\n        | Z4P QREG\n        | Z4M QREG\n        | S QREG\n        | SD QREG\n        | T QREG\n        | TD QREG\n        | H QREGinstruction : CZ QREG QREG\n        | CNOT QREG QREG\n        | SWP QREG QREG\n        | SSWP QREG QREG\n        | ISWP QREG QREG\n        | SISWP QREG QREGinstruction : CP QREG QREG FLOAT\n        | FSIM QREG QREG FLOAT'
    
_lr_action_items = {'NEWLINE':([0,3,4,40,42,43,44,45,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,79,82,83,84,85,86,87,88,89,90,91,92,93,96,97,98,99,],[4,40,4,4,-6,-10,-7,-8,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32,-33,-34,-9,-13,-14,-15,-16,-17,-18,-35,-36,-37,-38,-39,-40,-11,-12,-41,-42,]),'$end':([0,1,2,3,4,40,41,42,43,44,45,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,78,79,82,83,84,85,86,87,88,89,90,91,92,93,96,97,98,99,],[-5,0,-1,-3,-5,-5,-4,-6,-10,-7,-8,-19,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31,-32,-33,-34,-2,-9,-13,-14,-15,-16,-17,-18,-35,-36,-37,-38,-39,-40,-11,-12,-41,-42,]),'MEASURE':([0,4,40,],[5,5,5,]),'M':([0,4,40,],[6,6,6,]),'B':([0,4,40,],[7,7,7,]),'XYARB':([0,4,40,],[8,8,8,]),'RXY':([0,4,40,],[9,9,9,]),'RX':([0,4,40,],[10,10,10,]),'RY':([0,4,40,],[11,11,11,]),'XY':([0,4,40,],[12,12,12,]),'XY2P':([0,4,40,],[13,13,13,]),'XY2M':([0,4,40,],[14,14,14,]),'RZ':([0,4,40,],[15,15,15,]),'X':([0,4,40,],[16,16,16,]),'X2P':([0,4,40,],[17,17,17,]),'X2M':([0,4,40,],[18,18,18,]),'Y':([0,4,40,],[19,19,19,]),'Y2P':([0,4,40,],[20,20,20,]),'Y2M':([0,4,40,],[21,21,21,]),'Z':([0,4,40,],[22,22,22,]),'Z2P':([0,4,40,],[23,23,23,]),'Z2M':([0,4,40,],[24,24,24,]),'Z4P':([0,4,40,],[25,25,25,]),'Z4M':([0,4,40,],[26,26,26,]),'S':([0,4,40,],[27,27,27,]),'SD':([0,4,40,],[28,28,28,]),'T':([0,4,40,],[29,29,29,]),'TD':([0,4,40,],[30,30,30,]),'H':([0,4,40,],[31,31,31,]),'CZ':([0,4,40,],[32,32,32,]),'CNOT':([0,4,40,],[33,33,33,]),'SWP':([0,4,40,],[34,34,34,]),'SSWP':([0,4,40,],[35,35,35,]),'ISWP':([0,4,40,],[36,36,36,]),'SISWP':([0,4,40,],[37,37,37,]),'CP':([0,4,40,],[38,38,38,]),'FSIM':([0,4,40,],[39,39,39,]),'QREG':([5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,43,70,71,72,73,74,75,76,77,],[43,43,43,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,43,88,89,90,91,92,93,94,95,]),'FLOAT':([46,47,48,49,50,51,52,53,80,81,94,95,],[80,81,82,83,84,85,86,87,96,97,98,99,]),}

_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 = {'root':([0,],[1,]),'program':([0,4,40,],[2,41,78,]),'instruction':([0,4,40,],[3,3,3,]),'qlist':([5,6,7,43,],[42,44,45,79,]),}

_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' -> root","S'",1,None,None,None),
  ('root -> program','root',1,'p_root','QCIS_parser.py',59),
  ('program -> instruction NEWLINE program','program',3,'p_program','QCIS_parser.py',63),
  ('program -> instruction','program',1,'p_program','QCIS_parser.py',64),
  ('program -> NEWLINE program','program',2,'p_program','QCIS_parser.py',65),
  ('program -> <empty>','program',0,'p_program','QCIS_parser.py',66),
  ('instruction -> MEASURE qlist','instruction',2,'p_instruction_n_qubit','QCIS_parser.py',71),
  ('instruction -> M qlist','instruction',2,'p_instruction_n_qubit','QCIS_parser.py',72),
  ('instruction -> B qlist','instruction',2,'p_instruction_n_qubit','QCIS_parser.py',73),
  ('qlist -> QREG qlist','qlist',2,'p_qlist','QCIS_parser.py',78),
  ('qlist -> QREG','qlist',1,'p_qlist','QCIS_parser.py',79),
  ('instruction -> XYARB QREG FLOAT FLOAT','instruction',4,'p_instruction_1_qubit_2_param','QCIS_parser.py',89),
  ('instruction -> RXY QREG FLOAT FLOAT','instruction',4,'p_instruction_1_qubit_2_param','QCIS_parser.py',90),
  ('instruction -> RX QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_altitude','QCIS_parser.py',97),
  ('instruction -> RY QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_altitude','QCIS_parser.py',98),
  ('instruction -> XY QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_azimuth','QCIS_parser.py',105),
  ('instruction -> XY2P QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_azimuth','QCIS_parser.py',106),
  ('instruction -> XY2M QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_azimuth','QCIS_parser.py',107),
  ('instruction -> RZ QREG FLOAT','instruction',3,'p_instruction_1_qubit_1_azimuth','QCIS_parser.py',108),
  ('instruction -> X QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',115),
  ('instruction -> X2P QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',116),
  ('instruction -> X2M QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',117),
  ('instruction -> Y QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',118),
  ('instruction -> Y2P QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',119),
  ('instruction -> Y2M QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',120),
  ('instruction -> Z QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',121),
  ('instruction -> Z2P QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',122),
  ('instruction -> Z2M QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',123),
  ('instruction -> Z4P QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',124),
  ('instruction -> Z4M QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',125),
  ('instruction -> S QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',126),
  ('instruction -> SD QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',127),
  ('instruction -> T QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',128),
  ('instruction -> TD QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',129),
  ('instruction -> H QREG','instruction',2,'p_instruction_1_qubit_0_param','QCIS_parser.py',130),
  ('instruction -> CZ QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',135),
  ('instruction -> CNOT QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',136),
  ('instruction -> SWP QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',137),
  ('instruction -> SSWP QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',138),
  ('instruction -> ISWP QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',139),
  ('instruction -> SISWP QREG QREG','instruction',3,'p_instruction_2_qubit_0_param','QCIS_parser.py',140),
  ('instruction -> CP QREG QREG FLOAT','instruction',4,'p_instruction_2_qubit_1_param','QCIS_parser.py',147),
  ('instruction -> FSIM QREG QREG FLOAT','instruction',4,'p_instruction_2_qubit_1_param','QCIS_parser.py',148),
]
