Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lex, Yacc et C++

13 réponses
Avatar
Erwann
Bonjour,

Je souhaite utiliser Lex et Yacc pour parser un fichier de configuration.
Mon projet est développé en C++. Savez-vous comment utiliser ces outils
pour les intégrer à mon projet, sans avoir à faire des bidouilles pour
adapter le C au C++ ?

--
Erwann Thoraval

10 réponses

1 2
Avatar
DINH Viêt Hoà

Je souhaite utiliser Lex et Yacc pour parser un fichier de configuration.
Mon projet est développé en C++. Savez-vous comment utiliser ces outils
pour les intégrer à mon projet, sans avoir à faire des bidouilles pour
adapter le C au C++ ?


le programme C généré ne compile pas en C++ ?

--
DINH V. Hoa,

etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan

Avatar
Laurent Deniau
Erwann wrote:
Bonjour,

Je souhaite utiliser Lex et Yacc pour parser un fichier de configuration.
Mon projet est développé en C++. Savez-vous comment utiliser ces outils
pour les intégrer à mon projet, sans avoir à faire des bidouilles pour
adapter le C au C++ ?


Flex et Bison on un mode C++. Lex et Yacc je ne sais pas.

a+, ld.

Avatar
Benoit Rousseau
Erwann wrote:
Bonjour,

Je souhaite utiliser Lex et Yacc pour parser un fichier de configuration.
Mon projet est développé en C++. Savez-vous comment utiliser ces outils
pour les intégrer à mon projet, sans avoir à faire des bidouilles pour
adapter le C au C++ ?



Ca dépend de ce que tu veux... est ce que tu veux juste un code
compatible C++ ? Dans ce cas, utilise Flex et Bison avec des nom de
fichier .ll et .yy.
Par contre, Flex peut générer une class yyFlexLexer ("flex -+ ...").
Cette classe est bien pratique puisque qu'elle parse des StringBuf (je
ne me souviens plus le nom exact...).
Par contre, je n'arrive pas a faire interagir cette classe de façon
correcte avec Bison... Si tu trouve une solution, post la reponse ici
parceque je suis aussi interessé...




--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Avatar
kanze
Erwann wrote in message
news:...

Je souhaite utiliser Lex et Yacc pour parser un fichier de
configuration. Mon projet est développé en C++. Savez-vous comment
utiliser ces outils pour les intégrer à mon projet, sans avoir à faire
des bidouilles pour adapter le C au C++ ?


Je ne sais pas ce que tu considères des bidouilles ; dans la passée,
je me suis toujours servi d'un script de shell pour faire des
transformations nécessaires. Même aujourd'hui, avec flex, j'ai un script
pour rendre le généré portable. (Au moins avec la version de flex que
j'ai, 2.5.4, le généré ne compile pas avec g++ 3.x.)

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Avatar
Thierry AIME
Bonjour,

Je mettais de l'ordre dans mes bookmarks et je suis tombé sur cette
librairie permettant de parser ligne de commandes et fichier de
configurations:
http://getpot.sourceforge.net/index.html


Thierry AIME

On Fri, 12 Dec 2003 09:24:59 +0000, Erwann wrote:

Bonjour,

Je souhaite utiliser Lex et Yacc pour parser un fichier de configuration.
Mon projet est développé en C++. Savez-vous comment utiliser ces outils
pour les intégrer à mon projet, sans avoir à faire des bidouilles pour
adapter le C au C++ ?


Avatar
James Kanze
Laurent Deniau writes:

|> Erwann wrote:

|> > Je souhaite utiliser Lex et Yacc pour parser un fichier de
|> > configuration. Mon projet est développé en C++. Savez-vous
|> > comment utiliser ces outils pour les intégrer à mon projet,
|> > sans avoir à faire des bidouilles pour adapter le C au C++ ?

|> Flex et Bison on un mode C++. Lex et Yacc je ne sais pas.

Oui, mais au moins avec la version que j'ai, le généré contient
une ligne :
class istream ;
quelque part près du début. Ce qui pose des problèmes si on
veut utiliser une bibliothèque un peu récent.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
Gabriel Dos Reis
James Kanze writes:

| Laurent Deniau writes:
|
| |> Erwann wrote:
|
| |> > Je souhaite utiliser Lex et Yacc pour parser un fichier de
| |> > configuration. Mon projet est développé en C++. Savez-vous
| |> > comment utiliser ces outils pour les intégrer à mon projet,
| |> > sans avoir à faire des bidouilles pour adapter le C au C++ ?
|
| |> Flex et Bison on un mode C++. Lex et Yacc je ne sais pas.
|
| Oui, mais au moins avec la version que j'ai, le généré contient
| une ligne :
| class istream ;
| quelque part près du début. Ce qui pose des problèmes si on
| veut utiliser une bibliothèque un peu récent.

Quelle version as-tu ?

La version (bison 1.33) que j'ai sur le système que j'utilise a une
connaissance de la bibliothèque.

-- Gaby
Avatar
James Kanze
Gabriel Dos Reis writes:

|> James Kanze writes:

|> | Laurent Deniau writes:

|> | |> Erwann wrote:

|> | |> > Je souhaite utiliser Lex et Yacc pour parser un fichier de
|> | |> > configuration. Mon projet est développé en C++.
|> | |> > Savez-vous comment utiliser ces outils pour les intégrer
|> | |> > à mon projet, sans avoir à faire des bidouilles pour
|> | |> > adapter le C au C++ ?

|> | |> Flex et Bison on un mode C++. Lex et Yacc je ne sais pas.

|> | Oui, mais au moins avec la version que j'ai, le généré contient
|> | une ligne :
|> | class istream ;
|> | quelque part près du début. Ce qui pose des problèmes si on
|> | veut utiliser une bibliothèque un peu récent.

|> Quelle version as-tu ?

Je ne sais exactement. J'avais eu le problème au travail, et ici, je
suis à la maison. Mais c'est assez récent (moins d'un an), parce
que j'ai dû l'installer moi-même.

|> La version (bison 1.33) que j'ai sur le système que j'utilise a
|> une connaissance de la bibliothèque.

Le problème était en fait dans flex, avec deux des executables sur
ma site. Je n'ai pas eu l'occasion de me servir de yacc/Bison
récemment.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
Gabriel Dos Reis
James Kanze writes:

| |> La version (bison 1.33) que j'ai sur le système que j'utilise a
| |> une connaissance de la bibliothèque.
|
| Le problème était en fait dans flex, avec deux des executables sur
| ma site. Je n'ai pas eu l'occasion de me servir de yacc/Bison
| récemment.

si c'est flex au lieu de bison, c'est possible. Je n'ai pas regardé
récemment -- quoique flex clame qu'il génére du C++.

-- Gaby
Avatar
James Kanze
Gabriel Dos Reis writes:

|> James Kanze writes:

|> | |> La version (bison 1.33) que j'ai sur le système que
|> | |> j'utilise a une connaissance de la bibliothèque.

|> | Le problème était en fait dans flex, avec deux des
|> | executables sur ma site. Je n'ai pas eu l'occasion de me servir de
|> | yacc/Bison récemment.

|> si c'est flex au lieu de bison, c'est possible. Je n'ai pas
|> regardé récemment -- quoique flex clame qu'il génére du
|> C++.

C'est du C++. Mais pas du C++ standard. Il compile sans problème avec
g++ 2.95.2, Sun CC mode compat=4 et VC++ 6.0. Dans le dernier cas, en
revanche, il faut faire gaffe, parce qu'il include <iostream.h>, ce qui
n'a aucun rapport avec <iostream> ; si tu te sers d'<iostream> dans ton
code, tu auras deux flux indépendant sur les entrées standard,
chacun avec ses propres buffers, etc.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
1 2