102 lines
16 KiB
Python
102 lines
16 KiB
Python
|
|
# parsetab.py
|
|
# This file is automatically generated. Do not edit.
|
|
# pylint: disable=W,C,R
|
|
_tabversion = '3.10'
|
|
|
|
_lr_method = 'LALR'
|
|
|
|
_lr_signature = 'and closedBra closedParen coma div do doubleColon doubleEquals elif else end equals exit id if int integer less lessEquals minus more moreEquals mul not notEquals openBra openParen or parens plus print program rea read real string subroutine swap then\n programa : program id V F B end program\n \n V : V Tipo Dim doubleColon Rid\n |\n \n Rid : id\n | Rid coma id\n \n Tipo : integer\n | real\n \n Dim : openBra int closedBra\n | openBra int closedBra openBra int closedBra\n |\n \n F : F subroutine id B end subroutine\n |\n \n B : B S\n |\n \n S : Dimensional equals EA\n | id parens\n | read RDimensional\n | print RDimOrString\n | if Relif ElseOrEmpty end if\n | do id equals EA coma EA IntOrEmpty then B end do\n | do then B end do\n | swap Dimensional coma Dimensional\n | exit\n \n Dimensional : id DimensionsOrEmpty\n \n DimensionsOrEmpty : openParen EA ComaEAOrEmpty closedParen\n |\n \n ComaEAOrEmpty : coma EA\n |\n \n RDimensional : Dimensional\n | RDimensional coma Dimensional\n \n RDimOrString : DimOrString\n | RDimOrString coma DimOrString\n \n DimOrString : Dimensional\n | string\n \n Relif : openParen EL closedParen then B\n | Relif elif openParen EL closedParen then B\n \n ElseOrEmpty : else B\n |\n \n IntOrEmpty : coma int\n |\n \n EA : MultDiv\n | EA SumOrSub action_3 MultDiv action_4\n \n SumOrSub : plus\n | minus\n \n MultDiv : EAParens\n | MultDiv MDSymbols action_5 EAParens action_6\n \n MDSymbols : mul\n | div\n \n EAParens : EItem\n | openParen EA closedParen\n \n EL : AND\n | EL or AND\n \n AND : Equality\n | AND and Equality\n \n Equality : EItem EQSymbols EItem\n | openParen EL closedParen\n | not EL\n \n EItem : Dimensional action_1\n | int action_2\n | rea action_2\n \n EQSymbols : less\n | more\n | doubleEquals\n | notEquals\n | lessEquals\n | moreEquals\n action_1 :action_2 :action_3 :action_4 :action_5 :action_6 :'
|
|
|
|
_lr_action_items = {'program':([0,14,],[2,29,]),'$end':([1,29,],[0,-1,]),'id':([2,3,4,5,9,10,15,17,18,20,21,22,23,24,26,27,28,30,31,32,33,34,35,36,37,39,41,43,44,45,47,49,50,51,52,53,54,55,56,57,60,61,66,67,68,69,71,75,76,77,78,79,80,81,82,83,84,85,86,88,89,92,93,94,95,96,97,98,99,100,104,105,106,108,109,110,112,113,116,120,121,123,124,126,128,129,130,133,135,136,138,],[3,-3,-12,-14,13,23,-13,33,33,40,33,-23,-14,45,-16,-24,33,33,-17,-29,-26,-18,-31,-33,-34,33,-14,13,-2,-4,33,-41,-45,-49,-67,-68,-68,-15,33,33,-14,33,33,33,13,33,106,-69,33,-43,-44,-71,-47,-48,-58,-59,-60,-30,-32,33,13,33,33,33,-61,-62,-63,-64,-65,-66,-22,-11,-5,-50,-25,33,33,-19,-14,33,-21,-70,-72,13,-42,-46,-14,13,-14,13,-20,]),'integer':([3,4,44,45,106,],[-3,7,-2,-4,-5,]),'real':([3,4,44,45,106,],[-3,8,-2,-4,-5,]),'subroutine':([3,4,5,44,45,70,105,106,],[-3,-12,10,-2,-4,105,-11,-5,]),'end':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,38,41,43,44,45,49,50,51,52,53,54,55,58,60,68,82,83,84,85,86,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,14,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-38,-14,70,-2,-4,-41,-45,-49,-67,-68,-68,-15,87,-14,103,-58,-59,-60,-30,-32,-37,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,-35,-42,-46,-14,-36,-14,137,-20,]),'read':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,17,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,17,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,17,-58,-59,-60,-30,-32,17,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,17,-42,-46,-14,17,-14,17,-20,]),'print':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,18,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,18,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,18,-58,-59,-60,-30,-32,18,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,18,-42,-46,-14,18,-14,18,-20,]),'if':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,87,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,19,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,19,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,19,-58,-59,-60,-30,-32,113,19,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,19,-42,-46,-14,19,-14,19,-20,]),'do':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,89,103,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,137,138,],[-3,-12,-14,20,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,20,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,20,-58,-59,-60,-30,-32,20,121,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,20,-42,-46,-14,20,-14,20,138,-20,]),'swap':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,21,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,21,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,21,-58,-59,-60,-30,-32,21,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,21,-42,-46,-14,21,-14,21,-20,]),'exit':([3,4,5,9,15,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,68,82,83,84,85,86,89,104,105,106,108,109,113,116,121,123,124,126,128,129,130,133,135,136,138,],[-3,-12,-14,22,-13,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-14,22,-2,-4,-41,-45,-49,-67,-68,-68,-15,-14,22,-58,-59,-60,-30,-32,22,-22,-11,-5,-50,-25,-19,-14,-21,-70,-72,22,-42,-46,-14,22,-14,22,-20,]),'openBra':([6,7,8,46,],[12,-6,-7,72,]),'doubleColon':([6,7,8,11,46,122,],[-10,-6,-7,24,-8,-9,]),'int':([12,28,30,39,47,61,66,67,72,75,76,77,78,79,80,81,88,92,93,94,95,96,97,98,99,100,110,112,120,131,],[25,53,53,53,53,53,53,53,107,-69,53,-43,-44,-71,-47,-48,53,53,53,53,-61,-62,-63,-64,-65,-66,53,53,53,134,]),'parens':([13,],[26,]),'openParen':([13,19,28,30,33,39,47,59,61,66,67,75,76,77,78,79,80,81,88,92,93,110,112,120,],[28,39,47,47,28,61,47,88,61,61,47,-69,47,-43,-44,-71,-47,-48,61,61,61,47,47,47,]),'equals':([13,16,27,40,109,],[-26,30,-24,67,-25,]),'elif':([15,22,26,27,31,32,33,34,35,36,37,38,49,50,51,52,53,54,55,82,83,84,85,86,104,108,109,113,116,121,123,124,126,128,129,130,133,138,],[-13,-23,-16,-24,-17,-29,-26,-18,-31,-33,-34,59,-41,-45,-49,-67,-68,-68,-15,-58,-59,-60,-30,-32,-22,-50,-25,-19,-14,-21,-70,-72,-35,-42,-46,-14,-36,-20,]),'else':([15,22,26,27,31,32,33,34,35,36,37,38,49,50,51,52,53,54,55,82,83,84,85,86,104,108,109,113,116,121,123,124,126,128,129,130,133,138,],[-13,-23,-16,-24,-17,-29,-26,-18,-31,-33,-34,60,-41,-45,-49,-67,-68,-68,-15,-58,-59,-60,-30,-32,-22,-50,-25,-19,-14,-21,-70,-72,-35,-42,-46,-14,-36,-20,]),'string':([18,57,],[37,37,]),'then':([20,27,33,49,50,51,52,53,54,82,83,84,91,108,109,123,124,125,127,128,129,132,134,],[41,-24,-26,-41,-45,-49,-67,-68,-68,-58,-59,-60,116,-50,-25,-70,-72,130,-40,-42,-46,135,-39,]),'closedBra':([25,107,],[46,122,]),'coma':([27,31,32,33,34,35,36,37,42,44,45,48,49,50,51,52,53,54,82,83,84,85,86,102,106,108,109,123,124,127,128,129,],[-24,56,-29,-26,57,-31,-33,-34,69,71,-4,76,-41,-45,-49,-67,-68,-68,-58,-59,-60,-30,-32,120,-5,-50,-25,-70,-72,131,-42,-46,]),'mul':([27,33,49,50,51,52,53,54,82,83,84,108,109,123,124,129,],[-24,-26,80,-45,-49,-67,-68,-68,-58,-59,-60,-50,-25,80,-72,-46,]),'div':([27,33,49,50,51,52,53,54,82,83,84,108,109,123,124,129,],[-24,-26,81,-45,-49,-67,-68,-68,-58,-59,-60,-50,-25,81,-72,-46,]),'plus':([27,33,48,49,50,51,52,53,54,55,73,82,83,84,102,108,109,111,123,124,127,128,129,],[-24,-26,77,-41,-45,-49,-67,-68,-68,77,77,-58,-59,-60,77,-50,-25,77,-70,-72,77,-42,-46,]),'minus':([27,33,48,49,50,51,52,53,54,55,73,82,83,84,102,108,109,111,123,124,127,128,129,],[-24,-26,78,-41,-45,-49,-67,-68,-68,78,78,-58,-59,-60,78,-50,-25,78,-70,-72,78,-42,-46,]),'closedParen':([27,33,48,49,50,51,52,53,54,62,63,64,73,74,82,83,84,90,101,108,109,111,114,115,117,118,119,123,124,128,129,],[-24,-26,-28,-41,-45,-49,-67,-68,-68,91,-51,-53,108,109,-58,-59,-60,115,-57,-50,-25,-27,125,-56,-52,-54,-55,-70,-72,-42,-46,]),'less':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,95,-58,-59,-60,-25,]),'more':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,96,-58,-59,-60,-25,]),'doubleEquals':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,97,-58,-59,-60,-25,]),'notEquals':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,98,-58,-59,-60,-25,]),'lessEquals':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,99,-58,-59,-60,-25,]),'moreEquals':([27,33,52,53,54,65,82,83,84,109,],[-24,-26,-67,-68,-68,100,-58,-59,-60,-25,]),'and':([27,33,52,53,54,63,64,82,83,84,101,109,115,117,118,119,],[-24,-26,-67,-68,-68,93,-53,-58,-59,-60,-57,-25,-56,93,-54,-55,]),'or':([27,33,52,53,54,62,63,64,82,83,84,90,101,109,114,115,117,118,119,],[-24,-26,-67,-68,-68,92,-51,-53,-58,-59,-60,92,92,-25,92,-56,-52,-54,-55,]),'rea':([28,30,39,47,61,66,67,75,76,77,78,79,80,81,88,92,93,94,95,96,97,98,99,100,110,112,120,],[54,54,54,54,54,54,54,-69,54,-43,-44,-71,-47,-48,54,54,54,54,-61,-62,-63,-64,-65,-66,54,54,54,]),'not':([39,61,66,88,92,93,],[66,66,66,66,66,66,]),}
|
|
|
|
_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 = {'programa':([0,],[1,]),'V':([3,],[4,]),'F':([4,],[5,]),'Tipo':([4,],[6,]),'B':([5,23,41,60,116,130,135,],[9,43,68,89,126,133,136,]),'Dim':([6,],[11,]),'S':([9,43,68,89,126,133,136,],[15,15,15,15,15,15,15,]),'Dimensional':([9,17,18,21,28,30,39,43,47,56,57,61,66,67,68,69,76,88,89,92,93,94,110,112,120,126,133,136,],[16,32,36,42,52,52,52,16,52,85,36,52,52,52,16,104,52,52,16,52,52,52,52,52,52,16,16,16,]),'DimensionsOrEmpty':([13,33,],[27,27,]),'RDimensional':([17,],[31,]),'RDimOrString':([18,],[34,]),'DimOrString':([18,57,],[35,86,]),'Relif':([19,],[38,]),'Rid':([24,],[44,]),'EA':([28,30,47,67,76,120,],[48,55,73,102,111,127,]),'MultDiv':([28,30,47,67,76,110,120,],[49,49,49,49,49,123,49,]),'EAParens':([28,30,47,67,76,110,112,120,],[50,50,50,50,50,50,124,50,]),'EItem':([28,30,39,47,61,66,67,76,88,92,93,94,110,112,120,],[51,51,65,51,65,65,51,51,65,65,65,119,51,51,51,]),'ElseOrEmpty':([38,],[58,]),'EL':([39,61,66,88,],[62,90,101,114,]),'AND':([39,61,66,88,92,],[63,63,63,63,117,]),'Equality':([39,61,66,88,92,93,],[64,64,64,64,64,118,]),'ComaEAOrEmpty':([48,],[74,]),'SumOrSub':([48,55,73,102,111,127,],[75,75,75,75,75,75,]),'MDSymbols':([49,123,],[79,79,]),'action_1':([52,],[82,]),'action_2':([53,54,],[83,84,]),'EQSymbols':([65,],[94,]),'action_3':([75,],[110,]),'action_5':([79,],[112,]),'action_4':([123,],[128,]),'action_6':([124,],[129,]),'IntOrEmpty':([127,],[132,]),}
|
|
|
|
_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' -> programa","S'",1,None,None,None),
|
|
('programa -> program id V F B end program','programa',7,'p_programa','fort.py',148),
|
|
('V -> V Tipo Dim doubleColon Rid','V',5,'p_V','fort.py',154),
|
|
('V -> <empty>','V',0,'p_V','fort.py',155),
|
|
('Rid -> id','Rid',1,'p_Rid','fort.py',166),
|
|
('Rid -> Rid coma id','Rid',3,'p_Rid','fort.py',167),
|
|
('Tipo -> integer','Tipo',1,'p_Tipo','fort.py',178),
|
|
('Tipo -> real','Tipo',1,'p_Tipo','fort.py',179),
|
|
('Dim -> openBra int closedBra','Dim',3,'p_Dim','fort.py',186),
|
|
('Dim -> openBra int closedBra openBra int closedBra','Dim',6,'p_Dim','fort.py',187),
|
|
('Dim -> <empty>','Dim',0,'p_Dim','fort.py',188),
|
|
('F -> F subroutine id B end subroutine','F',6,'p_F','fort.py',193),
|
|
('F -> <empty>','F',0,'p_F','fort.py',194),
|
|
('B -> B S','B',2,'p_B','fort.py',199),
|
|
('B -> <empty>','B',0,'p_B','fort.py',200),
|
|
('S -> Dimensional equals EA','S',3,'p_S','fort.py',205),
|
|
('S -> id parens','S',2,'p_S','fort.py',206),
|
|
('S -> read RDimensional','S',2,'p_S','fort.py',207),
|
|
('S -> print RDimOrString','S',2,'p_S','fort.py',208),
|
|
('S -> if Relif ElseOrEmpty end if','S',5,'p_S','fort.py',209),
|
|
('S -> do id equals EA coma EA IntOrEmpty then B end do','S',11,'p_S','fort.py',210),
|
|
('S -> do then B end do','S',5,'p_S','fort.py',211),
|
|
('S -> swap Dimensional coma Dimensional','S',4,'p_S','fort.py',212),
|
|
('S -> exit','S',1,'p_S','fort.py',213),
|
|
('Dimensional -> id DimensionsOrEmpty','Dimensional',2,'p_Dimensional','fort.py',219),
|
|
('DimensionsOrEmpty -> openParen EA ComaEAOrEmpty closedParen','DimensionsOrEmpty',4,'p_DimensionsOrEmpty','fort.py',226),
|
|
('DimensionsOrEmpty -> <empty>','DimensionsOrEmpty',0,'p_DimensionsOrEmpty','fort.py',227),
|
|
('ComaEAOrEmpty -> coma EA','ComaEAOrEmpty',2,'p_ComaEAOrEmpty','fort.py',232),
|
|
('ComaEAOrEmpty -> <empty>','ComaEAOrEmpty',0,'p_ComaEAOrEmpty','fort.py',233),
|
|
('RDimensional -> Dimensional','RDimensional',1,'p_RDimensional','fort.py',238),
|
|
('RDimensional -> RDimensional coma Dimensional','RDimensional',3,'p_RDimensional','fort.py',239),
|
|
('RDimOrString -> DimOrString','RDimOrString',1,'p_RDimOrString','fort.py',244),
|
|
('RDimOrString -> RDimOrString coma DimOrString','RDimOrString',3,'p_RDimOrString','fort.py',245),
|
|
('DimOrString -> Dimensional','DimOrString',1,'p_DimOrString','fort.py',250),
|
|
('DimOrString -> string','DimOrString',1,'p_DimOrString','fort.py',251),
|
|
('Relif -> openParen EL closedParen then B','Relif',5,'p_Relif','fort.py',256),
|
|
('Relif -> Relif elif openParen EL closedParen then B','Relif',7,'p_Relif','fort.py',257),
|
|
('ElseOrEmpty -> else B','ElseOrEmpty',2,'p_ElseOrEmpty','fort.py',262),
|
|
('ElseOrEmpty -> <empty>','ElseOrEmpty',0,'p_ElseOrEmpty','fort.py',263),
|
|
('IntOrEmpty -> coma int','IntOrEmpty',2,'p_IntOrEmpty','fort.py',268),
|
|
('IntOrEmpty -> <empty>','IntOrEmpty',0,'p_IntOrEmpty','fort.py',269),
|
|
('EA -> MultDiv','EA',1,'p_EA','fort.py',274),
|
|
('EA -> EA SumOrSub action_3 MultDiv action_4','EA',5,'p_EA','fort.py',275),
|
|
('SumOrSub -> plus','SumOrSub',1,'p_SumOrSub','fort.py',281),
|
|
('SumOrSub -> minus','SumOrSub',1,'p_SumOrSub','fort.py',282),
|
|
('MultDiv -> EAParens','MultDiv',1,'p_MultDiv','fort.py',288),
|
|
('MultDiv -> MultDiv MDSymbols action_5 EAParens action_6','MultDiv',5,'p_MultDiv','fort.py',289),
|
|
('MDSymbols -> mul','MDSymbols',1,'p_MDSymbols','fort.py',294),
|
|
('MDSymbols -> div','MDSymbols',1,'p_MDSymbols','fort.py',295),
|
|
('EAParens -> EItem','EAParens',1,'p_EAParens','fort.py',301),
|
|
('EAParens -> openParen EA closedParen','EAParens',3,'p_EAParens','fort.py',302),
|
|
('EL -> AND','EL',1,'p_EL','fort.py',307),
|
|
('EL -> EL or AND','EL',3,'p_EL','fort.py',308),
|
|
('AND -> Equality','AND',1,'p_AND','fort.py',313),
|
|
('AND -> AND and Equality','AND',3,'p_AND','fort.py',314),
|
|
('Equality -> EItem EQSymbols EItem','Equality',3,'p_Equality','fort.py',319),
|
|
('Equality -> openParen EL closedParen','Equality',3,'p_Equality','fort.py',320),
|
|
('Equality -> not EL','Equality',2,'p_Equality','fort.py',321),
|
|
('EItem -> Dimensional action_1','EItem',2,'p_EItem','fort.py',326),
|
|
('EItem -> int action_2','EItem',2,'p_EItem','fort.py',327),
|
|
('EItem -> rea action_2','EItem',2,'p_EItem','fort.py',328),
|
|
('EQSymbols -> less','EQSymbols',1,'p_EQSymbols','fort.py',333),
|
|
('EQSymbols -> more','EQSymbols',1,'p_EQSymbols','fort.py',334),
|
|
('EQSymbols -> doubleEquals','EQSymbols',1,'p_EQSymbols','fort.py',335),
|
|
('EQSymbols -> notEquals','EQSymbols',1,'p_EQSymbols','fort.py',336),
|
|
('EQSymbols -> lessEquals','EQSymbols',1,'p_EQSymbols','fort.py',337),
|
|
('EQSymbols -> moreEquals','EQSymbols',1,'p_EQSymbols','fort.py',338),
|
|
('action_1 -> <empty>','action_1',0,'p_action_1','fort.py',343),
|
|
('action_2 -> <empty>','action_2',0,'p_action_2','fort.py',348),
|
|
('action_3 -> <empty>','action_3',0,'p_action_3','fort.py',352),
|
|
('action_4 -> <empty>','action_4',0,'p_action_4','fort.py',356),
|
|
('action_5 -> <empty>','action_5',0,'p_action_5','fort.py',368),
|
|
('action_6 -> <empty>','action_6',0,'p_action_6','fort.py',373),
|
|
]
|