-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparsetab.py
63 lines (56 loc) · 9.43 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
# parsetab.py
# This file is automatically generated. Do not edit.
_tabversion = '3.10'
_lr_method = 'LALR'
_lr_signature = 'leftANDleftORnonassocINFTOSUPTOAFFECTleftPLUSMINUSleftTIMESDIVIDENUMBER MINUS PLUS TIMES DIVIDE LPAREN RPAREN AND OR TRUE FALSE SEMICOLON NAME AFFECT INFTO SUPTO SAME LACOL RACOL STR COMMA PRINT IF WHILE ELSE FOR PRINTSTR FONCTIONSTART : BLOC BLOC : BLOC statement SEMICOLON\n | statement SEMICOLON PARAM : NAME COMMA PARAM\n | NUMBER COMMA PARAM\n | NAME\n | NUMBER statement : PRINT LPAREN expression RPAREN statement : FONCTION NAME LPAREN RPAREN LACOL BLOC RACOL\n | FONCTION NAME LPAREN PARAM RPAREN LACOL BLOC RACOLstatement : NAME LPAREN RPAREN\n | NAME LPAREN PARAM RPAREN statement : PRINTSTR LPAREN STR RPAREN statement : WHILE LPAREN expression RPAREN LACOL BLOC RACOL statement : IF LPAREN expression RPAREN LACOL BLOC RACOL\n | IF LPAREN expression RPAREN LACOL BLOC RACOL ELSE LACOL BLOC RACOL statement : FOR LPAREN statement SEMICOLON expression SEMICOLON statement RPAREN LACOL BLOC RACOL statement : NAME AFFECT expression\n | NAME PLUS PLUS\n | NAME PLUS AFFECT expression\n expression : expression PLUS expressionexpression : expression TIMES expressionexpression : expression SAME expressionexpression : expression MINUS expression\n\t\t\t\t| expression DIVIDE expressionexpression : LPAREN expression RPARENexpression : NUMBERexpression : NAMEexpression : TRUEexpression : FALSEexpression : expression AND expression\n | expression OR expressionexpression : expression INFTO expression\n | expression SUPTO expression '
_lr_action_items = {'PRINT':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[4,4,-3,4,-2,4,4,4,4,4,4,4,4,4,4,4,4,4,]),'FONCTION':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[5,5,-3,5,-2,5,5,5,5,5,5,5,5,5,5,5,5,5,]),'NAME':([0,2,5,12,13,15,16,19,20,21,22,23,29,36,43,44,45,46,47,48,49,50,51,54,56,61,72,76,77,79,80,81,82,83,85,92,93,94,95,],[6,6,14,-3,26,30,26,26,26,6,-2,26,30,26,26,26,26,26,26,26,26,26,26,30,30,26,6,6,6,6,6,6,6,6,6,6,6,6,6,]),'PRINTSTR':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[7,7,-3,7,-2,7,7,7,7,7,7,7,7,7,7,7,7,7,]),'WHILE':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[8,8,-3,8,-2,8,8,8,8,8,8,8,8,8,8,8,8,8,]),'IF':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[9,9,-3,9,-2,9,9,9,9,9,9,9,9,9,9,9,9,9,]),'FOR':([0,2,12,21,22,72,76,77,79,80,81,82,83,85,92,93,94,95,],[10,10,-3,10,-2,10,10,10,10,10,10,10,10,10,10,10,10,10,]),'$end':([1,2,12,22,],[0,-1,-3,-2,]),'SEMICOLON':([3,11,25,26,27,28,31,34,35,40,42,55,57,58,62,63,64,65,66,67,68,69,70,71,78,84,86,87,89,96,97,],[12,22,-27,-28,-29,-30,-11,-18,-19,61,-8,-12,-20,-13,-26,-21,-22,-23,-24,-25,-31,-32,-33,-34,83,-9,-14,-15,-10,-16,-17,]),'LPAREN':([4,6,7,8,9,10,13,14,16,19,20,23,36,43,44,45,46,47,48,49,50,51,61,],[13,15,18,19,20,21,23,29,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,]),'AFFECT':([6,17,],[16,36,]),'PLUS':([6,17,24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[17,35,43,-27,-28,-29,-30,43,43,43,43,43,-26,-21,-22,43,-24,-25,43,43,43,43,43,]),'RACOL':([12,22,79,81,82,85,94,95,],[-3,-2,84,86,87,89,96,97,]),'NUMBER':([13,15,16,19,20,23,29,36,43,44,45,46,47,48,49,50,51,54,56,61,],[25,33,25,25,25,25,33,25,25,25,25,25,25,25,25,25,25,33,33,25,]),'TRUE':([13,16,19,20,23,36,43,44,45,46,47,48,49,50,51,61,],[27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,]),'FALSE':([13,16,19,20,23,36,43,44,45,46,47,48,49,50,51,61,],[28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,]),'RPAREN':([15,24,25,26,27,28,29,30,31,32,33,34,35,37,38,39,41,42,53,55,57,58,62,63,64,65,66,67,68,69,70,71,74,75,84,86,87,88,89,96,97,],[31,42,-27,-28,-29,-30,52,-6,-11,55,-7,-18,-19,58,59,60,62,-8,73,-12,-20,-13,-26,-21,-22,-23,-24,-25,-31,-32,-33,-34,-4,-5,-9,-14,-15,91,-10,-16,-17,]),'STR':([18,],[37,]),'TIMES':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[44,-27,-28,-29,-30,44,44,44,44,44,-26,44,-22,44,44,-25,44,44,44,44,44,]),'SAME':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[45,-27,-28,-29,-30,45,45,45,45,45,-26,-21,-22,45,-24,-25,-31,-32,-33,-34,45,]),'MINUS':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[46,-27,-28,-29,-30,46,46,46,46,46,-26,-21,-22,46,-24,-25,46,46,46,46,46,]),'DIVIDE':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[47,-27,-28,-29,-30,47,47,47,47,47,-26,47,-22,47,47,-25,47,47,47,47,47,]),'AND':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[48,-27,-28,-29,-30,48,48,48,48,48,-26,-21,-22,48,-24,-25,-31,-32,-33,-34,48,]),'OR':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[49,-27,-28,-29,-30,49,49,49,49,49,-26,-21,-22,49,-24,-25,49,-32,-33,-34,49,]),'INFTO':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[50,-27,-28,-29,-30,50,50,50,50,50,-26,-21,-22,50,-24,-25,50,50,None,None,50,]),'SUPTO':([24,25,26,27,28,34,38,39,41,57,62,63,64,65,66,67,68,69,70,71,78,],[51,-27,-28,-29,-30,51,51,51,51,51,-26,-21,-22,51,-24,-25,51,51,None,None,51,]),'COMMA':([30,33,],[54,56,]),'LACOL':([52,59,60,73,90,91,],[72,76,77,80,92,93,]),'ELSE':([87,],[90,]),}
_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 = {'START':([0,],[1,]),'BLOC':([0,72,76,77,80,92,93,],[2,79,81,82,85,94,95,]),'statement':([0,2,21,72,76,77,79,80,81,82,83,85,92,93,94,95,],[3,11,40,3,3,3,11,3,11,11,88,11,3,3,11,11,]),'expression':([13,16,19,20,23,36,43,44,45,46,47,48,49,50,51,61,],[24,34,38,39,41,57,63,64,65,66,67,68,69,70,71,78,]),'PARAM':([15,29,54,56,],[32,53,74,75,]),}
_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' -> START","S'",1,None,None,None),
('START -> BLOC','START',1,'p_start','BrouillonTP3.py',87),
('BLOC -> BLOC statement SEMICOLON','BLOC',3,'p_bloc','BrouillonTP3.py',94),
('BLOC -> statement SEMICOLON','BLOC',2,'p_bloc','BrouillonTP3.py',95),
('PARAM -> NAME COMMA PARAM','PARAM',3,'p_param','BrouillonTP3.py',102),
('PARAM -> NUMBER COMMA PARAM','PARAM',3,'p_param','BrouillonTP3.py',103),
('PARAM -> NAME','PARAM',1,'p_param','BrouillonTP3.py',104),
('PARAM -> NUMBER','PARAM',1,'p_param','BrouillonTP3.py',105),
('statement -> PRINT LPAREN expression RPAREN','statement',4,'p_statement_print','BrouillonTP3.py',111),
('statement -> FONCTION NAME LPAREN RPAREN LACOL BLOC RACOL','statement',7,'p_statement_fonction_void','BrouillonTP3.py',115),
('statement -> FONCTION NAME LPAREN PARAM RPAREN LACOL BLOC RACOL','statement',8,'p_statement_fonction_void','BrouillonTP3.py',116),
('statement -> NAME LPAREN RPAREN','statement',3,'p_statement_Call_fonction_void','BrouillonTP3.py',125),
('statement -> NAME LPAREN PARAM RPAREN','statement',4,'p_statement_Call_fonction_void','BrouillonTP3.py',126),
('statement -> PRINTSTR LPAREN STR RPAREN','statement',4,'p_statement_printString','BrouillonTP3.py',133),
('statement -> WHILE LPAREN expression RPAREN LACOL BLOC RACOL','statement',7,'p_statement_while','BrouillonTP3.py',137),
('statement -> IF LPAREN expression RPAREN LACOL BLOC RACOL','statement',7,'p_statement_if','BrouillonTP3.py',141),
('statement -> IF LPAREN expression RPAREN LACOL BLOC RACOL ELSE LACOL BLOC RACOL','statement',11,'p_statement_if','BrouillonTP3.py',142),
('statement -> FOR LPAREN statement SEMICOLON expression SEMICOLON statement RPAREN LACOL BLOC RACOL','statement',11,'p_statement_for','BrouillonTP3.py',149),
('statement -> NAME AFFECT expression','statement',3,'p_statement_affect','BrouillonTP3.py',153),
('statement -> NAME PLUS PLUS','statement',3,'p_statement_affect','BrouillonTP3.py',154),
('statement -> NAME PLUS AFFECT expression','statement',4,'p_statement_affect','BrouillonTP3.py',155),
('expression -> expression PLUS expression','expression',3,'p_expression_binop_plus','BrouillonTP3.py',166),
('expression -> expression TIMES expression','expression',3,'p_expression_binop_times','BrouillonTP3.py',170),
('expression -> expression SAME expression','expression',3,'p_expression_same','BrouillonTP3.py',174),
('expression -> expression MINUS expression','expression',3,'p_expression_binop_divide_and_minus','BrouillonTP3.py',178),
('expression -> expression DIVIDE expression','expression',3,'p_expression_binop_divide_and_minus','BrouillonTP3.py',179),
('expression -> LPAREN expression RPAREN','expression',3,'p_expression_group','BrouillonTP3.py',184),
('expression -> NUMBER','expression',1,'p_expression_number','BrouillonTP3.py',188),
('expression -> NAME','expression',1,'p_expression_name','BrouillonTP3.py',192),
('expression -> TRUE','expression',1,'p_expressionTrue','BrouillonTP3.py',196),
('expression -> FALSE','expression',1,'p_expressionFalse','BrouillonTP3.py',200),
('expression -> expression AND expression','expression',3,'p_expression_binop_boop','BrouillonTP3.py',204),
('expression -> expression OR expression','expression',3,'p_expression_binop_boop','BrouillonTP3.py',205),
('expression -> expression INFTO expression','expression',3,'p_expression_inequal','BrouillonTP3.py',212),
('expression -> expression SUPTO expression','expression',3,'p_expression_inequal','BrouillonTP3.py',213),
]