-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathparsetab.py
140 lines (126 loc) · 27 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = 'leftPLUSMINUSleftTIMESDIVIDEAND ASSIGN BREAK CBRACELET CLOSEBR COMMA DIVIDE DIVIDE_ASSIGN DO ELSE EQUALS FALSE FLOAT FLOAT_NUMBER FOR ID IF INT LARGE LARGETHAN LESS LESSTHAN LPAREN MINUS MINUSMINUS MINUS_ASSIGN NOTEQUAL NUMBER OBRACELET OPENBR PLUS PLUSPLUS PLUS_ASSIGN RPAREN SEMICOLON STRING TIMES TIMES_ASSIGN TRUE VOID WHILEprogram : declaration_listdeclaration_list : declaration_list declarationdeclaration_list : declarationdeclaration : var_declarationdeclaration : fun_declarationvar_declaration : type_specifier var_decl_list SEMICOLONvar_declaration : type_specifier error SEMICOLONvar_decl_list : var_decl_list COMMA var_decl_idvar_decl_list : var_decl_idvar_decl_id : IDvar_decl_id : ID OPENBR NUMBER CLOSEBRvar_decl_id : ID ASSIGN NUMBER\n | ID ASSIGN FLOAT_NUMBER\n | ID ASSIGN STRINGvar_decl_id : ID ASSIGN IDtype_specifier : INT\n | FLOAT\n | VOID\n | STRINGfun_declaration : type_specifier ID LPAREN params RPAREN statementparams : param_listparams : param_list : param_list COMMA param_type_list param_list : param_type_listparam_type_list : type_specifier param_id_listparam_id_list : param_id_list COMMA param_idparam_id_list : param_idparam_id : IDcompound_stmt : OBRACELET local_declarations statement_list local_declarations CBRACELETlocal_declarations : local_declarations var_declarationlocal_declarations :statement_list : statement statement_liststatement_list :statement : expression_stmt\n | compound_stmt\n | if_stmt\n | while_stmt\n | for_stmt\n | do_while_stmt\n | break_stmtexpression_stmt : expression SEMICOLONexpression_stmt : SEMICOLONdo_while_stmt : do statement while LPAREN expression RPARENdo : DOif_stmt : if LPAREN rel_expression RPAREN statementif_stmt : if LPAREN rel_expression RPAREN statement else statementif : IFelse : ELSE while_stmt : while LPAREN rel_expression RPAREN statementwhile : WHILEfor_stmt : for LPAREN var_declaration rel_expression semicolon expression epsilon RPAREN statementsemicolon : SEMICOLONepsilon :for : FORbreak_stmt : BREAK SEMICOLON expression : var ASSIGN expression\n | var addopration_expression expression\n | var mulopration_expression expression\n | ID PLUSPLUS\n | ID MINUSMINUS\n expression : simple_expression addopration_expression : PLUS_ASSIGN\n | MINUS_ASSIGN mulopration_expression : TIMES_ASSIGN\n | DIVIDE_ASSIGNvar : IDvar : ID OPENBR NUMBER CLOSEBRsimple_expression : simple_expression AND unary_rel_expressionsimple_expression : unary_rel_expressionunary_rel_expression : NOTEQUAL unary_rel_expressionunary_rel_expression : rel_expressionrel_expression : add_expression relop add_expression rel_expression : add_expressionrelop : EQUALS\n | LESS\n | LARGE\n | LARGETHAN\n | LESSTHAN\n | NOTEQUALadd_expression : add_expression addop term add_expression : termaddop : PLUS\n | MINUS\n term : term mulop unary_expression term : unary_expressionmulop : TIMES\n | DIVIDEunary_expression : addop unary_expressionunary_expression : factorfactor : LPAREN expression RPAREN\n | var\n | call\n | constantconstant : TRUE\n | FALSEconstant : NUMBER constant : STRING constant : FLOAT_NUMBER call : ID LPAREN args RPARENargs : args_list\n |args_list : args_list COMMA expression\n | expression'
_lr_action_items = {'INT':([0,2,3,4,5,11,16,18,19,37,42,43,44,45,46,47,48,49,51,52,88,89,92,94,123,124,125,142,143,149,150,151,158,159,162,],[7,7,-3,-4,-5,-2,-6,-7,7,7,-20,-34,-35,-36,-37,-38,-39,-40,-42,-31,-41,7,7,-55,-31,-30,-33,7,-32,-29,-45,-49,-43,-46,-51,]),'FLOAT':([0,2,3,4,5,11,16,18,19,37,42,43,44,45,46,47,48,49,51,52,88,89,92,94,123,124,125,142,143,149,150,151,158,159,162,],[8,8,-3,-4,-5,-2,-6,-7,8,8,-20,-34,-35,-36,-37,-38,-39,-40,-42,-31,-41,8,8,-55,-31,-30,-33,8,-32,-29,-45,-49,-43,-46,-51,]),'VOID':([0,2,3,4,5,11,16,18,19,37,42,43,44,45,46,47,48,49,51,52,88,89,92,94,123,124,125,142,143,149,150,151,158,159,162,],[9,9,-3,-4,-5,-2,-6,-7,9,9,-20,-34,-35,-36,-37,-38,-39,-40,-42,-31,-41,9,9,-55,-31,-30,-33,9,-32,-29,-45,-49,-43,-46,-51,]),'STRING':([0,2,3,4,5,11,16,18,19,21,36,37,41,42,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,86,88,89,90,91,92,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,123,124,125,130,141,142,143,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[10,10,-3,-4,-5,-2,-6,-7,10,32,79,10,79,-20,-34,-35,-36,-37,-38,-39,-40,-42,-31,79,-44,79,79,-82,-83,79,-41,127,79,79,10,-55,79,79,79,-62,-63,-64,-65,79,79,79,-74,-75,-76,-77,-78,-79,79,-86,-87,-31,-30,79,79,79,10,-32,79,79,79,-29,-45,-49,79,-52,79,-48,-43,-46,79,-51,]),'$end':([1,2,3,4,5,11,16,18,42,43,44,45,46,47,48,49,51,88,94,149,150,151,158,159,162,],[0,-1,-3,-4,-5,-2,-6,-7,-20,-34,-35,-36,-37,-38,-39,-40,-42,-41,-55,-29,-45,-49,-43,-46,-51,]),'error':([6,7,8,9,10,126,127,],[13,-16,-17,-18,-19,13,-19,]),'ID':([6,7,8,9,10,16,17,18,21,24,36,39,41,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,86,88,89,90,91,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,124,125,126,127,130,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[14,-16,-17,-18,-19,-6,23,-7,29,35,40,35,40,-34,-35,-36,-37,-38,-39,-40,-42,-31,40,-44,105,105,-82,-83,40,-41,40,105,105,-55,40,40,40,-62,-63,-64,-65,105,105,105,-74,-75,-76,-77,-78,-79,105,-86,-87,-30,40,23,-19,105,40,40,40,40,-29,-45,-49,40,-52,40,-48,-43,-46,40,-51,]),'SEMICOLON':([12,13,14,15,16,18,22,23,29,30,31,32,36,38,40,43,44,45,46,47,48,49,50,51,52,54,57,58,59,60,64,65,66,68,70,71,72,75,76,77,78,79,80,83,84,88,89,94,103,104,105,114,122,124,125,127,132,133,134,135,136,137,138,139,140,144,145,146,149,150,151,155,156,158,159,161,162,],[16,18,-10,-9,-6,-7,-8,-10,-15,-12,-13,-14,51,-11,-66,-34,-35,-36,-37,-38,-39,-40,88,-42,-31,-71,51,94,-91,-61,-44,-96,-69,-73,-81,-85,-89,-92,-93,-94,-95,-97,-98,-59,-60,-41,51,-55,-70,-91,-66,-88,-90,-30,51,-97,-56,-57,-58,-68,-72,-80,-84,-67,-99,51,51,153,-29,-45,-49,51,-48,-43,-46,51,-51,]),'COMMA':([12,14,15,22,23,26,27,29,30,31,32,33,34,35,38,40,54,59,60,65,66,68,70,71,72,75,76,77,78,79,80,81,82,83,84,103,104,105,114,120,121,122,132,133,134,135,136,137,138,139,140,148,],[17,-10,-9,-8,-10,37,-24,-15,-12,-13,-14,39,-27,-28,-11,-66,-71,-91,-61,-96,-69,-73,-81,-85,-89,-92,-93,-94,-95,-97,-98,-23,-26,-59,-60,-70,-91,-66,-88,141,-103,-90,-56,-57,-58,-68,-72,-80,-84,-67,-99,-102,]),'LPAREN':([14,16,18,36,40,41,43,44,45,46,47,48,49,51,52,53,55,56,57,61,62,63,64,67,69,73,74,86,88,89,90,91,94,95,96,97,98,99,100,101,102,105,106,107,108,109,110,111,112,113,115,116,117,124,125,130,131,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[19,-6,-7,41,86,41,-34,-35,-36,-37,-38,-39,-40,-42,-31,90,91,92,41,-47,-50,-54,-44,41,41,-82,-83,41,-41,41,41,41,-55,41,41,41,-62,-63,-64,-65,41,86,41,41,-74,-75,-76,-77,-78,-79,41,-86,-87,-30,41,41,147,41,41,41,41,-29,-45,-49,41,-52,41,-48,-43,-46,41,-51,]),'OPENBR':([14,23,40,105,],[20,20,85,85,]),'ASSIGN':([14,23,40,59,139,],[21,21,-66,95,-67,]),'OBRACELET':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,52,-34,-35,-36,-37,-38,-39,-40,-42,-31,52,-44,-41,52,-55,-30,52,52,52,-29,-45,-49,52,-48,-43,-46,52,-51,]),'BREAK':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,58,-34,-35,-36,-37,-38,-39,-40,-42,-31,58,-44,-41,58,-55,-30,58,58,58,-29,-45,-49,58,-48,-43,-46,58,-51,]),'IF':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,61,-34,-35,-36,-37,-38,-39,-40,-42,-31,61,-44,-41,61,-55,-30,61,61,61,-29,-45,-49,61,-48,-43,-46,61,-51,]),'WHILE':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,93,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,62,-34,-35,-36,-37,-38,-39,-40,-42,-31,62,-44,-41,62,62,-55,-30,62,62,62,-29,-45,-49,62,-48,-43,-46,62,-51,]),'FOR':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,63,-34,-35,-36,-37,-38,-39,-40,-42,-31,63,-44,-41,63,-55,-30,63,63,63,-29,-45,-49,63,-48,-43,-46,63,-51,]),'DO':([16,18,36,43,44,45,46,47,48,49,51,52,57,64,88,89,94,124,125,144,145,149,150,151,155,156,158,159,161,162,],[-6,-7,64,-34,-35,-36,-37,-38,-39,-40,-42,-31,64,-44,-41,64,-55,-30,64,64,64,-29,-45,-49,64,-48,-43,-46,64,-51,]),'NOTEQUAL':([16,18,36,40,41,43,44,45,46,47,48,49,51,52,57,59,64,65,67,68,70,71,72,75,76,77,78,79,80,86,88,89,94,95,96,97,98,99,100,101,102,104,105,114,122,124,125,127,137,138,139,140,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,67,-66,67,-34,-35,-36,-37,-38,-39,-40,-42,-31,67,-91,-44,-96,67,113,-81,-85,-89,-92,-93,-94,-95,-97,-98,67,-41,67,-55,67,67,67,-62,-63,-64,-65,67,-91,-66,-88,-90,-30,67,-97,-80,-84,-67,-99,67,67,67,67,-29,-45,-49,67,-52,67,-48,-43,-46,67,-51,]),'PLUS':([16,18,36,40,41,43,44,45,46,47,48,49,51,52,57,59,64,65,67,68,69,70,71,72,73,74,75,76,77,78,79,80,86,88,89,90,91,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,122,124,125,127,130,136,137,138,139,140,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,73,-66,73,-34,-35,-36,-37,-38,-39,-40,-42,-31,73,-91,-44,-96,73,73,73,-81,-85,-89,-82,-83,-92,-93,-94,-95,-97,-98,73,-41,73,73,73,-55,73,73,73,-62,-63,-64,-65,73,-91,-66,73,73,-74,-75,-76,-77,-78,-79,-88,73,-86,-87,-90,-30,73,-97,73,73,-80,-84,-67,-99,73,73,73,73,-29,-45,-49,73,-52,73,-48,-43,-46,73,-51,]),'MINUS':([16,18,36,40,41,43,44,45,46,47,48,49,51,52,57,59,64,65,67,68,69,70,71,72,73,74,75,76,77,78,79,80,86,88,89,90,91,94,95,96,97,98,99,100,101,102,104,105,106,107,108,109,110,111,112,113,114,115,116,117,122,124,125,127,130,136,137,138,139,140,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,74,-66,74,-34,-35,-36,-37,-38,-39,-40,-42,-31,74,-91,-44,-96,74,74,74,-81,-85,-89,-82,-83,-92,-93,-94,-95,-97,-98,74,-41,74,74,74,-55,74,74,74,-62,-63,-64,-65,74,-91,-66,74,74,-74,-75,-76,-77,-78,-79,-88,74,-86,-87,-90,-30,74,-97,74,74,-80,-84,-67,-99,74,74,74,74,-29,-45,-49,74,-52,74,-48,-43,-46,74,-51,]),'TRUE':([16,18,36,41,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,86,88,89,90,91,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,124,125,130,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,77,77,-34,-35,-36,-37,-38,-39,-40,-42,-31,77,-44,77,77,-82,-83,77,-41,77,77,77,-55,77,77,77,-62,-63,-64,-65,77,77,77,-74,-75,-76,-77,-78,-79,77,-86,-87,-30,77,77,77,77,77,77,-29,-45,-49,77,-52,77,-48,-43,-46,77,-51,]),'FALSE':([16,18,36,41,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,86,88,89,90,91,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,124,125,130,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,78,78,-34,-35,-36,-37,-38,-39,-40,-42,-31,78,-44,78,78,-82,-83,78,-41,78,78,78,-55,78,78,78,-62,-63,-64,-65,78,78,78,-74,-75,-76,-77,-78,-79,78,-86,-87,-30,78,78,78,78,78,78,-29,-45,-49,78,-52,78,-48,-43,-46,78,-51,]),'NUMBER':([16,18,20,21,36,41,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,85,86,88,89,90,91,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,124,125,130,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,28,30,65,65,-34,-35,-36,-37,-38,-39,-40,-42,-31,65,-44,65,65,-82,-83,118,65,-41,65,65,65,-55,65,65,65,-62,-63,-64,-65,65,65,65,-74,-75,-76,-77,-78,-79,65,-86,-87,-30,65,65,65,65,65,65,-29,-45,-49,65,-52,65,-48,-43,-46,65,-51,]),'FLOAT_NUMBER':([16,18,21,36,41,43,44,45,46,47,48,49,51,52,57,64,67,69,73,74,86,88,89,90,91,94,95,96,97,98,99,100,101,102,106,107,108,109,110,111,112,113,115,116,117,124,125,130,141,144,145,147,149,150,151,152,153,155,156,158,159,161,162,],[-6,-7,31,80,80,-34,-35,-36,-37,-38,-39,-40,-42,-31,80,-44,80,80,-82,-83,80,-41,80,80,80,-55,80,80,80,-62,-63,-64,-65,80,80,80,-74,-75,-76,-77,-78,-79,80,-86,-87,-30,80,80,80,80,80,80,-29,-45,-49,80,-52,80,-48,-43,-46,80,-51,]),'CBRACELET':([16,18,43,44,45,46,47,48,49,51,52,88,89,94,123,124,125,142,143,149,150,151,158,159,162,],[-6,-7,-34,-35,-36,-37,-38,-39,-40,-42,-31,-41,-33,-55,-31,-30,-33,149,-32,-29,-45,-49,-43,-46,-51,]),'RPAREN':([19,25,26,27,33,34,35,40,54,59,60,65,66,68,70,71,72,75,76,77,78,79,80,81,82,83,84,86,87,103,104,105,114,119,120,121,122,128,129,132,133,134,135,136,137,138,139,140,148,154,157,160,],[-22,36,-21,-24,-25,-27,-28,-66,-71,-91,-61,-96,-69,-73,-81,-85,-89,-92,-93,-94,-95,-97,-98,-23,-26,-59,-60,-101,122,-70,-91,-66,-88,140,-100,-103,-90,144,145,-56,-57,-58,-68,-72,-80,-84,-67,-99,-102,158,-53,161,]),'CLOSEBR':([28,118,],[38,139,]),'PLUSPLUS':([40,],[83,]),'MINUSMINUS':([40,],[84,]),'PLUS_ASSIGN':([40,59,139,],[-66,98,-67,]),'MINUS_ASSIGN':([40,59,139,],[-66,99,-67,]),'TIMES_ASSIGN':([40,59,139,],[-66,100,-67,]),'DIVIDE_ASSIGN':([40,59,139,],[-66,101,-67,]),'TIMES':([40,59,65,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,116,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,116,-84,-67,-99,]),'DIVIDE':([40,59,65,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,117,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,117,-84,-67,-99,]),'EQUALS':([40,59,65,68,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,108,-81,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,-80,-84,-67,-99,]),'LESS':([40,59,65,68,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,109,-81,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,-80,-84,-67,-99,]),'LARGE':([40,59,65,68,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,110,-81,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,-80,-84,-67,-99,]),'LARGETHAN':([40,59,65,68,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,111,-81,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,-80,-84,-67,-99,]),'LESSTHAN':([40,59,65,68,70,71,72,75,76,77,78,79,80,104,105,114,122,127,137,138,139,140,],[-66,-91,-96,112,-81,-85,-89,-92,-93,-94,-95,-97,-98,-91,-66,-88,-90,-97,-80,-84,-67,-99,]),'AND':([40,54,59,60,65,66,68,70,71,72,75,76,77,78,79,80,103,104,105,114,122,127,135,136,137,138,139,140,],[-66,-71,-91,102,-96,-69,-73,-81,-85,-89,-92,-93,-94,-95,-97,-98,-70,-91,-66,-88,-90,-97,-68,-72,-80,-84,-67,-99,]),'ELSE':([43,44,45,46,47,48,49,51,88,94,149,150,151,158,159,162,],[-34,-35,-36,-37,-38,-39,-40,-42,-41,-55,-29,156,-49,-43,-46,-51,]),}
_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,]),'declaration_list':([0,],[2,]),'declaration':([0,2,],[3,11,]),'var_declaration':([0,2,89,92,142,],[4,4,124,130,124,]),'fun_declaration':([0,2,],[5,5,]),'type_specifier':([0,2,19,37,89,92,142,],[6,6,24,24,126,126,126,]),'var_decl_list':([6,126,],[12,12,]),'var_decl_id':([6,17,126,],[15,22,15,]),'params':([19,],[25,]),'param_list':([19,],[26,]),'param_type_list':([19,37,],[27,81,]),'param_id_list':([24,],[33,]),'param_id':([24,39,],[34,82,]),'statement':([36,57,89,125,144,145,155,161,],[42,93,125,125,150,151,159,162,]),'expression_stmt':([36,57,89,125,144,145,155,161,],[43,43,43,43,43,43,43,43,]),'compound_stmt':([36,57,89,125,144,145,155,161,],[44,44,44,44,44,44,44,44,]),'if_stmt':([36,57,89,125,144,145,155,161,],[45,45,45,45,45,45,45,45,]),'while_stmt':([36,57,89,125,144,145,155,161,],[46,46,46,46,46,46,46,46,]),'for_stmt':([36,57,89,125,144,145,155,161,],[47,47,47,47,47,47,47,47,]),'do_while_stmt':([36,57,89,125,144,145,155,161,],[48,48,48,48,48,48,48,48,]),'break_stmt':([36,57,89,125,144,145,155,161,],[49,49,49,49,49,49,49,49,]),'expression':([36,41,57,86,89,95,96,97,125,141,144,145,147,152,155,161,],[50,87,50,121,50,132,133,134,50,148,50,50,154,157,50,50,]),'if':([36,57,89,125,144,145,155,161,],[53,53,53,53,53,53,53,53,]),'rel_expression':([36,41,57,67,86,89,90,91,95,96,97,102,125,130,141,144,145,147,152,155,161,],[54,54,54,54,54,54,128,129,54,54,54,54,54,146,54,54,54,54,54,54,54,]),'while':([36,57,89,93,125,144,145,155,161,],[55,55,55,131,55,55,55,55,55,]),'for':([36,57,89,125,144,145,155,161,],[56,56,56,56,56,56,56,56,]),'do':([36,57,89,125,144,145,155,161,],[57,57,57,57,57,57,57,57,]),'var':([36,41,57,67,69,86,89,90,91,95,96,97,102,106,107,115,125,130,141,144,145,147,152,155,161,],[59,59,59,104,104,59,59,104,104,59,59,59,104,104,104,104,59,104,59,59,59,59,59,59,59,]),'simple_expression':([36,41,57,86,89,95,96,97,125,141,144,145,147,152,155,161,],[60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,60,]),'unary_rel_expression':([36,41,57,67,86,89,95,96,97,102,125,141,144,145,147,152,155,161,],[66,66,66,103,66,66,66,66,66,135,66,66,66,66,66,66,66,66,]),'add_expression':([36,41,57,67,86,89,90,91,95,96,97,102,106,125,130,141,144,145,147,152,155,161,],[68,68,68,68,68,68,68,68,68,68,68,68,136,68,68,68,68,68,68,68,68,68,]),'addop':([36,41,57,67,68,69,86,89,90,91,95,96,97,102,106,107,115,125,130,136,141,144,145,147,152,155,161,],[69,69,69,69,107,69,69,69,69,69,69,69,69,69,69,69,69,69,69,107,69,69,69,69,69,69,69,]),'term':([36,41,57,67,86,89,90,91,95,96,97,102,106,107,125,130,141,144,145,147,152,155,161,],[70,70,70,70,70,70,70,70,70,70,70,70,70,137,70,70,70,70,70,70,70,70,70,]),'unary_expression':([36,41,57,67,69,86,89,90,91,95,96,97,102,106,107,115,125,130,141,144,145,147,152,155,161,],[71,71,71,71,114,71,71,71,71,71,71,71,71,71,71,138,71,71,71,71,71,71,71,71,71,]),'factor':([36,41,57,67,69,86,89,90,91,95,96,97,102,106,107,115,125,130,141,144,145,147,152,155,161,],[72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,]),'call':([36,41,57,67,69,86,89,90,91,95,96,97,102,106,107,115,125,130,141,144,145,147,152,155,161,],[75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,]),'constant':([36,41,57,67,69,86,89,90,91,95,96,97,102,106,107,115,125,130,141,144,145,147,152,155,161,],[76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,]),'local_declarations':([52,123,],[89,142,]),'addopration_expression':([59,],[96,]),'mulopration_expression':([59,],[97,]),'relop':([68,],[106,]),'mulop':([70,137,],[115,115,]),'args':([86,],[119,]),'args_list':([86,],[120,]),'statement_list':([89,125,],[123,143,]),'semicolon':([146,],[152,]),'else':([150,],[155,]),'epsilon':([157,],[160,]),}
_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 -> declaration_list','program',1,'p_program','pp(2).py',308),
('declaration_list -> declaration_list declaration','declaration_list',2,'p_declaration_list_Loop','pp(2).py',314),
('declaration_list -> declaration','declaration_list',1,'p_declaration_list','pp(2).py',320),
('declaration -> var_declaration','declaration',1,'p_declaration_var','pp(2).py',326),
('declaration -> fun_declaration','declaration',1,'p_declaration_fun','pp(2).py',331),
('var_declaration -> type_specifier var_decl_list SEMICOLON','var_declaration',3,'p_var_declaration','pp(2).py',337),
('var_declaration -> type_specifier error SEMICOLON','var_declaration',3,'p_var_declaration_error','pp(2).py',346),
('var_decl_list -> var_decl_list COMMA var_decl_id','var_decl_list',3,'p_var_decl_list_loop','pp(2).py',351),
('var_decl_list -> var_decl_id','var_decl_list',1,'p_var_decl_list','pp(2).py',356),
('var_decl_id -> ID','var_decl_id',1,'p_var_decl_id','pp(2).py',362),
('var_decl_id -> ID OPENBR NUMBER CLOSEBR','var_decl_id',4,'p_var_decl_array','pp(2).py',368),
('var_decl_id -> ID ASSIGN NUMBER','var_decl_id',3,'p_var_decl_ids','pp(2).py',373),
('var_decl_id -> ID ASSIGN FLOAT_NUMBER','var_decl_id',3,'p_var_decl_ids','pp(2).py',374),
('var_decl_id -> ID ASSIGN STRING','var_decl_id',3,'p_var_decl_ids','pp(2).py',375),
('var_decl_id -> ID ASSIGN ID','var_decl_id',3,'p_var_decl_assign_ids','pp(2).py',383),
('type_specifier -> INT','type_specifier',1,'p_type_specifier','pp(2).py',393),
('type_specifier -> FLOAT','type_specifier',1,'p_type_specifier','pp(2).py',394),
('type_specifier -> VOID','type_specifier',1,'p_type_specifier','pp(2).py',395),
('type_specifier -> STRING','type_specifier',1,'p_type_specifier','pp(2).py',396),
('fun_declaration -> type_specifier ID LPAREN params RPAREN statement','fun_declaration',6,'p_fun_declaration','pp(2).py',402),
('params -> param_list','params',1,'p_params','pp(2).py',409),
('params -> <empty>','params',0,'p_params_eps','pp(2).py',414),
('param_list -> param_list COMMA param_type_list','param_list',3,'p_param_list__loop','pp(2).py',419),
('param_list -> param_type_list','param_list',1,'p_param_list','pp(2).py',424),
('param_type_list -> type_specifier param_id_list','param_type_list',2,'p_param_type_list','pp(2).py',429),
('param_id_list -> param_id_list COMMA param_id','param_id_list',3,'p_param_id_list_loop','pp(2).py',434),
('param_id_list -> param_id','param_id_list',1,'p_param_id_list','pp(2).py',439),
('param_id -> ID','param_id',1,'p_param_id','pp(2).py',444),
('compound_stmt -> OBRACELET local_declarations statement_list local_declarations CBRACELET','compound_stmt',5,'p_compound_stmt','pp(2).py',449),
('local_declarations -> local_declarations var_declaration','local_declarations',2,'p_local_declarations','pp(2).py',455),
('local_declarations -> <empty>','local_declarations',0,'p_local_declarations_eps','pp(2).py',460),
('statement_list -> statement statement_list','statement_list',2,'p_statement_list','pp(2).py',465),
('statement_list -> <empty>','statement_list',0,'p_statement_list_eps','pp(2).py',470),
('statement -> expression_stmt','statement',1,'p_statement','pp(2).py',475),
('statement -> compound_stmt','statement',1,'p_statement','pp(2).py',476),
('statement -> if_stmt','statement',1,'p_statement','pp(2).py',477),
('statement -> while_stmt','statement',1,'p_statement','pp(2).py',478),
('statement -> for_stmt','statement',1,'p_statement','pp(2).py',479),
('statement -> do_while_stmt','statement',1,'p_statement','pp(2).py',480),
('statement -> break_stmt','statement',1,'p_statement','pp(2).py',481),
('expression_stmt -> expression SEMICOLON','expression_stmt',2,'p_expression_stmt','pp(2).py',486),
('expression_stmt -> SEMICOLON','expression_stmt',1,'p_expression_stmt_eps','pp(2).py',492),
('do_while_stmt -> do statement while LPAREN expression RPAREN','do_while_stmt',6,'p_do_while_stmt','pp(2).py',497),
('do -> DO','do',1,'p_do','pp(2).py',503),
('if_stmt -> if LPAREN rel_expression RPAREN statement','if_stmt',5,'p_if_stmt','pp(2).py',511),
('if_stmt -> if LPAREN rel_expression RPAREN statement else statement','if_stmt',7,'p_elif_stmt','pp(2).py',518),
('if -> IF','if',1,'p_if','pp(2).py',527),
('else -> ELSE','else',1,'p_else','pp(2).py',534),
('while_stmt -> while LPAREN rel_expression RPAREN statement','while_stmt',5,'p_while_stmt','pp(2).py',542),
('while -> WHILE','while',1,'p_while','pp(2).py',549),
('for_stmt -> for LPAREN var_declaration rel_expression semicolon expression epsilon RPAREN statement','for_stmt',9,'p_for_stmt','pp(2).py',560),
('semicolon -> SEMICOLON','semicolon',1,'p_semicolon','pp(2).py',575),
('epsilon -> <empty>','epsilon',0,'p_epsilon','pp(2).py',581),
('for -> FOR','for',1,'p_for','pp(2).py',587),
('break_stmt -> BREAK SEMICOLON','break_stmt',2,'p_break_stmt','pp(2).py',593),
('expression -> var ASSIGN expression','expression',3,'p_expression','pp(2).py',603),
('expression -> var addopration_expression expression','expression',3,'p_expression','pp(2).py',604),
('expression -> var mulopration_expression expression','expression',3,'p_expression','pp(2).py',605),
('expression -> ID PLUSPLUS','expression',2,'p_expression','pp(2).py',606),
('expression -> ID MINUSMINUS','expression',2,'p_expression','pp(2).py',607),
('expression -> simple_expression','expression',1,'p_expression_simple','pp(2).py',619),
('addopration_expression -> PLUS_ASSIGN','addopration_expression',1,'p_addopration_expression','pp(2).py',625),
('addopration_expression -> MINUS_ASSIGN','addopration_expression',1,'p_addopration_expression','pp(2).py',626),
('mulopration_expression -> TIMES_ASSIGN','mulopration_expression',1,'p_mulopration_expression','pp(2).py',632),
('mulopration_expression -> DIVIDE_ASSIGN','mulopration_expression',1,'p_mulopration_expression','pp(2).py',633),
('var -> ID','var',1,'p_var','pp(2).py',639),
('var -> ID OPENBR NUMBER CLOSEBR','var',4,'p_var_Array','pp(2).py',646),
('simple_expression -> simple_expression AND unary_rel_expression','simple_expression',3,'p_simple_expression','pp(2).py',653),
('simple_expression -> unary_rel_expression','simple_expression',1,'p_simple_expression_unary','pp(2).py',659),
('unary_rel_expression -> NOTEQUAL unary_rel_expression','unary_rel_expression',2,'p_note_unary_rel_expression','pp(2).py',665),
('unary_rel_expression -> rel_expression','unary_rel_expression',1,'p_unary_rel_expression','pp(2).py',671),
('rel_expression -> add_expression relop add_expression','rel_expression',3,'p_rel_expression','pp(2).py',677),
('rel_expression -> add_expression','rel_expression',1,'p_rel_expression_add','pp(2).py',687),
('relop -> EQUALS','relop',1,'p_relop','pp(2).py',693),
('relop -> LESS','relop',1,'p_relop','pp(2).py',694),
('relop -> LARGE','relop',1,'p_relop','pp(2).py',695),
('relop -> LARGETHAN','relop',1,'p_relop','pp(2).py',696),
('relop -> LESSTHAN','relop',1,'p_relop','pp(2).py',697),
('relop -> NOTEQUAL','relop',1,'p_relop','pp(2).py',698),
('add_expression -> add_expression addop term','add_expression',3,'p_add_expression','pp(2).py',704),
('add_expression -> term','add_expression',1,'p_add_expression_term','pp(2).py',711),
('addop -> PLUS','addop',1,'p_addop','pp(2).py',717),
('addop -> MINUS','addop',1,'p_addop','pp(2).py',718),
('term -> term mulop unary_expression','term',3,'p_term','pp(2).py',725),
('term -> unary_expression','term',1,'p_term_unary','pp(2).py',731),
('mulop -> TIMES','mulop',1,'p_mulop','pp(2).py',737),
('mulop -> DIVIDE','mulop',1,'p_mulop','pp(2).py',738),
('unary_expression -> addop unary_expression','unary_expression',2,'p_unary_expression','pp(2).py',744),
('unary_expression -> factor','unary_expression',1,'p_unary_expression_fact','pp(2).py',750),
('factor -> LPAREN expression RPAREN','factor',3,'p_factor','pp(2).py',756),
('factor -> var','factor',1,'p_factor','pp(2).py',757),
('factor -> call','factor',1,'p_factor','pp(2).py',758),
('factor -> constant','factor',1,'p_factor','pp(2).py',759),
('constant -> TRUE','constant',1,'p_constant','pp(2).py',768),
('constant -> FALSE','constant',1,'p_constant','pp(2).py',769),
('constant -> NUMBER','constant',1,'p_constant_number','pp(2).py',775),
('constant -> STRING','constant',1,'p_constant_string','pp(2).py',781),
('constant -> FLOAT_NUMBER','constant',1,'p_constant_float_number','pp(2).py',787),
('call -> ID LPAREN args RPAREN','call',4,'p_call','pp(2).py',792),
('args -> args_list','args',1,'p_args','pp(2).py',799),
('args -> <empty>','args',0,'p_args','pp(2).py',800),
('args_list -> args_list COMMA expression','args_list',3,'p_args_list','pp(2).py',805),
('args_list -> expression','args_list',1,'p_args_list','pp(2).py',806),
]