Cherche exemple simple (et qui compile!) de Bison++/Flex++

Cherche exemple simple (et qui compile!) de Bison++/Flex++ - C++ - Programmation

Marsh Posté le 20-03-2005 à 13:54:02    

Salut,
 
Je dois écrire un programme utilisant Flex & Bison. Le programme final étant en C++ je me suis dis que tant qu'à faire autant utiliser Flex++ et Bison++ histoire de faire les chosses proprement.
 
Autant je m'en sort avec Flex et Bison autant c'est le casse tête total avec leur homologue ++.
J'arrive même pas à trouver un exemple simple qui compile.
J'ai chipoté avec /usr/share/doc/bison++/Example/ (fournit avec le package Debian) et http://www.mario-konrad.ch/index.php?page=20024 mais rien n'y fait, quand c'est pas à la compil que ca foire c'est au linkage!
 
Bref, quelqu'un aurait-il un exemple simple qui compile afin que je puisse m'en inspirer?
 
merci beaucoup

Reply

Marsh Posté le 20-03-2005 à 13:54:02   

Reply

Marsh Posté le 20-03-2005 à 16:46:39    

pourrais tu poster les erreurs de compil/link pour qu'on puisse voir de quoi il s'agit ?
 
tu es sous quel compilo ?
t'as bien rajouté le .h fourni et qui définit tes classes ?
 
c'est quoi ta version de flex et bison ?
 
je me suis juste servi de flex...
je créer mon .cc en faisant flex -+ ...
 
ça ne compilait pas non plus du premier coup, il fallait juste rajouter #include <istream>
using namespace std;
 
(et virer le class istream que flex avait généré ...)
 
et changer le #include <FlexLexer.h>
en #include "FlexLexer.h" pour qu'il aille le chercher ou je voulais ...
 
Enfin voila ... essaye de voir si tu n'as pas des problèmes du même type ...

Reply

Marsh Posté le 20-03-2005 à 17:21:49    

Après moultes bidouillage, le mieux que j'ai su faire c'est avoir une erreur au linkage.

Code :
  1. g++ -o rss scanner.o parser.o Compiler.o -lfl
  2. parser.o(.text+0xb): In function `RssParser::RssParser[not-in-charge]()':
  3. : undefined reference to `vtable for RssParser'
  4. parser.o(.text+0x2b): In function `RssParser::RssParser[in-charge]()':
  5. : undefined reference to `vtable for RssParser'
  6. Compiler.o(.gnu.linkonce.r._ZTI8Compiler+0x8): undefined reference to `typeinfo for RssParser'
  7. Compiler.o(.gnu.linkonce.t._ZN9RssParserD2Ev+0xb): In function `RssParser::~RssParser [not-in-charge]()':
  8. : undefined reference to `vtable for RssParser'
  9. collect2: ld returned 1 exit status


 
J'utilise g++ 3.3.5, bison++ 1.21.11 et flex 2.5.31 le tout avec les derniers paquets de la ubuntu Hoary.
 
Aurais-tu un code (simple) une fois toutes ces modifications effectuées qui compile?

Reply

Marsh Posté le 20-03-2005 à 23:41:30    

désolé mais j'ai fait ça il y a longtemps et en plus sans bison et sous windows, donc te donner un exemple simple qui compile ne serait pas facile ...
 
sinon :
http://www.icce.rug.nl/documents/c [...] tml#an2048
 
T'as pas oublier de définir une fonction dont tu herite ?
 
sinon je suppose que tu as vu ca ? http://dinosaur.compilertools.net/ [...] html#SEC19
 
et surtout ca (section 20.8): http://www.icce.rug.nl/documents/cplusplus/
 
désolé mais la je peux rien faire de plus que te filer ces liens que tu as sans doute déjà vu ...
 
je sais que ca m'avait pris 3 jours a faire marcher ça correctement,  à force de tatonner tu vas finir par y arriver ...

Reply

Sujets relatifs:

Leave a Replay

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