-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparsetab.py
More file actions
61 lines (54 loc) · 10.5 KB
/
parsetab.py
File metadata and controls
61 lines (54 loc) · 10.5 KB
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
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = 'ASSIGN COLON DIVIDE ELSE EQUALS FLOAT FOR FUN GREATERTHAN ID IF INT LBRACE LESSTHAN LPAREN MINUS PLUS RBRACE RPAREN SEMICOLON STRING TIMES VAR WHILE char double float int\n program : statement\n | program statement\n \n statement : var_declaration\n | expression SEMICOLON\n | if_statement\n | while_loop\n | for_loop\n | function_definition\n \n var_declaration : VAR ID ASSIGN expression\n | VAR ID COLON type ASSIGN expression\n \n type : int\n | float\n | char\n | double\n \n expression : expression PLUS expression\n | expression MINUS expression\n | expression TIMES expression\n | expression DIVIDE expression\n | expression LESSTHAN expression\n | expression GREATERTHAN expression\n | expression EQUALS expression\n | LPAREN expression RPAREN\n | INT\n | FLOAT\n | STRING\n | ID\n \n if_statement : IF LPAREN expression RPAREN LBRACE program RBRACE\n | IF LPAREN expression RPAREN LBRACE program RBRACE ELSE LBRACE program RBRACE\n \n for_loop : FOR LPAREN var_declaration SEMICOLON expression SEMICOLON expression RPAREN LBRACE program RBRACE\n \n while_loop : WHILE LPAREN expression RPAREN LBRACE program RBRACE\n \n function_definition : FUN ID LPAREN RPAREN LBRACE program RBRACE\n '
_lr_action_items = {'VAR':([0,1,2,3,5,6,7,8,10,12,13,14,19,20,32,34,35,36,37,38,39,40,43,48,59,60,62,63,64,65,67,68,69,71,74,75,76,77,78,79,],[9,9,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,9,-15,-16,-17,-18,-19,-20,-21,-22,-9,9,9,9,-10,9,9,9,-27,-30,-31,9,9,9,9,-28,-29,]),'LPAREN':([0,1,2,3,5,6,7,8,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,30,31,33,34,35,36,37,38,39,40,41,43,48,56,58,59,60,62,63,64,65,66,67,68,69,71,74,75,76,77,78,79,],[11,11,-1,-3,-5,-6,-7,-8,-26,11,-23,-24,-25,30,31,32,-2,-4,11,11,11,11,11,11,11,11,11,47,-15,-16,-17,-18,-19,-20,-21,11,-22,-9,11,11,11,11,11,-10,11,11,11,11,-27,-30,-31,11,11,11,11,-28,-29,]),'INT':([0,1,2,3,5,6,7,8,10,11,12,13,14,19,20,21,22,23,24,25,26,27,30,31,34,35,36,37,38,39,40,41,43,48,56,58,59,60,62,63,64,65,66,67,68,69,71,74,75,76,77,78,79,],[12,12,-1,-3,-5,-6,-7,-8,-26,12,-23,-24,-25,-2,-4,12,12,12,12,12,12,12,12,12,-15,-16,-17,-18,-19,-20,-21,12,-22,-9,12,12,12,12,12,-10,12,12,12,12,-27,-30,-31,12,12,12,12,-28,-29,]),'FLOAT':([0,1,2,3,5,6,7,8,10,11,12,13,14,19,20,21,22,23,24,25,26,27,30,31,34,35,36,37,38,39,40,41,43,48,56,58,59,60,62,63,64,65,66,67,68,69,71,74,75,76,77,78,79,],[13,13,-1,-3,-5,-6,-7,-8,-26,13,-23,-24,-25,-2,-4,13,13,13,13,13,13,13,13,13,-15,-16,-17,-18,-19,-20,-21,13,-22,-9,13,13,13,13,13,-10,13,13,13,13,-27,-30,-31,13,13,13,13,-28,-29,]),'STRING':([0,1,2,3,5,6,7,8,10,11,12,13,14,19,20,21,22,23,24,25,26,27,30,31,34,35,36,37,38,39,40,41,43,48,56,58,59,60,62,63,64,65,66,67,68,69,71,74,75,76,77,78,79,],[14,14,-1,-3,-5,-6,-7,-8,-26,14,-23,-24,-25,-2,-4,14,14,14,14,14,14,14,14,14,-15,-16,-17,-18,-19,-20,-21,14,-22,-9,14,14,14,14,14,-10,14,14,14,14,-27,-30,-31,14,14,14,14,-28,-29,]),'ID':([0,1,2,3,5,6,7,8,9,10,11,12,13,14,18,19,20,21,22,23,24,25,26,27,30,31,34,35,36,37,38,39,40,41,43,48,56,58,59,60,62,63,64,65,66,67,68,69,71,74,75,76,77,78,79,],[10,10,-1,-3,-5,-6,-7,-8,28,-26,10,-23,-24,-25,33,-2,-4,10,10,10,10,10,10,10,10,10,-15,-16,-17,-18,-19,-20,-21,10,-22,-9,10,10,10,10,10,-10,10,10,10,10,-27,-30,-31,10,10,10,10,-28,-29,]),'IF':([0,1,2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,59,60,62,63,64,65,67,68,69,71,74,75,76,77,78,79,],[15,15,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,15,15,15,-10,15,15,15,-27,-30,-31,15,15,15,15,-28,-29,]),'WHILE':([0,1,2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,59,60,62,63,64,65,67,68,69,71,74,75,76,77,78,79,],[16,16,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,16,16,16,-10,16,16,16,-27,-30,-31,16,16,16,16,-28,-29,]),'FOR':([0,1,2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,59,60,62,63,64,65,67,68,69,71,74,75,76,77,78,79,],[17,17,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,17,17,17,-10,17,17,17,-27,-30,-31,17,17,17,17,-28,-29,]),'FUN':([0,1,2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,59,60,62,63,64,65,67,68,69,71,74,75,76,77,78,79,],[18,18,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,18,18,18,-10,18,18,18,-27,-30,-31,18,18,18,18,-28,-29,]),'$end':([1,2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,63,68,69,71,78,79,],[0,-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,-10,-27,-30,-31,-28,-29,]),'RBRACE':([2,3,5,6,7,8,10,12,13,14,19,20,34,35,36,37,38,39,40,43,48,63,64,65,67,68,69,71,76,77,78,79,],[-1,-3,-5,-6,-7,-8,-26,-23,-24,-25,-2,-4,-15,-16,-17,-18,-19,-20,-21,-22,-9,-10,68,69,71,-27,-30,-31,78,79,-28,-29,]),'SEMICOLON':([4,10,12,13,14,34,35,36,37,38,39,40,43,46,48,61,63,],[20,-26,-23,-24,-25,-15,-16,-17,-18,-19,-20,-21,-22,56,-9,66,-10,]),'PLUS':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[21,-26,-23,-24,-25,21,21,21,21,21,21,21,21,-22,21,21,21,21,21,21,]),'MINUS':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[22,-26,-23,-24,-25,22,22,22,22,22,22,22,22,-22,22,22,22,22,22,22,]),'TIMES':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[23,-26,-23,-24,-25,23,23,23,23,23,23,23,23,-22,23,23,23,23,23,23,]),'DIVIDE':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[24,-26,-23,-24,-25,24,24,24,24,24,24,24,24,-22,24,24,24,24,24,24,]),'LESSTHAN':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[25,-26,-23,-24,-25,25,25,25,25,25,25,25,25,-22,25,25,25,25,25,25,]),'GREATERTHAN':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[26,-26,-23,-24,-25,26,26,26,26,26,26,26,26,-22,26,26,26,26,26,26,]),'EQUALS':([4,10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,48,61,63,70,],[27,-26,-23,-24,-25,27,27,27,27,27,27,27,27,-22,27,27,27,27,27,27,]),'RPAREN':([10,12,13,14,29,34,35,36,37,38,39,40,43,44,45,47,70,],[-26,-23,-24,-25,43,-15,-16,-17,-18,-19,-20,-21,-22,54,55,57,73,]),'ASSIGN':([28,49,50,51,52,53,],[41,58,-11,-12,-13,-14,]),'COLON':([28,],[42,]),'int':([42,],[50,]),'float':([42,],[51,]),'char':([42,],[52,]),'double':([42,],[53,]),'LBRACE':([54,55,57,72,73,],[59,60,62,74,75,]),'ELSE':([68,],[72,]),}
_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,59,60,62,74,75,],[1,64,65,67,76,77,]),'statement':([0,1,59,60,62,64,65,67,74,75,76,77,],[2,19,2,2,2,19,19,19,2,2,19,19,]),'var_declaration':([0,1,32,59,60,62,64,65,67,74,75,76,77,],[3,3,46,3,3,3,3,3,3,3,3,3,3,]),'expression':([0,1,11,21,22,23,24,25,26,27,30,31,41,56,58,59,60,62,64,65,66,67,74,75,76,77,],[4,4,29,34,35,36,37,38,39,40,44,45,48,61,63,4,4,4,4,4,70,4,4,4,4,4,]),'if_statement':([0,1,59,60,62,64,65,67,74,75,76,77,],[5,5,5,5,5,5,5,5,5,5,5,5,]),'while_loop':([0,1,59,60,62,64,65,67,74,75,76,77,],[6,6,6,6,6,6,6,6,6,6,6,6,]),'for_loop':([0,1,59,60,62,64,65,67,74,75,76,77,],[7,7,7,7,7,7,7,7,7,7,7,7,]),'function_definition':([0,1,59,60,62,64,65,67,74,75,76,77,],[8,8,8,8,8,8,8,8,8,8,8,8,]),'type':([42,],[49,]),}
_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 -> statement','program',1,'p_program','finalest.py',97),
('program -> program statement','program',2,'p_program','finalest.py',98),
('statement -> var_declaration','statement',1,'p_statement','finalest.py',104),
('statement -> expression SEMICOLON','statement',2,'p_statement','finalest.py',105),
('statement -> if_statement','statement',1,'p_statement','finalest.py',106),
('statement -> while_loop','statement',1,'p_statement','finalest.py',107),
('statement -> for_loop','statement',1,'p_statement','finalest.py',108),
('statement -> function_definition','statement',1,'p_statement','finalest.py',109),
('var_declaration -> VAR ID ASSIGN expression','var_declaration',4,'p_var_declaration','finalest.py',115),
('var_declaration -> VAR ID COLON type ASSIGN expression','var_declaration',6,'p_var_declaration','finalest.py',116),
('type -> int','type',1,'p_type','finalest.py',122),
('type -> float','type',1,'p_type','finalest.py',123),
('type -> char','type',1,'p_type','finalest.py',124),
('type -> double','type',1,'p_type','finalest.py',125),
('expression -> expression PLUS expression','expression',3,'p_expression','finalest.py',131),
('expression -> expression MINUS expression','expression',3,'p_expression','finalest.py',132),
('expression -> expression TIMES expression','expression',3,'p_expression','finalest.py',133),
('expression -> expression DIVIDE expression','expression',3,'p_expression','finalest.py',134),
('expression -> expression LESSTHAN expression','expression',3,'p_expression','finalest.py',135),
('expression -> expression GREATERTHAN expression','expression',3,'p_expression','finalest.py',136),
('expression -> expression EQUALS expression','expression',3,'p_expression','finalest.py',137),
('expression -> LPAREN expression RPAREN','expression',3,'p_expression','finalest.py',138),
('expression -> INT','expression',1,'p_expression','finalest.py',139),
('expression -> FLOAT','expression',1,'p_expression','finalest.py',140),
('expression -> STRING','expression',1,'p_expression','finalest.py',141),
('expression -> ID','expression',1,'p_expression','finalest.py',142),
('if_statement -> IF LPAREN expression RPAREN LBRACE program RBRACE','if_statement',7,'p_if_statement','finalest.py',148),
('if_statement -> IF LPAREN expression RPAREN LBRACE program RBRACE ELSE LBRACE program RBRACE','if_statement',11,'p_if_statement','finalest.py',149),
('for_loop -> FOR LPAREN var_declaration SEMICOLON expression SEMICOLON expression RPAREN LBRACE program RBRACE','for_loop',11,'p_for_loop','finalest.py',155),
('while_loop -> WHILE LPAREN expression RPAREN LBRACE program RBRACE','while_loop',7,'p_while_loop','finalest.py',162),
('function_definition -> FUN ID LPAREN RPAREN LBRACE program RBRACE','function_definition',7,'p_function_definition','finalest.py',168),
]