96 lines
15 KiB
Python
96 lines
15 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 B end do\n | do 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 MultDiv\n \n SumOrSub : plus\n | minus\n \n MultDiv : EAParens\n | MultDiv MDSymbols EAParens\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\n | int\n | rea\n \n EQSymbols : less\n | more\n | doubleEquals\n | notEquals\n | lessEquals\n | moreEquals\n '
|
|
|
|
_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,69,71,75,76,77,78,79,80,81,82,83,85,86,89,90,91,92,93,94,95,96,97,100,101,102,103,105,106,107,109,110,113,117,120,121,122,124,125,126,127,129,],[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,13,13,-2,-4,33,-41,-45,-49,-58,-59,-60,-15,33,33,-14,33,33,33,33,103,33,33,-43,-44,33,-47,-48,-30,-32,33,13,33,33,33,-61,-62,-63,-64,-65,-66,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,33,13,-40,-14,-14,13,-39,13,-20,]),'integer':([3,4,44,45,103,],[-3,7,-2,-4,-5,]),'real':([3,4,44,45,103,],[-3,8,-2,-4,-5,]),'subroutine':([3,4,5,44,45,70,102,103,],[-3,-12,10,-2,-4,102,-11,-5,]),'end':([3,4,5,9,15,20,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,82,83,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,14,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,-38,68,70,-2,-4,-41,-45,-49,-58,-59,-60,-15,84,-14,-30,-32,-37,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,-35,-40,-14,-14,-36,-39,128,-20,]),'read':([3,4,5,9,15,20,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,82,83,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,17,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,17,17,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,-30,-32,17,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,17,-40,-14,-14,17,-39,17,-20,]),'print':([3,4,5,9,15,20,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,82,83,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,18,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,18,18,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,-30,-32,18,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,18,-40,-14,-14,18,-39,18,-20,]),'if':([3,4,5,9,15,20,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,82,83,84,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,19,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,19,19,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,-30,-32,110,19,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,19,-40,-14,-14,19,-39,19,-20,]),'do':([3,4,5,9,15,20,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,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,128,129,],[-3,-12,-14,20,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,20,20,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,100,-30,-32,20,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,20,-40,-14,-14,20,-39,20,129,-20,]),'swap':([3,4,5,9,15,20,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,82,83,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,21,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,21,21,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,-30,-32,21,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,21,-40,-14,-14,21,-39,21,-20,]),'exit':([3,4,5,9,15,20,22,23,26,27,31,32,33,34,35,36,37,41,43,44,45,49,50,51,52,53,54,55,60,82,83,86,100,101,102,103,105,106,107,109,110,113,120,121,122,124,125,126,127,129,],[-3,-12,-14,22,-13,-14,-23,-14,-16,-24,-17,-29,-26,-18,-31,-33,-34,22,22,-2,-4,-41,-45,-49,-58,-59,-60,-15,-14,-30,-32,22,-21,-22,-11,-5,-50,-25,-42,-46,-19,-14,22,-40,-14,-14,22,-39,22,-20,]),'openBra':([6,7,8,46,],[12,-6,-7,72,]),'doubleColon':([6,7,8,11,46,118,],[-10,-6,-7,24,-8,-9,]),'int':([12,28,30,39,47,61,66,67,72,75,76,77,78,79,80,81,85,89,90,91,92,93,94,95,96,97,117,123,],[25,53,53,53,53,53,53,53,104,53,53,-43,-44,53,-47,-48,53,53,53,53,-61,-62,-63,-64,-65,-66,53,126,]),'parens':([13,],[26,]),'openParen':([13,19,28,30,33,39,47,59,61,66,67,75,76,77,78,79,80,81,85,89,90,117,],[28,39,47,47,28,61,47,85,61,61,47,47,47,-43,-44,47,-47,-48,61,61,61,47,]),'equals':([13,16,27,40,106,],[-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,100,101,105,106,107,109,110,113,120,122,125,129,],[-13,-23,-16,-24,-17,-29,-26,-18,-31,-33,-34,59,-41,-45,-49,-58,-59,-60,-15,-30,-32,-21,-22,-50,-25,-42,-46,-19,-14,-35,-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,100,101,105,106,107,109,110,113,120,122,125,129,],[-13,-23,-16,-24,-17,-29,-26,-18,-31,-33,-34,60,-41,-45,-49,-58,-59,-60,-15,-30,-32,-21,-22,-50,-25,-42,-46,-19,-14,-35,-14,-36,-20,]),'string':([18,57,],[37,37,]),'closedBra':([25,104,],[46,118,]),'coma':([27,31,32,33,34,35,36,37,42,44,45,48,49,50,51,52,53,54,82,83,99,103,105,106,107,109,121,],[-24,56,-29,-26,57,-31,-33,-34,69,71,-4,76,-41,-45,-49,-58,-59,-60,-30,-32,117,-5,-50,-25,-42,-46,123,]),'mul':([27,33,49,50,51,52,53,54,105,106,107,109,],[-24,-26,80,-45,-49,-58,-59,-60,-50,-25,80,-46,]),'div':([27,33,49,50,51,52,53,54,105,106,107,109,],[-24,-26,81,-45,-49,-58,-59,-60,-50,-25,81,-46,]),'plus':([27,33,48,49,50,51,52,53,54,55,73,99,105,106,107,108,109,121,],[-24,-26,77,-41,-45,-49,-58,-59,-60,77,77,77,-50,-25,-42,77,-46,77,]),'minus':([27,33,48,49,50,51,52,53,54,55,73,99,105,106,107,108,109,121,],[-24,-26,78,-41,-45,-49,-58,-59,-60,78,78,78,-50,-25,-42,78,-46,78,]),'closedParen':([27,33,48,49,50,51,52,53,54,62,63,64,73,74,87,98,105,106,107,108,109,111,112,114,115,116,],[-24,-26,-28,-41,-45,-49,-58,-59,-60,88,-51,-53,105,106,112,-57,-50,-25,-42,-27,-46,119,-56,-52,-54,-55,]),'less':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,92,-25,]),'more':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,93,-25,]),'doubleEquals':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,94,-25,]),'notEquals':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,95,-25,]),'lessEquals':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,96,-25,]),'moreEquals':([27,33,52,53,54,65,106,],[-24,-26,-58,-59,-60,97,-25,]),'and':([27,33,52,53,54,63,64,98,106,112,114,115,116,],[-24,-26,-58,-59,-60,90,-53,-57,-25,-56,90,-54,-55,]),'or':([27,33,52,53,54,62,63,64,87,98,106,111,112,114,115,116,],[-24,-26,-58,-59,-60,89,-51,-53,89,89,-25,89,-56,-52,-54,-55,]),'rea':([28,30,39,47,61,66,67,75,76,77,78,79,80,81,85,89,90,91,92,93,94,95,96,97,117,],[54,54,54,54,54,54,54,54,54,-43,-44,54,-47,-48,54,54,54,54,-61,-62,-63,-64,-65,-66,54,]),'not':([39,61,66,85,89,90,],[66,66,66,66,66,66,]),'then':([88,119,],[113,122,]),}
|
|
|
|
_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,20,23,60,113,122,124,],[9,41,43,86,120,125,127,]),'Dim':([6,],[11,]),'S':([9,41,43,86,120,125,127,],[15,15,15,15,15,15,15,]),'Dimensional':([9,17,18,21,28,30,39,41,43,47,56,57,61,66,67,69,75,76,79,85,86,89,90,91,117,120,125,127,],[16,32,36,42,52,52,52,16,16,52,82,36,52,52,52,101,52,52,52,52,16,52,52,52,52,16,16,16,]),'DimensionsOrEmpty':([13,33,],[27,27,]),'RDimensional':([17,],[31,]),'RDimOrString':([18,],[34,]),'DimOrString':([18,57,],[35,83,]),'Relif':([19,],[38,]),'Rid':([24,],[44,]),'EA':([28,30,47,67,76,117,],[48,55,73,99,108,121,]),'MultDiv':([28,30,47,67,75,76,117,],[49,49,49,49,107,49,49,]),'EAParens':([28,30,47,67,75,76,79,117,],[50,50,50,50,50,50,109,50,]),'EItem':([28,30,39,47,61,66,67,75,76,79,85,89,90,91,117,],[51,51,65,51,65,65,51,51,51,51,65,65,65,116,51,]),'ElseOrEmpty':([38,],[58,]),'EL':([39,61,66,85,],[62,87,98,111,]),'AND':([39,61,66,85,89,],[63,63,63,63,114,]),'Equality':([39,61,66,85,89,90,],[64,64,64,64,64,115,]),'ComaEAOrEmpty':([48,],[74,]),'SumOrSub':([48,55,73,99,108,121,],[75,75,75,75,75,75,]),'MDSymbols':([49,107,],[79,79,]),'EQSymbols':([65,],[91,]),'IntOrEmpty':([121,],[124,]),}
|
|
|
|
_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','lex_yacc.py',109),
|
|
('V -> V Tipo Dim doubleColon Rid','V',5,'p_V','lex_yacc.py',115),
|
|
('V -> <empty>','V',0,'p_V','lex_yacc.py',116),
|
|
('Rid -> id','Rid',1,'p_Rid','lex_yacc.py',121),
|
|
('Rid -> Rid coma id','Rid',3,'p_Rid','lex_yacc.py',122),
|
|
('Tipo -> integer','Tipo',1,'p_Tipo','lex_yacc.py',127),
|
|
('Tipo -> real','Tipo',1,'p_Tipo','lex_yacc.py',128),
|
|
('Dim -> openBra int closedBra','Dim',3,'p_Dim','lex_yacc.py',133),
|
|
('Dim -> openBra int closedBra openBra int closedBra','Dim',6,'p_Dim','lex_yacc.py',134),
|
|
('Dim -> <empty>','Dim',0,'p_Dim','lex_yacc.py',135),
|
|
('F -> F subroutine id B end subroutine','F',6,'p_F','lex_yacc.py',140),
|
|
('F -> <empty>','F',0,'p_F','lex_yacc.py',141),
|
|
('B -> B S','B',2,'p_B','lex_yacc.py',146),
|
|
('B -> <empty>','B',0,'p_B','lex_yacc.py',147),
|
|
('S -> Dimensional equals EA','S',3,'p_S','lex_yacc.py',152),
|
|
('S -> id parens','S',2,'p_S','lex_yacc.py',153),
|
|
('S -> read RDimensional','S',2,'p_S','lex_yacc.py',154),
|
|
('S -> print RDimOrString','S',2,'p_S','lex_yacc.py',155),
|
|
('S -> if Relif ElseOrEmpty end if','S',5,'p_S','lex_yacc.py',156),
|
|
('S -> do id equals EA coma EA IntOrEmpty B end do','S',10,'p_S','lex_yacc.py',157),
|
|
('S -> do B end do','S',4,'p_S','lex_yacc.py',158),
|
|
('S -> swap Dimensional coma Dimensional','S',4,'p_S','lex_yacc.py',159),
|
|
('S -> exit','S',1,'p_S','lex_yacc.py',160),
|
|
('Dimensional -> id DimensionsOrEmpty','Dimensional',2,'p_Dimensional','lex_yacc.py',165),
|
|
('DimensionsOrEmpty -> openParen EA ComaEAOrEmpty closedParen','DimensionsOrEmpty',4,'p_DimensionsOrEmpty','lex_yacc.py',170),
|
|
('DimensionsOrEmpty -> <empty>','DimensionsOrEmpty',0,'p_DimensionsOrEmpty','lex_yacc.py',171),
|
|
('ComaEAOrEmpty -> coma EA','ComaEAOrEmpty',2,'p_ComaEAOrEmpty','lex_yacc.py',176),
|
|
('ComaEAOrEmpty -> <empty>','ComaEAOrEmpty',0,'p_ComaEAOrEmpty','lex_yacc.py',177),
|
|
('RDimensional -> Dimensional','RDimensional',1,'p_RDimensional','lex_yacc.py',182),
|
|
('RDimensional -> RDimensional coma Dimensional','RDimensional',3,'p_RDimensional','lex_yacc.py',183),
|
|
('RDimOrString -> DimOrString','RDimOrString',1,'p_RDimOrString','lex_yacc.py',188),
|
|
('RDimOrString -> RDimOrString coma DimOrString','RDimOrString',3,'p_RDimOrString','lex_yacc.py',189),
|
|
('DimOrString -> Dimensional','DimOrString',1,'p_DimOrString','lex_yacc.py',194),
|
|
('DimOrString -> string','DimOrString',1,'p_DimOrString','lex_yacc.py',195),
|
|
('Relif -> openParen EL closedParen then B','Relif',5,'p_Relif','lex_yacc.py',200),
|
|
('Relif -> Relif elif openParen EL closedParen then B','Relif',7,'p_Relif','lex_yacc.py',201),
|
|
('ElseOrEmpty -> else B','ElseOrEmpty',2,'p_ElseOrEmpty','lex_yacc.py',206),
|
|
('ElseOrEmpty -> <empty>','ElseOrEmpty',0,'p_ElseOrEmpty','lex_yacc.py',207),
|
|
('IntOrEmpty -> coma int','IntOrEmpty',2,'p_IntOrEmpty','lex_yacc.py',212),
|
|
('IntOrEmpty -> <empty>','IntOrEmpty',0,'p_IntOrEmpty','lex_yacc.py',213),
|
|
('EA -> MultDiv','EA',1,'p_EA','lex_yacc.py',218),
|
|
('EA -> EA SumOrSub MultDiv','EA',3,'p_EA','lex_yacc.py',219),
|
|
('SumOrSub -> plus','SumOrSub',1,'p_SumOrSub','lex_yacc.py',224),
|
|
('SumOrSub -> minus','SumOrSub',1,'p_SumOrSub','lex_yacc.py',225),
|
|
('MultDiv -> EAParens','MultDiv',1,'p_MultDiv','lex_yacc.py',230),
|
|
('MultDiv -> MultDiv MDSymbols EAParens','MultDiv',3,'p_MultDiv','lex_yacc.py',231),
|
|
('MDSymbols -> mul','MDSymbols',1,'p_MDSymbols','lex_yacc.py',236),
|
|
('MDSymbols -> div','MDSymbols',1,'p_MDSymbols','lex_yacc.py',237),
|
|
('EAParens -> EItem','EAParens',1,'p_EAParens','lex_yacc.py',242),
|
|
('EAParens -> openParen EA closedParen','EAParens',3,'p_EAParens','lex_yacc.py',243),
|
|
('EL -> AND','EL',1,'p_EL','lex_yacc.py',248),
|
|
('EL -> EL or AND','EL',3,'p_EL','lex_yacc.py',249),
|
|
('AND -> Equality','AND',1,'p_AND','lex_yacc.py',254),
|
|
('AND -> AND and Equality','AND',3,'p_AND','lex_yacc.py',255),
|
|
('Equality -> EItem EQSymbols EItem','Equality',3,'p_Equality','lex_yacc.py',260),
|
|
('Equality -> openParen EL closedParen','Equality',3,'p_Equality','lex_yacc.py',261),
|
|
('Equality -> not EL','Equality',2,'p_Equality','lex_yacc.py',262),
|
|
('EItem -> Dimensional','EItem',1,'p_EItem','lex_yacc.py',267),
|
|
('EItem -> int','EItem',1,'p_EItem','lex_yacc.py',268),
|
|
('EItem -> rea','EItem',1,'p_EItem','lex_yacc.py',269),
|
|
('EQSymbols -> less','EQSymbols',1,'p_EQSymbols','lex_yacc.py',274),
|
|
('EQSymbols -> more','EQSymbols',1,'p_EQSymbols','lex_yacc.py',275),
|
|
('EQSymbols -> doubleEquals','EQSymbols',1,'p_EQSymbols','lex_yacc.py',276),
|
|
('EQSymbols -> notEquals','EQSymbols',1,'p_EQSymbols','lex_yacc.py',277),
|
|
('EQSymbols -> lessEquals','EQSymbols',1,'p_EQSymbols','lex_yacc.py',278),
|
|
('EQSymbols -> moreEquals','EQSymbols',1,'p_EQSymbols','lex_yacc.py',279),
|
|
]
|