-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparsetab.py
More file actions
72 lines (65 loc) · 12.2 KB
/
Copy pathparsetab.py
File metadata and controls
72 lines (65 loc) · 12.2 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
62
63
64
65
66
67
68
69
70
71
72
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = 'AND BOOLEAN COLON DISPLAY DIVIDE ELSE EQUAL GT GTE ID IF LBRAC LPAREN LT LTE MINUS NE NOT NUMBER OR PLUS RBRAC RPAREN SEMICOLON STRING TIMES VARIABLE WORTHprogram : sequenceblock : LBRAC sequence RBRACsequence : declaration\n | sequence declarationdeclaration : VARIABLE ID WORTH expression SEMICOLON\n | VARIABLE ID SEMICOLON\n | statementstatement : expression SEMICOLON\n | DISPLAY expression SEMICOLON\n | if_statement\n | blockif_statement : IF expression COLON statement\n | IF expression COLON statement ELSE statementexpression : assignmentassignment : logical_or\n | ID WORTH assignmentlogical_or : logical_or OR logical_andlogical_or : logical_andlogical_and : logical_and AND equalitylogical_and : equalityequality : equality EQUAL relationalequality : equality NE relationalequality : relationalrelational : relational LTE additiverelational : relational GTE additiverelational : relational LT additiverelational : relational GT additiverelational : additiveadditive : additive MINUS multiplicativeadditive : additive PLUS multiplicativeadditive : multiplicativemultiplicative : multiplicative TIMES unarymultiplicative : multiplicative DIVIDE unarymultiplicative : unaryunary : MINUS unaryunary : NOT unaryunary : primaryprimary : IDprimary : NUMBER\n | BOOLEAN\n | LPAREN expression RPAREN\n | STRING'
_lr_action_items = {'VARIABLE':([0,2,3,7,9,10,13,28,31,34,52,54,56,71,72,74,],[4,4,-3,-7,-10,-11,4,-4,-8,4,-6,-9,-2,-12,-5,-13,]),'DISPLAY':([0,2,3,7,9,10,13,28,31,34,52,54,55,56,71,72,73,74,],[8,8,-3,-7,-10,-11,8,-4,-8,8,-6,-9,8,-2,-12,-5,8,-13,]),'IF':([0,2,3,7,9,10,13,28,31,34,52,54,55,56,71,72,73,74,],[12,12,-3,-7,-10,-11,12,-4,-8,12,-6,-9,12,-2,-12,-5,12,-13,]),'LBRAC':([0,2,3,7,9,10,13,28,31,34,52,54,55,56,71,72,73,74,],[13,13,-3,-7,-10,-11,13,-4,-8,13,-6,-9,13,-2,-12,-5,13,-13,]),'ID':([0,2,3,4,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[5,5,-3,29,-7,5,-10,-11,5,5,46,46,5,-4,5,-8,5,46,46,46,46,46,46,46,46,46,46,46,46,5,-6,-9,5,-2,-12,-5,5,-13,]),'MINUS':([0,2,3,5,7,8,9,10,12,13,18,19,20,21,22,23,24,25,26,27,28,30,31,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,51,52,54,55,56,61,62,63,64,65,66,67,68,69,71,72,73,74,],[19,19,-3,-38,-7,19,-10,-11,19,19,43,19,-31,-34,19,-37,-39,-40,19,-42,-4,19,-8,19,19,19,19,19,19,19,19,19,19,19,-35,-38,19,19,-36,19,-6,-9,19,-2,43,43,43,43,-29,-30,-32,-33,-41,-12,-5,19,-13,]),'NOT':([0,2,3,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[22,22,-3,-7,22,-10,-11,22,22,22,22,22,-4,22,-8,22,22,22,22,22,22,22,22,22,22,22,22,22,22,-6,-9,22,-2,-12,-5,22,-13,]),'NUMBER':([0,2,3,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[24,24,-3,-7,24,-10,-11,24,24,24,24,24,-4,24,-8,24,24,24,24,24,24,24,24,24,24,24,24,24,24,-6,-9,24,-2,-12,-5,24,-13,]),'BOOLEAN':([0,2,3,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[25,25,-3,-7,25,-10,-11,25,25,25,25,25,-4,25,-8,25,25,25,25,25,25,25,25,25,25,25,25,25,25,-6,-9,25,-2,-12,-5,25,-13,]),'LPAREN':([0,2,3,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[26,26,-3,-7,26,-10,-11,26,26,26,26,26,-4,26,-8,26,26,26,26,26,26,26,26,26,26,26,26,26,26,-6,-9,26,-2,-12,-5,26,-13,]),'STRING':([0,2,3,7,8,9,10,12,13,19,22,26,28,30,31,34,35,36,37,38,39,40,41,42,43,44,47,48,51,52,54,55,56,71,72,73,74,],[27,27,-3,-7,27,-10,-11,27,27,27,27,27,-4,27,-8,27,27,27,27,27,27,27,27,27,27,27,27,27,27,-6,-9,27,-2,-12,-5,27,-13,]),'$end':([1,2,3,7,9,10,28,31,52,54,56,71,72,74,],[0,-1,-3,-7,-10,-11,-4,-8,-6,-9,-2,-12,-5,-13,]),'RBRAC':([3,7,9,10,28,31,34,52,54,56,71,72,74,],[-3,-7,-10,-11,-4,-8,56,-6,-9,-2,-12,-5,-13,]),'WORTH':([5,29,],[30,51,]),'TIMES':([5,20,21,23,24,25,27,45,46,49,65,66,67,68,69,],[-38,47,-34,-37,-39,-40,-42,-35,-38,-36,47,47,-32,-33,-41,]),'DIVIDE':([5,20,21,23,24,25,27,45,46,49,65,66,67,68,69,],[-38,48,-34,-37,-39,-40,-42,-35,-38,-36,48,48,-32,-33,-41,]),'PLUS':([5,18,20,21,23,24,25,27,45,46,49,61,62,63,64,65,66,67,68,69,],[-38,44,-31,-34,-37,-39,-40,-42,-35,-38,-36,44,44,44,44,-29,-30,-32,-33,-41,]),'LTE':([5,17,18,20,21,23,24,25,27,45,46,49,59,60,61,62,63,64,65,66,67,68,69,],[-38,39,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,39,39,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'GTE':([5,17,18,20,21,23,24,25,27,45,46,49,59,60,61,62,63,64,65,66,67,68,69,],[-38,40,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,40,40,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'LT':([5,17,18,20,21,23,24,25,27,45,46,49,59,60,61,62,63,64,65,66,67,68,69,],[-38,41,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,41,41,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'GT':([5,17,18,20,21,23,24,25,27,45,46,49,59,60,61,62,63,64,65,66,67,68,69,],[-38,42,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,42,42,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'EQUAL':([5,16,17,18,20,21,23,24,25,27,45,46,49,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,37,-23,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,37,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'NE':([5,16,17,18,20,21,23,24,25,27,45,46,49,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,38,-23,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,38,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'AND':([5,15,16,17,18,20,21,23,24,25,27,45,46,49,57,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,36,-20,-23,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,36,-19,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'OR':([5,14,15,16,17,18,20,21,23,24,25,27,45,46,49,57,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,35,-18,-20,-23,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,-17,-19,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'SEMICOLON':([5,6,11,14,15,16,17,18,20,21,23,24,25,27,29,32,45,46,49,53,57,58,59,60,61,62,63,64,65,66,67,68,69,70,],[-38,31,-14,-15,-18,-20,-23,-28,-31,-34,-37,-39,-40,-42,52,54,-35,-38,-36,-16,-17,-19,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,72,]),'COLON':([5,11,14,15,16,17,18,20,21,23,24,25,27,33,45,46,49,53,57,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,-14,-15,-18,-20,-23,-28,-31,-34,-37,-39,-40,-42,55,-35,-38,-36,-16,-17,-19,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'RPAREN':([5,11,14,15,16,17,18,20,21,23,24,25,27,45,46,49,50,53,57,58,59,60,61,62,63,64,65,66,67,68,69,],[-38,-14,-15,-18,-20,-23,-28,-31,-34,-37,-39,-40,-42,-35,-38,-36,69,-16,-17,-19,-21,-22,-24,-25,-26,-27,-29,-30,-32,-33,-41,]),'ELSE':([9,10,31,54,56,71,74,],[-10,-11,-8,-9,-2,73,-13,]),}
_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,]),'sequence':([0,13,],[2,34,]),'declaration':([0,2,13,34,],[3,28,3,28,]),'expression':([0,2,8,12,13,26,34,51,55,73,],[6,6,32,33,6,50,6,70,6,6,]),'statement':([0,2,13,34,55,73,],[7,7,7,7,71,74,]),'if_statement':([0,2,13,34,55,73,],[9,9,9,9,9,9,]),'block':([0,2,13,34,55,73,],[10,10,10,10,10,10,]),'assignment':([0,2,8,12,13,26,30,34,51,55,73,],[11,11,11,11,11,11,53,11,11,11,11,]),'logical_or':([0,2,8,12,13,26,30,34,51,55,73,],[14,14,14,14,14,14,14,14,14,14,14,]),'logical_and':([0,2,8,12,13,26,30,34,35,51,55,73,],[15,15,15,15,15,15,15,15,57,15,15,15,]),'equality':([0,2,8,12,13,26,30,34,35,36,51,55,73,],[16,16,16,16,16,16,16,16,16,58,16,16,16,]),'relational':([0,2,8,12,13,26,30,34,35,36,37,38,51,55,73,],[17,17,17,17,17,17,17,17,17,17,59,60,17,17,17,]),'additive':([0,2,8,12,13,26,30,34,35,36,37,38,39,40,41,42,51,55,73,],[18,18,18,18,18,18,18,18,18,18,18,18,61,62,63,64,18,18,18,]),'multiplicative':([0,2,8,12,13,26,30,34,35,36,37,38,39,40,41,42,43,44,51,55,73,],[20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,65,66,20,20,20,]),'unary':([0,2,8,12,13,19,22,26,30,34,35,36,37,38,39,40,41,42,43,44,47,48,51,55,73,],[21,21,21,21,21,45,49,21,21,21,21,21,21,21,21,21,21,21,21,21,67,68,21,21,21,]),'primary':([0,2,8,12,13,19,22,26,30,34,35,36,37,38,39,40,41,42,43,44,47,48,51,55,73,],[23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,]),}
_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 -> sequence','program',1,'p_program','verboze_parser.py',10),
('block -> LBRAC sequence RBRAC','block',3,'p_block','verboze_parser.py',14),
('sequence -> declaration','sequence',1,'p_sequence','verboze_parser.py',20),
('sequence -> sequence declaration','sequence',2,'p_sequence','verboze_parser.py',21),
('declaration -> VARIABLE ID WORTH expression SEMICOLON','declaration',5,'p_declaration','verboze_parser.py',30),
('declaration -> VARIABLE ID SEMICOLON','declaration',3,'p_declaration','verboze_parser.py',31),
('declaration -> statement','declaration',1,'p_declaration','verboze_parser.py',32),
('statement -> expression SEMICOLON','statement',2,'p_statement','verboze_parser.py',45),
('statement -> DISPLAY expression SEMICOLON','statement',3,'p_statement','verboze_parser.py',46),
('statement -> if_statement','statement',1,'p_statement','verboze_parser.py',47),
('statement -> block','statement',1,'p_statement','verboze_parser.py',48),
('if_statement -> IF expression COLON statement','if_statement',4,'p_if_statement','verboze_parser.py',60),
('if_statement -> IF expression COLON statement ELSE statement','if_statement',6,'p_if_statement','verboze_parser.py',61),
('expression -> assignment','expression',1,'p_expression','verboze_parser.py',81),
('assignment -> logical_or','assignment',1,'p_assignment','verboze_parser.py',85),
('assignment -> ID WORTH assignment','assignment',3,'p_assignment','verboze_parser.py',86),
('logical_or -> logical_or OR logical_and','logical_or',3,'p_logical_or_or','verboze_parser.py',94),
('logical_or -> logical_and','logical_or',1,'p_logical_or_logical_and','verboze_parser.py',98),
('logical_and -> logical_and AND equality','logical_and',3,'p_logical_and_and','verboze_parser.py',102),
('logical_and -> equality','logical_and',1,'p_logical_and_equality','verboze_parser.py',106),
('equality -> equality EQUAL relational','equality',3,'p_equality_equal','verboze_parser.py',110),
('equality -> equality NE relational','equality',3,'p_equality_ne','verboze_parser.py',114),
('equality -> relational','equality',1,'p_equality_relational','verboze_parser.py',118),
('relational -> relational LTE additive','relational',3,'p_relational_lte','verboze_parser.py',122),
('relational -> relational GTE additive','relational',3,'p_relational_gte','verboze_parser.py',126),
('relational -> relational LT additive','relational',3,'p_relational_lt','verboze_parser.py',130),
('relational -> relational GT additive','relational',3,'p_relational_gt','verboze_parser.py',134),
('relational -> additive','relational',1,'p_relational_additive','verboze_parser.py',138),
('additive -> additive MINUS multiplicative','additive',3,'p_additive_minus','verboze_parser.py',142),
('additive -> additive PLUS multiplicative','additive',3,'p_additive_plus','verboze_parser.py',146),
('additive -> multiplicative','additive',1,'p_additive_multiplicative','verboze_parser.py',150),
('multiplicative -> multiplicative TIMES unary','multiplicative',3,'p_multiplicative_times','verboze_parser.py',154),
('multiplicative -> multiplicative DIVIDE unary','multiplicative',3,'p_multiplicative_div','verboze_parser.py',158),
('multiplicative -> unary','multiplicative',1,'p_multiplicative_unary','verboze_parser.py',162),
('unary -> MINUS unary','unary',2,'p_unary_minus','verboze_parser.py',166),
('unary -> NOT unary','unary',2,'p_unary_not','verboze_parser.py',170),
('unary -> primary','unary',1,'p_unary_primary','verboze_parser.py',174),
('primary -> ID','primary',1,'p_primary_id','verboze_parser.py',179),
('primary -> NUMBER','primary',1,'p_primary','verboze_parser.py',183),
('primary -> BOOLEAN','primary',1,'p_primary','verboze_parser.py',184),
('primary -> LPAREN expression RPAREN','primary',3,'p_primary','verboze_parser.py',185),
('primary -> STRING','primary',1,'p_primary','verboze_parser.py',186),
]