Bonjour,
Voilà plus d'une semaine que je m'arrache les cheveux, passe des nuits blanches et pire encore à cause d'un problème à la base très simple.
Je souhaite réaliser un petit programme en C++ utilisant Flex++ et Bison++ sous cygwin.
Je dispose donc d'un fichier main.l qui sera utilisé par flex++ :
d'un fichier main.y pour bison++ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 %{ #include "scanner.h" %} %% .* { ECHO; } %%
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 %{ %} %name parser %token PLOP %% test : PLOP ; %% int main() { parser monParser; monParser.yyparse(); return 0; }
Et voici mon Makefile :
Le problème vient du fait que je rencontre l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 all: yacc lex comp yacc: main.y bison++ -d -hscanner.h -oscanner.c main.y lex: main.l scanner.h flex++ main.l comp: scanner.h scanner.c lex.yy.c g++ -o cpyrr lex.yy.c scanner.c -lfl -ly
Je souhaiterais pouvoir au minimum compiler et linker sans erreur et au mieux que le programme marche./cygdrive/c/Users/BOB/AppData/Local/Temp/ccyHUZxZ.o:scanner.c.text+0x8): undefined reference to `vtable for parser'
/cygdrive/c/Users/BOB/AppData/Local/Temp/ccyHUZxZ.o:scanner.c.text+0x16): undefined reference to `vtable for parser'
collect2: ld returned 1 exit status
Et il y a très peu de documentation sur Internet ou les Manpages concernant l'utilisation de bison++ ET flex++ sous cygwin. J'ai besoin de résoudre ce problème rapidement. J'ai besoin de ce programme pour l'utiliser dans un projet plus grand pour lequel le temps est compté.
C'est dans l'urgence et à cours de solution que je m'en remet donc à votre aide.
Merci.
Partager