forked from smohammadfy/Compiler_PLY
-
Notifications
You must be signed in to change notification settings - Fork 0
/
parsetab.py
89 lines (82 loc) · 17.2 KB
/
parsetab.py
1
2
3
4
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
40
41
42
43
44
45
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
78
79
80
81
82
83
84
85
86
87
88
89
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = 'leftLORleftLANDnonassocGTGTELTLTEEQNEQleftPLUSMINUSleftMULDIVIDErightUNARYASSIGN BOOL COMMA CONST DIVIDE ELIF ELSE EQ ERROR FLOAT FLOATNUMBER FUNC GT GTE ID IF INTEGER INTEGERNUMBER LAND LCURL LOR LPAREN LSB LT LTE MAIN MINUS MOD MUL NEQ NOT PLUS PRINT RCURL RETURN RPAREN RSB SEMI STRING VAR VOID WHILE\n program : empty\n \n program : basicblock\n \n basicblock : statements\n\n \n statements : statements statement\n \n statements : statement\n \n statement : const_declaration\n | var_declaration\n | assign_statement\n | print_statement\n | if_statement\n | if_else_statement\n | while_statement\n | return_statement\n | func_call\n | func_statement\n \n if_statement : IF expression LCURL basicblock RCURL\n \n if_else_statement : IF expression LCURL basicblock RCURL ELSE LCURL basicblock RCURL\n \n while_statement : WHILE expression LCURL basicblock RCURL\n \n func_call : ID LPAREN arguments RPAREN SEMI\n \n arguments : argument\n \n argument : expression\n \n arguments : arguments COMMA argument\n | empty\n \n parameter : ID typename\n \n parameters : parameter\n \n parameters : parameters COMMA parameter\n | empty\n \n func_statement : FUNC ID typename LPAREN parameters RPAREN LCURL basicblock RCURL\n \n return_statement : RETURN expression SEMI\n \n const_declaration : CONST ID ASSIGN expression SEMI\n \n var_declaration : VAR ID typename SEMI\n \n var_declaration : VAR ID typename ASSIGN expression SEMI\n \n assign_statement : location ASSIGN expression SEMI\n \n print_statement : PRINT expression SEMI\n \n expression : PLUS expression %prec UNARY\n | MINUS expression %prec UNARY\n | NOT expression %prec UNARY\n \n expression : expression PLUS expression\n | expression MINUS expression\n | expression MUL expression\n | expression DIVIDE expression\n \n expression : expression GT expression\n | expression GTE expression\n | expression LT expression\n | expression LTE expression\n | expression EQ expression\n | expression NEQ expression\n | expression LAND expression\n | expression LOR expression\n \n expression : LPAREN expression RPAREN\n \n expression : location\n \n expression : literal\n \n literal : INTEGERNUMBER\n | FLOATNUMBER\n | STRING\n | BOOL\n \n location : ID\n \n typename : ID\n \n empty :\n '
_lr_action_items = {'$end':([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,25,54,73,78,80,97,98,101,102,107,117,118,],[-59,0,-1,-2,-3,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,-29,-31,-33,-30,-19,-16,-18,-32,-17,-28,]),'CONST':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[16,16,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,16,16,-29,-31,-33,-30,-19,-16,-18,-32,16,16,-17,-28,]),'VAR':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[18,18,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,18,18,-29,-31,-33,-30,-19,-16,-18,-32,18,18,-17,-28,]),'PRINT':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[20,20,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,20,20,-29,-31,-33,-30,-19,-16,-18,-32,20,20,-17,-28,]),'IF':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[21,21,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,21,21,-29,-31,-33,-30,-19,-16,-18,-32,21,21,-17,-28,]),'WHILE':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[22,22,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,22,22,-29,-31,-33,-30,-19,-16,-18,-32,22,22,-17,-28,]),'RETURN':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[23,23,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,23,23,-29,-31,-33,-30,-19,-16,-18,-32,23,23,-17,-28,]),'ID':([0,4,5,6,7,8,9,10,11,12,13,14,15,16,18,20,21,22,23,24,25,27,28,29,31,32,33,34,45,46,54,55,56,57,58,59,60,61,62,63,64,65,66,71,72,73,77,78,79,80,96,97,98,101,102,103,107,111,112,113,117,118,],[17,17,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,26,28,37,37,37,37,45,-4,37,51,37,37,37,37,37,51,37,-34,37,37,37,37,37,37,37,37,37,37,37,37,17,17,-29,37,-31,37,-33,103,-30,-19,-16,-18,51,-32,103,17,17,-17,-28,]),'FUNC':([0,4,5,6,7,8,9,10,11,12,13,14,15,25,54,71,72,73,78,80,97,98,101,102,107,112,113,117,118,],[24,24,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,24,24,-29,-31,-33,-30,-19,-16,-18,-32,24,24,-17,-28,]),'RCURL':([4,5,6,7,8,9,10,11,12,13,14,15,25,54,73,78,80,94,95,97,98,101,102,107,115,116,117,118,],[-3,-5,-6,-7,-8,-9,-10,-11,-12,-13,-14,-15,-4,-34,-29,-31,-33,101,102,-30,-19,-16,-18,-32,117,118,-17,-28,]),'LPAREN':([17,20,21,22,23,27,29,31,32,33,34,46,51,55,56,57,58,59,60,61,62,63,64,65,66,74,77,79,],[27,34,34,34,34,34,34,34,34,34,34,34,-58,34,34,34,34,34,34,34,34,34,34,34,34,96,34,34,]),'ASSIGN':([17,19,26,51,52,],[-57,29,46,-58,79,]),'PLUS':([20,21,22,23,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,50,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,75,77,79,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[31,31,31,31,31,31,55,31,31,31,31,-51,-52,-57,-53,-54,-55,-56,55,55,55,31,55,55,31,31,31,31,31,31,31,31,31,31,31,31,-35,-36,-37,55,55,31,31,-38,-39,-40,-41,55,55,55,55,55,55,55,55,-50,55,]),'MINUS':([20,21,22,23,27,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,50,53,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,75,77,79,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[32,32,32,32,32,32,56,32,32,32,32,-51,-52,-57,-53,-54,-55,-56,56,56,56,32,56,56,32,32,32,32,32,32,32,32,32,32,32,32,-35,-36,-37,56,56,32,32,-38,-39,-40,-41,56,56,56,56,56,56,56,56,-50,56,]),'NOT':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,]),'INTEGERNUMBER':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,]),'FLOATNUMBER':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,]),'STRING':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,]),'BOOL':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,41,]),'RPAREN':([27,35,36,37,38,39,40,41,47,48,49,50,51,67,68,69,70,81,82,83,84,85,86,87,88,89,90,91,92,93,96,99,104,105,106,109,114,],[-59,-51,-52,-57,-53,-54,-55,-56,76,-20,-23,-21,-58,-35,-36,-37,93,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,-49,-50,-59,-22,110,-25,-27,-24,-26,]),'COMMA':([27,35,36,37,38,39,40,41,47,48,49,50,51,67,68,69,81,82,83,84,85,86,87,88,89,90,91,92,93,96,99,104,105,106,109,114,],[-59,-51,-52,-57,-53,-54,-55,-56,77,-20,-23,-21,-58,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,-49,-50,-59,-22,111,-25,-27,-24,-26,]),'SEMI':([30,35,36,37,38,39,40,41,44,51,52,53,67,68,69,75,76,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[54,-51,-52,-57,-53,-54,-55,-56,73,-58,78,80,-35,-36,-37,97,98,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,-49,-50,107,]),'MUL':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[57,-51,-52,-57,-53,-54,-55,-56,57,57,57,57,57,-35,-36,-37,57,57,57,57,-40,-41,57,57,57,57,57,57,57,57,-50,57,]),'DIVIDE':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[58,-51,-52,-57,-53,-54,-55,-56,58,58,58,58,58,-35,-36,-37,58,58,58,58,-40,-41,58,58,58,58,58,58,58,58,-50,58,]),'GT':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[59,-51,-52,-57,-53,-54,-55,-56,59,59,59,59,59,-35,-36,-37,59,59,-38,-39,-40,-41,None,None,None,None,None,None,59,59,-50,59,]),'GTE':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[60,-51,-52,-57,-53,-54,-55,-56,60,60,60,60,60,-35,-36,-37,60,60,-38,-39,-40,-41,None,None,None,None,None,None,60,60,-50,60,]),'LT':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[61,-51,-52,-57,-53,-54,-55,-56,61,61,61,61,61,-35,-36,-37,61,61,-38,-39,-40,-41,None,None,None,None,None,None,61,61,-50,61,]),'LTE':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[62,-51,-52,-57,-53,-54,-55,-56,62,62,62,62,62,-35,-36,-37,62,62,-38,-39,-40,-41,None,None,None,None,None,None,62,62,-50,62,]),'EQ':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[63,-51,-52,-57,-53,-54,-55,-56,63,63,63,63,63,-35,-36,-37,63,63,-38,-39,-40,-41,None,None,None,None,None,None,63,63,-50,63,]),'NEQ':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[64,-51,-52,-57,-53,-54,-55,-56,64,64,64,64,64,-35,-36,-37,64,64,-38,-39,-40,-41,None,None,None,None,None,None,64,64,-50,64,]),'LAND':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[65,-51,-52,-57,-53,-54,-55,-56,65,65,65,65,65,-35,-36,-37,65,65,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,65,-50,65,]),'LOR':([30,35,36,37,38,39,40,41,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,93,100,],[66,-51,-52,-57,-53,-54,-55,-56,66,66,66,66,66,-35,-36,-37,66,66,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,-49,-50,66,]),'LCURL':([35,36,37,38,39,40,41,42,43,67,68,69,81,82,83,84,85,86,87,88,89,90,91,92,93,108,110,],[-51,-52,-57,-53,-54,-55,-56,71,72,-35,-36,-37,-38,-39,-40,-41,-42,-43,-44,-45,-46,-47,-48,-49,-50,112,113,]),'ELSE':([101,],[108,]),}
_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 = {'program':([0,],[1,]),'empty':([0,27,96,],[2,49,106,]),'basicblock':([0,71,72,112,113,],[3,94,95,115,116,]),'statements':([0,71,72,112,113,],[4,4,4,4,4,]),'statement':([0,4,71,72,112,113,],[5,25,5,5,5,5,]),'const_declaration':([0,4,71,72,112,113,],[6,6,6,6,6,6,]),'var_declaration':([0,4,71,72,112,113,],[7,7,7,7,7,7,]),'assign_statement':([0,4,71,72,112,113,],[8,8,8,8,8,8,]),'print_statement':([0,4,71,72,112,113,],[9,9,9,9,9,9,]),'if_statement':([0,4,71,72,112,113,],[10,10,10,10,10,10,]),'if_else_statement':([0,4,71,72,112,113,],[11,11,11,11,11,11,]),'while_statement':([0,4,71,72,112,113,],[12,12,12,12,12,12,]),'return_statement':([0,4,71,72,112,113,],[13,13,13,13,13,13,]),'func_call':([0,4,71,72,112,113,],[14,14,14,14,14,14,]),'func_statement':([0,4,71,72,112,113,],[15,15,15,15,15,15,]),'location':([0,4,20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,71,72,77,79,112,113,],[19,19,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,19,19,35,35,19,19,]),'expression':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[30,42,43,44,50,53,67,68,69,70,75,81,82,83,84,85,86,87,88,89,90,91,92,50,100,]),'literal':([20,21,22,23,27,29,31,32,33,34,46,55,56,57,58,59,60,61,62,63,64,65,66,77,79,],[36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,36,]),'arguments':([27,],[47,]),'argument':([27,77,],[48,99,]),'typename':([28,45,103,],[52,74,109,]),'parameters':([96,],[104,]),'parameter':([96,111,],[105,114,]),}
_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' -> program","S'",1,None,None,None),
('program -> empty','program',1,'p_program_empty','parser.py',17),
('program -> basicblock','program',1,'p_program','parser.py',24),
('basicblock -> statements','basicblock',1,'p_basicblock','parser.py',31),
('statements -> statements statement','statements',2,'p_statements','parser.py',39),
('statements -> statement','statements',1,'p_statements_1','parser.py',47),
('statement -> const_declaration','statement',1,'p_statement','parser.py',54),
('statement -> var_declaration','statement',1,'p_statement','parser.py',55),
('statement -> assign_statement','statement',1,'p_statement','parser.py',56),
('statement -> print_statement','statement',1,'p_statement','parser.py',57),
('statement -> if_statement','statement',1,'p_statement','parser.py',58),
('statement -> if_else_statement','statement',1,'p_statement','parser.py',59),
('statement -> while_statement','statement',1,'p_statement','parser.py',60),
('statement -> return_statement','statement',1,'p_statement','parser.py',61),
('statement -> func_call','statement',1,'p_statement','parser.py',62),
('statement -> func_statement','statement',1,'p_statement','parser.py',63),
('if_statement -> IF expression LCURL basicblock RCURL','if_statement',5,'p_if_statement','parser.py',70),
('if_else_statement -> IF expression LCURL basicblock RCURL ELSE LCURL basicblock RCURL','if_else_statement',9,'p_if_else_statement','parser.py',77),
('while_statement -> WHILE expression LCURL basicblock RCURL','while_statement',5,'p_while_statement','parser.py',84),
('func_call -> ID LPAREN arguments RPAREN SEMI','func_call',5,'p_func_call','parser.py',91),
('arguments -> argument','arguments',1,'p_arguments','parser.py',98),
('argument -> expression','argument',1,'p_argument','parser.py',105),
('arguments -> arguments COMMA argument','arguments',3,'p_arguments_1','parser.py',112),
('arguments -> empty','arguments',1,'p_arguments_1','parser.py',113),
('parameter -> ID typename','parameter',2,'p_parameter','parser.py',123),
('parameters -> parameter','parameters',1,'p_parameters','parser.py',130),
('parameters -> parameters COMMA parameter','parameters',3,'p_parameters_1','parser.py',137),
('parameters -> empty','parameters',1,'p_parameters_1','parser.py',138),
('func_statement -> FUNC ID typename LPAREN parameters RPAREN LCURL basicblock RCURL','func_statement',9,'p_func_statement','parser.py',148),
('return_statement -> RETURN expression SEMI','return_statement',3,'p_return_statement','parser.py',155),
('const_declaration -> CONST ID ASSIGN expression SEMI','const_declaration',5,'p_const_declaration','parser.py',162),
('var_declaration -> VAR ID typename SEMI','var_declaration',4,'p_var_declaration','parser.py',169),
('var_declaration -> VAR ID typename ASSIGN expression SEMI','var_declaration',6,'p_var_declaration_expr','parser.py',176),
('assign_statement -> location ASSIGN expression SEMI','assign_statement',4,'p_assign_statement','parser.py',183),
('print_statement -> PRINT expression SEMI','print_statement',3,'p_print_statement','parser.py',190),
('expression -> PLUS expression','expression',2,'p_expression_unary','parser.py',197),
('expression -> MINUS expression','expression',2,'p_expression_unary','parser.py',198),
('expression -> NOT expression','expression',2,'p_expression_unary','parser.py',199),
('expression -> expression PLUS expression','expression',3,'p_expression_binary','parser.py',206),
('expression -> expression MINUS expression','expression',3,'p_expression_binary','parser.py',207),
('expression -> expression MUL expression','expression',3,'p_expression_binary','parser.py',208),
('expression -> expression DIVIDE expression','expression',3,'p_expression_binary','parser.py',209),
('expression -> expression GT expression','expression',3,'p_expression_rel','parser.py',216),
('expression -> expression GTE expression','expression',3,'p_expression_rel','parser.py',217),
('expression -> expression LT expression','expression',3,'p_expression_rel','parser.py',218),
('expression -> expression LTE expression','expression',3,'p_expression_rel','parser.py',219),
('expression -> expression EQ expression','expression',3,'p_expression_rel','parser.py',220),
('expression -> expression NEQ expression','expression',3,'p_expression_rel','parser.py',221),
('expression -> expression LAND expression','expression',3,'p_expression_rel','parser.py',222),
('expression -> expression LOR expression','expression',3,'p_expression_rel','parser.py',223),
('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','parser.py',230),
('expression -> location','expression',1,'p_expression_location','parser.py',237),
('expression -> literal','expression',1,'p_expression_literal','parser.py',244),
('literal -> INTEGERNUMBER','literal',1,'p_literal','parser.py',251),
('literal -> FLOATNUMBER','literal',1,'p_literal','parser.py',252),
('literal -> STRING','literal',1,'p_literal','parser.py',253),
('literal -> BOOL','literal',1,'p_literal','parser.py',254),
('location -> ID','location',1,'p_location','parser.py',261),
('typename -> ID','typename',1,'p_typename','parser.py',268),
('empty -> <empty>','empty',0,'p_empty','parser.py',275),
]