-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathparsetab.py
51 lines (44 loc) · 7.47 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
# parsetab.py
# This file is automatically generated. Do not edit.
# pylint: disable=W,C,R
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = "leftLTGTLEGEEQNEQleftPLUSMINUSleftTIMESDIVIDEMODleftTHENleftELSErightUPLUSUMINUSleft()DIVIDE ELSE EQ GE GT ID IF LAMBDA LE LT MINUS MOD NAT NEQ PLUS REC THEN TIMES\n expr : factor\n \n factor : ID\n \n factor : NAT\n \n expr : IF '(' expr ')' THEN expr ELSE expr\n \n factor : '(' expr ')'\n \n expr : expr factor\n \n factor : LAMBDA '(' ID '.' expr ')'\n \n factor : REC ID '.' LAMBDA '(' ID '.' expr ')'\n \n expr : expr PLUS expr\n | expr MINUS expr\n | expr TIMES expr\n | expr DIVIDE expr\n | expr MOD expr\n \n expr : expr LT expr\n | expr LE expr\n | expr GT expr\n | expr GE expr\n | expr EQ expr\n | expr NEQ expr\n expr : MINUS expr %prec UMINUSexpr : PLUS expr %prec UPLUS"
_lr_action_items = {'IF':([0,4,5,6,12,13,14,15,16,17,18,19,20,21,22,23,45,47,53,54,],[3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,]),'MINUS':([0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,45,47,48,50,51,53,54,55,56,57,],[6,13,-1,6,6,6,-2,-3,-6,6,6,6,6,6,6,6,6,6,6,6,6,13,-21,-20,-9,-10,-11,-12,-13,13,13,13,13,13,13,13,-5,6,6,13,13,-7,6,6,-4,13,-8,]),'PLUS':([0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,45,47,48,50,51,53,54,55,56,57,],[5,12,-1,5,5,5,-2,-3,-6,5,5,5,5,5,5,5,5,5,5,5,5,12,-21,-20,-9,-10,-11,-12,-13,12,12,12,12,12,12,12,-5,5,5,12,12,-7,5,5,-4,12,-8,]),'ID':([0,1,2,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35,36,37,38,39,40,41,45,47,48,49,50,51,53,54,55,56,57,],[7,7,-1,7,7,7,-2,-3,28,-6,7,7,7,7,7,7,7,7,7,7,7,7,7,-21,-20,42,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,7,-5,7,7,7,52,7,-7,7,7,-4,7,-8,]),'NAT':([0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,45,47,48,50,51,53,54,55,56,57,],[8,8,-1,8,8,8,-2,-3,-6,8,8,8,8,8,8,8,8,8,8,8,8,8,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,8,-5,8,8,8,8,-7,8,8,-4,8,-8,]),'(':([0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,45,46,47,48,50,51,53,54,55,56,57,],[4,4,-1,23,4,4,4,-2,-3,27,-6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,-5,4,49,4,4,4,-7,4,4,4,4,-8,]),'LAMBDA':([0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,43,45,47,48,50,51,53,54,55,56,57,],[9,9,-1,9,9,9,-2,-3,-6,9,9,9,9,9,9,9,9,9,9,9,9,9,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,9,-5,46,9,9,9,9,-7,9,9,-4,9,-8,]),'REC':([0,1,2,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,45,47,48,50,51,53,54,55,56,57,],[10,10,-1,10,10,10,-2,-3,-6,10,10,10,10,10,10,10,10,10,10,10,10,10,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,10,-5,10,10,10,10,-7,10,10,-4,10,-8,]),'$end':([1,2,7,8,11,25,26,29,30,31,32,33,34,35,36,37,38,39,41,51,55,57,],[0,-1,-2,-3,-6,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-5,-7,-4,-8,]),'TIMES':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[14,-1,-2,-3,-6,14,-21,-20,14,14,-11,-12,-13,14,14,14,14,14,14,14,-5,14,14,-7,-4,14,-8,]),'DIVIDE':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[15,-1,-2,-3,-6,15,-21,-20,15,15,-11,-12,-13,15,15,15,15,15,15,15,-5,15,15,-7,-4,15,-8,]),'MOD':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[16,-1,-2,-3,-6,16,-21,-20,16,16,-11,-12,-13,16,16,16,16,16,16,16,-5,16,16,-7,-4,16,-8,]),'LT':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[17,-1,-2,-3,-6,17,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,17,-5,17,17,-7,-4,17,-8,]),'LE':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[18,-1,-2,-3,-6,18,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,18,-5,18,18,-7,-4,18,-8,]),'GT':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[19,-1,-2,-3,-6,19,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,19,-5,19,19,-7,-4,19,-8,]),'GE':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[20,-1,-2,-3,-6,20,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,20,-5,20,20,-7,-4,20,-8,]),'EQ':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[21,-1,-2,-3,-6,21,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,21,-5,21,21,-7,-4,21,-8,]),'NEQ':([1,2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,50,51,55,56,57,],[22,-1,-2,-3,-6,22,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,22,-5,22,22,-7,-4,22,-8,]),')':([2,7,8,11,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,48,51,55,56,57,],[-1,-2,-3,-6,41,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,44,-5,51,-7,-4,57,-8,]),'ELSE':([2,7,8,11,25,26,29,30,31,32,33,34,35,36,37,38,39,41,50,51,55,57,],[-1,-2,-3,-6,-21,-20,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19,-5,53,-7,-4,-8,]),'.':([28,42,52,],[43,45,54,]),'THEN':([44,],[47,]),}
_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 = {'expr':([0,4,5,6,12,13,14,15,16,17,18,19,20,21,22,23,45,47,53,54,],[1,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,48,50,55,56,]),'factor':([0,1,4,5,6,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,45,47,48,50,53,54,55,56,],[2,11,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,2,2,11,11,2,2,11,11,]),}
_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' -> expr","S'",1,None,None,None),
('expr -> factor','expr',1,'p_start','my_parser.py',46),
('factor -> ID','factor',1,'p_expr_ID','my_parser.py',52),
('factor -> NAT','factor',1,'p_expr_NAT','my_parser.py',59),
('expr -> IF ( expr ) THEN expr ELSE expr','expr',8,'p_expr_if','my_parser.py',66),
('factor -> ( expr )','factor',3,'p_expr_paren','my_parser.py',73),
('expr -> expr factor','expr',2,'p_expr_function_app','my_parser.py',80),
('factor -> LAMBDA ( ID . expr )','factor',6,'p_expr_function_abs_normal','my_parser.py',87),
('factor -> REC ID . LAMBDA ( ID . expr )','factor',9,'p_expr_function_abs_rec','my_parser.py',94),
('expr -> expr PLUS expr','expr',3,'p_expr_arith','my_parser.py',101),
('expr -> expr MINUS expr','expr',3,'p_expr_arith','my_parser.py',102),
('expr -> expr TIMES expr','expr',3,'p_expr_arith','my_parser.py',103),
('expr -> expr DIVIDE expr','expr',3,'p_expr_arith','my_parser.py',104),
('expr -> expr MOD expr','expr',3,'p_expr_arith','my_parser.py',105),
('expr -> expr LT expr','expr',3,'p_expr_comparisons','my_parser.py',122),
('expr -> expr LE expr','expr',3,'p_expr_comparisons','my_parser.py',123),
('expr -> expr GT expr','expr',3,'p_expr_comparisons','my_parser.py',124),
('expr -> expr GE expr','expr',3,'p_expr_comparisons','my_parser.py',125),
('expr -> expr EQ expr','expr',3,'p_expr_comparisons','my_parser.py',126),
('expr -> expr NEQ expr','expr',3,'p_expr_comparisons','my_parser.py',127),
('expr -> MINUS expr','expr',2,'p_expr_UMINUS','my_parser.py',133),
('expr -> PLUS expr','expr',2,'p_expr_UPLUS','my_parser.py',138),
]