[Flex/Bison]Comment utiliser Flex/Bison avec Visual C++

Comment utiliser Flex/Bison avec Visual C++ [Flex/Bison] - C - Programmation

Marsh Posté le 15-11-2005 à 17:03:02    

Slt,
 
Apres avoir deja bien bataillé pour faire fonctionner mes fichiers Flex/Bison sur Windows avec gcc de Mingw, je dois maintenant les utiliser avec Visual Studio .Net 2003.  
 
Sauf que, comment utiliser flex et bison avec VC++?
 
Avec gcc, je faisais:
 

Code :
  1. flex file_1.lex
  2. bison -y file_2.yacc
  3. gcc -c y.tab.c
  4. gcc -o testmain testmain.c y.tab.o


 
En appliquant ceci tout marchait trres bien, mais maintenant comment reproduire cette compilation sous VC++?
J'ai testé en créant un projet console dans lequel j'ai mis:
 
Source -> testmain.c + y.tab.c + lex.yy.c
Header -> testmain.h

 
Mais VC++ me renvoie enormement d'erreur par rapport au fonction de flex et bison. Donc avant de coller les messages d'erreur de VC++ sur le forum, je souhaiterais savoir si ma méthode est bonne en ce qui concerne la création de mon projet?
 
Merci
++


Message édité par cervantes le 15-11-2005 à 17:04:15
Reply

Marsh Posté le 15-11-2005 à 17:03:02   

Reply

Marsh Posté le 15-11-2005 à 19:13:20    

Salut
Tu peux peut-être trouver des choses intéressantes ici : http://www.motiwala.com/flex.htm

Reply

Marsh Posté le 15-11-2005 à 20:10:14    

Ok merci,
 
je vous donne quand meme les erreurs que j'ai à la compilation de y.tab.c avec VC++:
 

Code :
  1. y.tab.c(928): error C2692: 'yylex' : fonctions entièrement prototypées requises dans le compilateur C avec l'option '/clr'
  2. lex.yy.c(1461): error C2197: 'isatty' : trop d'arguments pour un appel via le pointeur de fonction
  3. lex.yy.c(676): error C2197: 'yy_create_buffer' : trop d'arguments pour un appel via le pointeur de fonction
  4. lex.yy.c(1000): error C2197: 'yy_fatal_error' : trop d'arguments pour un appel via le pointeur de fonction
  5. lex.yy.c(1393): error C2197: 'yy_flex_alloc' : trop d'arguments pour un appel via le pointeur de fonction
  6. lex.yy.c(1428): error C2197: 'yy_flex_free' : trop d'arguments pour un appel via le pointeur de fonction
  7. lex.yy.c(1450): error C2197: 'yy_flush_buffer' : trop d'arguments pour un appel via le pointeur de fonction
  8. lex.yy.c(1335): error C2197: 'yy_init_buffer' : trop d'arguments pour un appel via le pointeur de fonction
  9. lex.yy.c(1577): error C2197: 'yy_scan_buffer' : trop d'arguments pour un appel via le pointeur de fonction
  10. lex.yy.c(1547): error C2197: 'yy_scan_bytes' : trop d'arguments pour un appel via le pointeur de fonction
  11. lex.yy.c(1528): error C2197: 'yy_switch_to_buffer' : trop d'arguments pour un appel via le pointeur de fonction
  12. lex.yy.c(925): error C2197: 'yy_try_NUL_trans' : trop d'arguments pour un appel via le pointeur de fonction
  13. y.tab.c(1288): error C2197: 'yyerror' : trop d'arguments pour un appel via le pointeur de fonction
  14. lex.yy.c(970): error C2197: 'yyrestart' : trop d'arguments pour un appel via le pointeur de fonction
  15. y.tab.c(700): error C2692: 'yydestruct' : fonctions entièrement prototypées requises dans le compilateur C avec l'option '/clr'
  16. y.tab.c(1174): error C2692: 'yyerror' : fonctions entièrement prototypées requises dans le compilateur C avec l'option '/clr'


 
N'ayant pas eu ces erreurs avec gcc de mingw, je ne sais pas quoi faire.
 
++

Reply

Marsh Posté le 15-11-2005 à 20:38:15    

Il a l'air de lui manquer un .h contenant les prototypes des fonctions. Désactive peut-être l'option /clr du compilo puisque c'est ce qu'il semble vouloir, mais ça ne devrait rien donner

Reply

Marsh Posté le 15-11-2005 à 21:18:30    

je n'ai aucun .h contenant de prototype. Ca marchait sans avec mingw
Ne serait ce pas plutot des options à rajouter dans le fichier .lex?
 
Tu sais ou on désactive l'option /clr dans VC++? je n'ai rien trouvé en rapport avec ca, d'ailleurs c quoi /clr?


Message édité par cervantes le 15-11-2005 à 21:19:57
Reply

Marsh Posté le 15-11-2005 à 21:28:57    

J'ai le même problème que toi, j'ai regardé dans le MSDN, j'ai rien vu non plus.

Reply

Marsh Posté le 15-11-2005 à 21:41:29    

Ca m'embete bien ca.
En fait,  au début j'avais d'autres message d'erreur du meme type que ceux que j'ai précisé ci dessus, comme celui-ci:
 

Citation :

error C2197: 'add_correspondance' : trop d'arguments pour un appel via le pointeur de fonction


 
Ici j'ai pu corrigé ca en créant effecivement un .h avec la déclaration de cette fonction, mais je n'ai aps réussi a faire de meme avec ces fonctions car je ne connais pas leur prototype.
 
 
[EDIT] je viens d'installé Visual C++ 2005 Beta et les errors se sont traduisent en Warning. Ca m'arrange qu'a moitié car au taf on a la version 2003  :cry:


Message édité par cervantes le 15-11-2005 à 21:50:07
Reply

Marsh Posté le 15-11-2005 à 23:04:16    

Trap D a écrit :

Salut
Tu peux peut-être trouver des choses intéressantes ici : http://www.motiwala.com/flex.htm


J'ai testé ce qui est indiqué a cette adresse, mais ensuie, une fois avoir flex.exe, flexlib.lib, qu'est ce que j'en fait et comment ce servir de ces fichiers?

Reply

Marsh Posté le 16-11-2005 à 21:15:43    

Ben, c'est en cherchant pour toi que j'ai trouvé ça, je ne sais absolument pas ce que ça peut donner, comme il y a avait une adresse où on pouvait écrire, je me suis dit que tu pourrais essayer, c'est tout. :o  
Tu as essayé de lancer le flex.exe ?

Reply

Marsh Posté le 16-11-2005 à 23:04:54    

Bon alors j'ai réussi a compiler flex/Bison avec vc++, j'ai modifié une option du projet et apres pu une seule erreur.
Pour le flex.exe, je ne l'ai pas essayé car sur la version de VC++ du boulot il ne compile pas a cause d'un probleme d'ouverture du fichier scan.l  :(  
Faudrait que je le lance sur mon pc, j'avais réussi à le compiler.
Je te dis quoi des que possible
 
++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed