# Licensed under a 3-clause BSD style license - see LICENSE.rst
from __future__ import (absolute_import, division, print_function, unicode_literals)


# This file is automatically generated. Do not edit.
_tabversion = '3.8'

_lr_method = 'LALR'

_lr_signature = '6AD6E7286443B59D7DF329E6378BFC6B'
    
_lr_action_items = {'UINT':([0,2,7,9,18,22,23,28,31,32,35,37,40,42,59,60,63,],[-38,19,-20,33,-21,39,-29,39,-23,39,39,-22,-38,-37,39,39,66,]),'WHITESPACE':([0,3,4,6,7,8,12,13,15,17,18,19,20,21,25,29,36,39,41,43,44,46,47,48,49,51,52,53,54,56,61,62,64,65,67,],[1,-30,24,29,31,-16,1,-17,-6,-10,37,-40,-41,1,45,1,-7,-32,-33,-31,57,-8,-9,-19,58,-15,-12,-18,-11,1,-34,-35,-14,-13,-36,]),'CLOSE_PAREN':([3,4,15,17,19,20,33,34,36,38,39,41,43,46,47,52,54,55,56,61,62,64,65,66,67,],[-30,-5,-6,-10,-40,-41,-39,52,-7,54,-32,-33,-31,-8,-9,-12,-11,61,62,-34,-35,-14,-13,67,-36,]),'OPEN_PAREN':([0,3,6,7,8,12,13,16,18,19,20,21,22,23,24,25,26,27,28,29,31,32,35,37,39,41,44,45,48,49,51,53,57,58,59,60,61,62,67,],[12,21,12,-20,-16,12,-17,12,-21,-40,-41,12,40,-29,-24,-25,12,12,40,12,-23,40,40,-22,-32,-33,-26,-28,-19,-20,-15,-18,-27,-22,40,40,-34,-35,-36,]),'UNIT':([0,6,7,8,12,13,16,18,19,20,21,24,25,26,27,29,31,37,39,41,44,45,48,49,51,53,57,58,61,62,67,],[3,3,-20,-16,3,-17,3,-21,-40,-41,3,-24,-25,3,3,3,-23,-22,-32,-33,-26,-28,-19,-20,-15,-18,-27,-22,-34,-35,-36,]),'UFLOAT':([0,2,9,22,23,28,32,35,40,42,59,60,],[-38,20,-37,-38,-29,-38,-38,-38,-38,-37,-38,-38,]),'SIGN':([0,22,23,28,32,35,40,59,60,],[9,42,-29,42,42,42,9,42,42,]),'DIVISION':([0,1,3,4,6,8,12,13,15,17,19,20,21,24,29,36,39,41,43,46,47,48,51,52,53,54,56,61,62,64,65,67,],[7,18,-30,7,7,-16,7,-17,-6,-10,-40,-41,7,18,49,-7,-32,-33,-31,-8,-9,-19,-15,-12,-18,-11,7,-34,-35,-14,-13,-36,]),'$end':([3,4,10,11,14,15,17,19,20,30,36,39,41,43,46,47,50,52,54,61,62,64,65,67,],[-30,-5,-1,-2,0,-6,-10,-40,-41,-3,-7,-32,-33,-31,-8,-9,-4,-12,-11,-34,-35,-14,-13,-36,]),'STARSTAR':([3,5,8,13,19,20,33,52,54,],[23,23,23,23,-40,-41,-39,23,23,]),'LIT10':([0,],[8,]),'STAR':([3,4,15,17,19,20,24,36,39,41,43,46,47,52,54,61,62,64,65,67,],[-30,25,-6,-10,-40,-41,44,-7,-32,-33,-31,-8,-9,-12,-11,-34,-35,-14,-13,-36,]),'UNKNOWN':([0,],[10,]),}

_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 = {'sign':([0,22,28,32,35,40,59,60,],[2,2,2,2,2,2,2,2,]),'signed_float':([0,22,28,32,35,40,59,60,],[13,41,41,41,41,56,41,41,]),'numeric_power':([22,28,32,35,59,60,],[43,48,51,53,64,65,]),'product_of_units':([0,6,12,21,29,],[4,4,4,4,4,]),'signed_int':([0,40,],[5,55,]),'scale_factor':([0,],[6,]),'product':([4,],[26,]),'main':([0,],[14,]),'power':([3,5,8,13,52,54,],[22,28,32,35,59,60,]),'unit_expression':([0,6,12,16,21,26,27,29,],[15,15,15,36,15,46,47,15,]),'division':([0,4,6,12,21,29,56,],[16,27,16,16,16,16,63,]),'unit':([0,6,12,16,21,26,27,29,],[17,17,17,17,17,17,17,17,]),'complete_expression':([0,6,12,21,29,],[11,30,34,38,50,]),}

_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' -> main","S'",1,None,None,None),
  ('main -> UNKNOWN','main',1,'p_main','ogip.py',188),
  ('main -> complete_expression','main',1,'p_main','ogip.py',189),
  ('main -> scale_factor complete_expression','main',2,'p_main','ogip.py',190),
  ('main -> scale_factor WHITESPACE complete_expression','main',3,'p_main','ogip.py',191),
  ('complete_expression -> product_of_units','complete_expression',1,'p_complete_expression','ogip.py',202),
  ('product_of_units -> unit_expression','product_of_units',1,'p_product_of_units','ogip.py',208),
  ('product_of_units -> division unit_expression','product_of_units',2,'p_product_of_units','ogip.py',209),
  ('product_of_units -> product_of_units product unit_expression','product_of_units',3,'p_product_of_units','ogip.py',210),
  ('product_of_units -> product_of_units division unit_expression','product_of_units',3,'p_product_of_units','ogip.py',211),
  ('unit_expression -> unit','unit_expression',1,'p_unit_expression','ogip.py',225),
  ('unit_expression -> UNIT OPEN_PAREN complete_expression CLOSE_PAREN','unit_expression',4,'p_unit_expression','ogip.py',226),
  ('unit_expression -> OPEN_PAREN complete_expression CLOSE_PAREN','unit_expression',3,'p_unit_expression','ogip.py',227),
  ('unit_expression -> UNIT OPEN_PAREN complete_expression CLOSE_PAREN power numeric_power','unit_expression',6,'p_unit_expression','ogip.py',228),
  ('unit_expression -> OPEN_PAREN complete_expression CLOSE_PAREN power numeric_power','unit_expression',5,'p_unit_expression','ogip.py',229),
  ('scale_factor -> LIT10 power numeric_power','scale_factor',3,'p_scale_factor','ogip.py',263),
  ('scale_factor -> LIT10','scale_factor',1,'p_scale_factor','ogip.py',264),
  ('scale_factor -> signed_float','scale_factor',1,'p_scale_factor','ogip.py',265),
  ('scale_factor -> signed_float power numeric_power','scale_factor',3,'p_scale_factor','ogip.py',266),
  ('scale_factor -> signed_int power numeric_power','scale_factor',3,'p_scale_factor','ogip.py',267),
  ('division -> DIVISION','division',1,'p_division','ogip.py',282),
  ('division -> WHITESPACE DIVISION','division',2,'p_division','ogip.py',283),
  ('division -> WHITESPACE DIVISION WHITESPACE','division',3,'p_division','ogip.py',284),
  ('division -> DIVISION WHITESPACE','division',2,'p_division','ogip.py',285),
  ('product -> WHITESPACE','product',1,'p_product','ogip.py',291),
  ('product -> STAR','product',1,'p_product','ogip.py',292),
  ('product -> WHITESPACE STAR','product',2,'p_product','ogip.py',293),
  ('product -> WHITESPACE STAR WHITESPACE','product',3,'p_product','ogip.py',294),
  ('product -> STAR WHITESPACE','product',2,'p_product','ogip.py',295),
  ('power -> STARSTAR','power',1,'p_power','ogip.py',301),
  ('unit -> UNIT','unit',1,'p_unit','ogip.py',307),
  ('unit -> UNIT power numeric_power','unit',3,'p_unit','ogip.py',308),
  ('numeric_power -> UINT','numeric_power',1,'p_numeric_power','ogip.py',317),
  ('numeric_power -> signed_float','numeric_power',1,'p_numeric_power','ogip.py',318),
  ('numeric_power -> OPEN_PAREN signed_int CLOSE_PAREN','numeric_power',3,'p_numeric_power','ogip.py',319),
  ('numeric_power -> OPEN_PAREN signed_float CLOSE_PAREN','numeric_power',3,'p_numeric_power','ogip.py',320),
  ('numeric_power -> OPEN_PAREN signed_float division UINT CLOSE_PAREN','numeric_power',5,'p_numeric_power','ogip.py',321),
  ('sign -> SIGN','sign',1,'p_sign','ogip.py',332),
  ('sign -> <empty>','sign',0,'p_sign','ogip.py',333),
  ('signed_int -> SIGN UINT','signed_int',2,'p_signed_int','ogip.py',342),
  ('signed_float -> sign UINT','signed_float',2,'p_signed_float','ogip.py',348),
  ('signed_float -> sign UFLOAT','signed_float',2,'p_signed_float','ogip.py',349),
]
