-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathparsetab.py
83 lines (76 loc) · 10.7 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
# parsetab.py
# This file is automatically generated. Do not edit.
_tabversion = '3.8'
_lr_method = 'LALR'
_lr_signature = 'C007E812E299DB677240C4F728368190'
_lr_action_items = {'leq_token':([41,42,44,49,51,52,75,87,88,90,92,93,],[-42,-45,67,-48,-51,-52,-41,-43,-44,-53,-49,-50,]),'geq_token':([41,42,44,49,51,52,75,87,88,90,92,93,],[-42,-45,69,-48,-51,-52,-41,-43,-44,-53,-49,-50,]),'rparent_token':([41,42,49,51,52,74,75,87,88,90,92,93,],[-42,-45,-48,-51,-52,90,-41,-43,-44,-53,-49,-50,]),'become_token':([27,],[55,]),'les_token':([41,42,44,49,51,52,75,87,88,90,92,93,],[-42,-45,71,-48,-51,-52,-41,-43,-44,-53,-49,-50,]),'then_token':([41,42,49,51,52,54,66,75,87,88,89,90,92,93,],[-42,-45,-48,-51,-52,82,-33,-41,-43,-44,-34,-53,-49,-50,]),'minus_token':([19,22,33,42,43,45,49,51,52,55,67,68,69,70,71,72,73,90,92,93,],[47,47,47,65,47,47,-48,-51,-52,47,-37,-38,-39,-35,-36,-40,47,-53,-49,-50,]),'while_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,19,19,-54,-7,-3,19,19,19,-54,-11,-14,19,-54,-54,-13,]),'const_token':([0,40,106,],[1,1,1,]),'divide_token':([49,51,52,90,],[78,-51,-52,-53,]),'begin_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,20,20,-54,-7,-3,20,20,20,-54,-11,-14,20,-54,-54,-13,]),'var_token':([0,3,4,40,61,106,],[-54,-4,8,-54,-3,-54,]),'semicolom_token':([3,4,7,9,13,14,15,16,17,18,20,21,23,24,25,26,28,29,31,34,36,37,39,40,41,42,49,51,52,53,56,57,58,59,60,61,63,75,76,79,82,83,84,86,87,88,90,91,92,93,94,95,96,97,99,100,102,103,104,105,106,107,108,109,],[-4,-54,-54,-8,-12,-54,-54,-54,40,-20,-54,-15,-22,-21,-16,-2,-17,-18,-19,59,-10,61,-6,-54,-42,-45,-48,-51,-52,79,-31,-24,-32,-7,-54,-3,86,-41,-54,-54,-54,-23,-9,-54,-43,-44,-53,-30,-49,-50,79,-25,-28,-54,-11,-14,-54,-5,106,-29,-54,108,-54,-13,]),'plus_token':([19,22,33,42,43,45,49,51,52,55,67,68,69,70,71,72,73,90,92,93,],[50,50,50,64,50,50,-48,-51,-52,50,-37,-38,-39,-35,-36,-40,50,-53,-49,-50,]),'if_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,22,22,-54,-7,-3,22,22,22,-54,-11,-14,22,-54,-54,-13,]),'period_token':([0,3,4,5,7,9,13,14,18,21,23,24,25,26,28,29,31,41,42,49,51,52,56,57,58,59,61,75,76,82,83,86,87,88,90,91,92,93,95,96,99,100,102,105,108,109,],[-54,-4,-54,10,-54,-8,-12,-54,-20,-15,-22,-21,-16,-2,-17,-18,-19,-42,-45,-48,-51,-52,-31,-24,-32,-7,-3,-41,-54,-54,-23,-54,-43,-44,-53,-30,-49,-50,-25,-28,-11,-14,-54,-29,-54,-13,]),'$end':([2,10,],[0,-1,]),'end_token':([18,20,21,23,24,25,28,29,31,41,42,49,51,52,53,56,57,58,75,76,79,80,81,82,83,87,88,90,91,92,93,94,95,96,101,102,105,],[-20,-54,-15,-22,-21,-16,-17,-18,-19,-42,-45,-48,-51,-52,-54,-31,-24,-32,-41,-54,-54,95,-27,-54,-23,-43,-44,-53,-30,-49,-50,-54,-25,-28,-26,-54,-29,]),'odd_token':([19,22,],[43,43,]),'number_token':([11,19,22,33,43,45,46,47,50,55,64,65,67,68,69,70,71,72,73,77,78,85,],[16,52,52,52,52,52,52,-47,-46,52,52,52,-37,-38,-39,-35,-36,-40,52,52,52,97,]),'grt_token':([41,42,44,49,51,52,75,87,88,90,92,93,],[-42,-45,68,-48,-51,-52,-41,-43,-44,-53,-49,-50,]),'comma_token':([15,16,60,97,],[35,38,35,38,]),'lparent_token':([19,22,33,43,45,46,47,50,55,64,65,67,68,69,70,71,72,73,77,78,],[45,45,45,45,45,45,-47,-46,45,45,45,-37,-38,-39,-35,-36,-40,45,45,45,]),'neq_token':([41,42,44,49,51,52,75,87,88,90,92,93,],[-42,-45,72,-48,-51,-52,-41,-43,-44,-53,-49,-50,]),'ident_token':([0,1,3,4,7,8,9,12,13,14,19,20,22,30,32,33,35,38,40,43,45,46,47,50,55,59,61,64,65,67,68,69,70,71,72,73,76,77,78,79,82,86,98,99,100,102,106,108,109,],[-54,6,-4,-54,-54,15,-8,17,-12,27,51,27,51,56,57,51,60,62,-54,51,51,51,-47,-46,51,-7,-3,51,51,-37,-38,-39,-35,-36,-40,51,27,51,51,27,27,-54,104,-11,-14,27,-54,-54,-13,]),'do_token':([41,42,48,49,51,52,66,75,87,88,89,90,92,93,],[-42,-45,76,-48,-51,-52,-33,-41,-43,-44,-34,-53,-49,-50,]),'read_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,30,30,-54,-7,-3,30,30,30,-54,-11,-14,30,-54,-54,-13,]),'mul_token':([49,51,52,90,],[77,-51,-52,-53,]),'proc_token':([0,3,4,7,9,40,59,61,86,106,108,],[-54,-4,-54,12,-8,-54,-7,-3,98,-54,98,]),'eql_token':([6,41,42,44,49,51,52,62,75,87,88,90,92,93,],[11,-42,-45,70,-48,-51,-52,85,-41,-43,-44,-53,-49,-50,]),'call_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,32,32,-54,-7,-3,32,32,32,-54,-11,-14,32,-54,-54,-13,]),'write_token':([0,3,4,7,9,13,14,20,40,59,61,76,79,82,86,99,100,102,106,108,109,],[-54,-4,-54,-54,-8,-12,33,33,-54,-7,-3,33,33,33,-54,-11,-14,33,-54,-54,-13,]),'else_token':([18,21,23,24,25,28,29,31,41,42,49,51,52,56,57,58,75,76,82,83,87,88,90,91,92,93,95,96,102,105,],[-20,-15,-22,-21,-16,-17,-18,-19,-42,-45,-48,-51,-52,-31,-24,-32,-41,-54,-54,-23,-43,-44,-53,-30,-49,-50,-25,102,-54,-29,]),}
_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 = {'read_stmt':([14,20,76,79,82,102,],[18,18,18,18,18,18,]),'begin_stmt_cdr':([53,94,],[80,101,]),'cond':([19,22,],[48,54,]),'no_flag_expr':([19,22,33,43,45,46,55,73,],[41,41,41,41,41,75,41,41,]),'var_dec':([4,],[7,]),'assign_stmt':([14,20,76,79,82,102,],[21,21,21,21,21,21,]),'program':([0,],[2,]),'factor':([19,22,33,43,45,46,55,64,65,73,77,78,],[49,49,49,49,49,49,49,49,49,49,49,49,]),'con_dec':([0,40,106,],[4,4,4,]),'empty':([0,4,7,14,15,16,20,40,53,60,76,79,82,86,94,97,102,106,108,],[3,9,13,23,36,39,23,3,81,36,23,23,23,100,81,39,23,3,100,]),'write_stmt':([14,20,76,79,82,102,],[24,24,24,24,24,24,]),'call_stmt':([14,20,76,79,82,102,],[25,25,25,25,25,25,]),'term':([19,22,33,43,45,46,55,64,65,73,77,78,],[42,42,42,42,42,42,42,87,88,42,92,93,]),'stmt':([14,20,76,79,82,102,],[26,53,91,94,96,105,]),'proc_dec_cdr':([86,108,],[99,109,]),'flag':([19,22,33,43,45,55,73,],[46,46,46,46,46,46,46,]),'proc_dec':([7,],[14,]),'begin_stmt':([14,20,76,79,82,102,],[28,28,28,28,28,28,]),'if_stmt':([14,20,76,79,82,102,],[29,29,29,29,29,29,]),'con_dec_cdr':([16,97,],[37,103,]),'expr':([19,22,33,43,45,55,73,],[44,44,58,66,74,83,89,]),'while_stmt':([14,20,76,79,82,102,],[31,31,31,31,31,31,]),'var_dec_cdr':([15,60,],[34,84,]),'block':([0,40,106,],[5,63,107,]),'cmp':([44,],[73,]),}
_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 -> block period_token','program',2,'p_program','pl0yacc.py',9),
('block -> con_dec var_dec proc_dec stmt','block',4,'p_block','pl0yacc.py',16),
('con_dec -> const_token ident_token eql_token number_token con_dec_cdr semicolom_token','con_dec',6,'p_con_dec','pl0yacc.py',20),
('con_dec -> empty','con_dec',1,'p_con_dec','pl0yacc.py',21),
('con_dec_cdr -> comma_token ident_token eql_token number_token con_dec_cdr','con_dec_cdr',5,'p_con_dec_cdr','pl0yacc.py',29),
('con_dec_cdr -> empty','con_dec_cdr',1,'p_con_dec_cdr','pl0yacc.py',30),
('var_dec -> var_token ident_token var_dec_cdr semicolom_token','var_dec',4,'p_var_dec','pl0yacc.py',38),
('var_dec -> empty','var_dec',1,'p_var_dec','pl0yacc.py',39),
('var_dec_cdr -> comma_token ident_token var_dec_cdr','var_dec_cdr',3,'p_var_dec_cdr','pl0yacc.py',47),
('var_dec_cdr -> empty','var_dec_cdr',1,'p_var_dec_cdr','pl0yacc.py',48),
('proc_dec -> proc_token ident_token semicolom_token block semicolom_token proc_dec_cdr','proc_dec',6,'p_proc_dec','pl0yacc.py',56),
('proc_dec -> empty','proc_dec',1,'p_proc_dec','pl0yacc.py',57),
('proc_dec_cdr -> proc_token ident_token semicolom_token block semicolom_token proc_dec_cdr','proc_dec_cdr',6,'p_proc_dec_cdr','pl0yacc.py',66),
('proc_dec_cdr -> empty','proc_dec_cdr',1,'p_proc_dec_cdr','pl0yacc.py',67),
('stmt -> assign_stmt','stmt',1,'p_stmt','pl0yacc.py',76),
('stmt -> call_stmt','stmt',1,'p_stmt','pl0yacc.py',77),
('stmt -> begin_stmt','stmt',1,'p_stmt','pl0yacc.py',78),
('stmt -> if_stmt','stmt',1,'p_stmt','pl0yacc.py',79),
('stmt -> while_stmt','stmt',1,'p_stmt','pl0yacc.py',80),
('stmt -> read_stmt','stmt',1,'p_stmt','pl0yacc.py',81),
('stmt -> write_stmt','stmt',1,'p_stmt','pl0yacc.py',82),
('stmt -> empty','stmt',1,'p_stmt','pl0yacc.py',83),
('assign_stmt -> ident_token become_token expr','assign_stmt',3,'p_assign_stmt','pl0yacc.py',88),
('call_stmt -> call_token ident_token','call_stmt',2,'p_call_stmt','pl0yacc.py',92),
('begin_stmt -> begin_token stmt begin_stmt_cdr end_token','begin_stmt',4,'p_begin_stmt','pl0yacc.py',96),
('begin_stmt_cdr -> semicolom_token stmt begin_stmt_cdr','begin_stmt_cdr',3,'p_begin_stmt_cdr','pl0yacc.py',100),
('begin_stmt_cdr -> empty','begin_stmt_cdr',1,'p_begin_stmt_cdr','pl0yacc.py',101),
('if_stmt -> if_token cond then_token stmt','if_stmt',4,'p_if_stmt','pl0yacc.py',107),
('if_stmt -> if_token cond then_token stmt else_token stmt','if_stmt',6,'p_if_stmt','pl0yacc.py',108),
('while_stmt -> while_token cond do_token stmt','while_stmt',4,'p_while_stmt','pl0yacc.py',116),
('read_stmt -> read_token ident_token','read_stmt',2,'p_read_stmt','pl0yacc.py',120),
('write_stmt -> write_token expr','write_stmt',2,'p_write_stmt','pl0yacc.py',124),
('cond -> odd_token expr','cond',2,'p_cond','pl0yacc.py',128),
('cond -> expr cmp expr','cond',3,'p_cond','pl0yacc.py',129),
('cmp -> eql_token','cmp',1,'p_cmp','pl0yacc.py',137),
('cmp -> les_token','cmp',1,'p_cmp','pl0yacc.py',138),
('cmp -> leq_token','cmp',1,'p_cmp','pl0yacc.py',139),
('cmp -> grt_token','cmp',1,'p_cmp','pl0yacc.py',140),
('cmp -> geq_token','cmp',1,'p_cmp','pl0yacc.py',141),
('cmp -> neq_token','cmp',1,'p_cmp','pl0yacc.py',142),
('expr -> flag no_flag_expr','expr',2,'p_expr_flag','pl0yacc.py',147),
('expr -> no_flag_expr','expr',1,'p_expr_flag','pl0yacc.py',148),
('no_flag_expr -> term plus_token term','no_flag_expr',3,'p_expr_no_flag','pl0yacc.py',158),
('no_flag_expr -> term minus_token term','no_flag_expr',3,'p_expr_no_flag','pl0yacc.py',159),
('no_flag_expr -> term','no_flag_expr',1,'p_expr_no_flag','pl0yacc.py',160),
('flag -> plus_token','flag',1,'p_flag','pl0yacc.py',170),
('flag -> minus_token','flag',1,'p_flag','pl0yacc.py',171),
('term -> factor','term',1,'p_term_factor','pl0yacc.py',176),
('term -> factor mul_token term','term',3,'p_term_mul','pl0yacc.py',180),
('term -> factor divide_token term','term',3,'p_term_mul','pl0yacc.py',181),
('factor -> ident_token','factor',1,'p_factor_ident','pl0yacc.py',189),
('factor -> number_token','factor',1,'p_factor_number','pl0yacc.py',193),
('factor -> lparent_token expr rparent_token','factor',3,'p_factor_expr','pl0yacc.py',197),
('empty -> <empty>','empty',0,'p_empty','pl0yacc.py',201),
]