Salut tout le monde ,
Je suis en train de faire un tout mini compilateur C avec Flex et Bison. Mon problème est que lorsque j'analyse ma grammaire avec Bison j'ai un problème de décalage/réduction (2 Décalage/Réduxtion) que je n'arrive pas à résoudre.
Voila un extrait de la grammaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Declaration : Constante Variable Tableau
            ;
 
Constante   :
            | "const" CHAR IDF "=" CAR ";" Constante
            | "const" INT IDF "=" ENTIER ";" Constante
            | "const" FLOAT IDF "=" REEL ";" Constante
            | "const" CHAR "*" IDF "=" CHAINE ";" Constante
            | "const" CHAR "[]" IDF "=" CHAINE ";" Constante
            ;
 
Variable    :
            | CHAR IDF ";" Variable
            | INT IDF ";" Variable
            | FLOAT IDF ";" Variable
            ;
 
Tableau     :
            | "char" SuiteTab
            | "int" SuiteTab
            | "float" SuiteTab
            ;
 
SuiteTab    : IDF Index ";" Tableau
            ;
 
Index       : "[" ENTIER "]" Index
            | "[" ENTIER "]"
            ;
Le problème se situe au niveau de Tableau car lorsque je supprime la partie tableau le problème disparait!

Voila voila Merci d'avance!

EDIT:

Désolé de ce post inutile je viens de résoudre le problème
Voila les modifs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
Declaration : Constante Variables
            ;
 
Constante   :
            | "const" CHAR IDF "=" CAR ";" Constante
            | "const" INT IDF "=" ENTIER ";" Constante
            | "const" FLOAT IDF "=" REEL ";" Constante
            | "const" CHAR "*" IDF "=" CHAINE ";" Constante
            | "const" CHAR "[]" IDF "=" CHAINE ";" Constante
            ;
 
Variables   :
            | CHAR IDF SuiteVar ";" Variables
            | INT IDF SuiteVar ";" Variables
            | FLOAT IDF SuiteVar ";" Variables
            ;
 
SuiteVar    : 
            | Index
            ;
 
Index       : "[" ENTIER "]" Index
            | "[" ENTIER "]"
            ;
Voila voila Merci!