FLEX /LEX BISON/YACC [Résolu]

alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 16 nov. 2009 à 12:09 - Dernière réponse : uaip 1473 Messages postés mardi 20 février 2007Date d'inscription 7 février 2011 Dernière intervention
- 13 mars 2010 à 11:20
JE CHERCHE A COMMENC2 AVEC CES DEUX LOGICIEL FLEX ET BISON POUR GENERER DEUX ANALYSEUR , L'OUTIL FLEX APPARAIT EN PROMPTEUR DOS MAIS JE NE SAIS PAS QUOI Y ECRIRE NI COMMENT EXECUT2 OU VERIFIE OU MEME RECUPERER MON ANALYSEUR APRES AVOIR FINIS , POUR BISON LE PROMPTEUR APPARAIT ET DISPARRAIT TOUT SUITE PAS MOYEN DE TRAVAILLER DESSUS ,.. MON PROBLEME N4EST PAS LA SYNTAXE DES LOGICIEL J4AI LA DOCUMENTATION ET SUR PAPIER JE COMENCE A TRAVAILLER ? MON PROBLEME C4EST LA MANIPULATION ET L4EXECUTION LA VERIFICATION ET L'ENREGISTREMENT . JE VOUDRAI AVOIR LES ETAPES A SUIVRE POUR AVOIR MES ANALYSEUR ? PUIS COMMENT LES INTEGRE A UN IDE POUR FAIRE UN LOGICIEL DE TRADUCTION , MERCI A TOUS
Afficher la suite 

96 réponses

Répondre au sujet
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 16 nov. 2009 à 23:32
+3
Utile
Je t'invite vraiment à lire la documentation ou les tutoriaux, c'est vraiment une réponse que tu aurais pu trouver dedans.

Voici un exemple, pour flex. Je suis sous unix, donc mon exemple est pour unix, mais à part les options de la ligne de commande, tout devrait être identique sous Windows:
- Ecrire le code dans un fichier (.l pour flex, .y pour bison, par convention)
- Générer le code C/C++: Taper dans un terminal flex fichier.l -o fichier.c
- Générer le code C/C++: Taper dans un terminal bison fichier.y -o fichier2.c
- Générer le code C/C++: Taper dans un terminal gcc -W -Wall fichier1.c fichier2.c -o prog

Sous Windows, je n'ai jamais essayé, mais je pense qu'il suffit de remplacer flex par flex.exe, et bison par bison.exe, en étant dans le bon répertoire.
L'utilisation d'un fichier .bat, devrait être possible si tu ne veux pas tout faire dans un terminal.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 21 nov. 2009 à 18:02
+3
Utile
On va faire cela par étape. Je n'ai pas Windows, mais ça devrait ressembler à cela:
- Créer un répertoire dans C:\ appelé projet.
- Copier Flex.exe, Bison.exe et tous les outils dans ce dossier.
- Copier ton projet dans ce dossier (notamment les fichier *.l et *.y)
- Ouvrir une invite de commande (Windows + R, puis taper cmd).
- Taper: C:
- Taper: cd C:\projet
- Ensuite tenter de compiler:
* Flex.exe fichier.l -olex.c
* Bison.exe fichier.y -o bison.c
* Compiler les fichier *.c (avec ce que tu veux).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 24 nov. 2009 à 18:01
+3
Utile
Soit ceci fonctionne:
flex.exe -olex.yy.c fichier.l

Soit ça ne fonctionne pas et je ne sait pas pourquoi. A la place utilise ceci:
flex.exe fichier.l

Il me semble qu'il crée un fichier nommé lex.yy.c par défaut.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 27 nov. 2009 à 23:11
+3
Utile
j'ai installé le Cygwin , et tout marche , pour généré je tappe sous TERMINAL ms-dos "bison -d fichier.y" et j'obtient deux fichier
-fichier.tab.c
-fichier.tab.h

c'est quoi c'est deux fichiers et puis comment terminé le boulot en reliant l'analyse lexicale a l'analyse syntaxique ?

merci .
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de alxidali
uaip 1473 Messages postés mardi 20 février 2007Date d'inscription 7 février 2011 Dernière intervention - 15 déc. 2009 à 00:10
+3
Utile
Salut,

Alors autant le préciser tout de suite : je n'ai pas eu le courage de lire après les 3 premières pages du topic, donc je viens peut être après la guerre.
Cela dit, j'ai codé un mini-langage compilable, avec IDE, il y a quelques temps, sous Windows.
Si tu as des questions sur l'utilisation des outils flex/bison sous Windows, je pourrais essayer d'y répondre, dans les limites de ma mémoire.
J'ai mis plusieurs mois avant de tout comprendre, seul, et je comprends que tu galères un peu.


Cordialement, uaip.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de uaip
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 15 déc. 2009 à 12:57
+3
Utile
Salut.

J'ai mis sur mon site un petit exemple propre utilisant flex et bison.
http://0217021.free.fr/Cours/tp-flexbison.tar.bz2

Pour le compiler tu tapes juste: ./compile.sh
Pour le compiler et le tester ./compile.sh test

Il y a pas mal de warnings à cause des fichiers générés qui ne sont pas très "compliant" avec le dernier g++.

Si cet exemple fonctionne, il ne te restera qu'à réaliser ton projet (en remplaçant compile.sh par un Makefile propre).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 17 déc. 2009 à 17:08
+3
Utile
j'ai resou le problem j'ai cr un nouveau projet et j'ai ajouté le fichier généré par lex comme header et ca marche tres bien mnt , je commence alors a m'attaquer a l'analyse syntaxique
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de alxidali
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 18 déc. 2009 à 12:16
+3
Utile
Comment faire pour lier tout cela est avoir un analyseur syntaxique pré a l'usage

En gros tu compiles ton code en C++, comme tu le ferais pour un programme normal. Tu ajoutes bien evidemment une classe main qui exploite les fonctions crées par Flex et Bison.
Regarde l'exemple que je t'ai donné, tout est dedans :).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
uaip 1473 Messages postés mardi 20 février 2007Date d'inscription 7 février 2011 Dernière intervention - 24 déc. 2009 à 17:37
+3
Utile
http://winky.fr/fb.zip

Cordialement, uaip.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de uaip
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 26 déc. 2009 à 22:11
+3
Utile
j'ai pas tres bien compris l'utilité des ses deux variables dans mon probleme mais meme avec ca ne marche pas

Tu utilises argv pour récupérer le nom du fichier et l'exploiter:
int main(int argc, char** argv)
{
  int i = 0;

  for (i = 0; i < argc; ++i)
    printf("Arg %i = %s\n", i, argv[i]);

  return 0;
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cptpingu
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 16 nov. 2009 à 12:44
0
Utile
C'est particulièrement impoli d'écrire entièrement en majuscule (on a l'impression que tu cries et ordonnes). Ne t'attends pas à avoir une réponse.

Voir le reglement: http://www.cppfrance.com/reglement.aspx
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 16 nov. 2009 à 19:44
0
Utile
je suis vraiment désolé , loin de moi l'idée d'ordonner ou meme de crier , juste que j'ignorai cette clause du reglement , et meme se fut ecrit dans l'urgence de mon probleme sans faire attention . encore désolé , mais aidez moi s'il vous plait
Commenter la réponse de alxidali
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 16 nov. 2009 à 22:43
0
Utile
Tous d'abord, as-tu lu la documentation de Flex et Bison ?
Flex: http://www.cs.uaf.edu/~cs631/lex-docs.txt
Bison: http://www.cs.uaf.edu/~cs631/yacc-docs.txt

As-tu cherché des tutoriaux pour ces deux outils ?
http://www.google.fr/search?source=ig&hl=fr&rlz=&=&q=tutoriel+flex+bison&btnG=Recherche+Google&meta=lr%3D&aq=0&oq=tutoriel+flex%2Fbi

As-tu cherché sur ce site même ?
http://www.codes-sources.com/r/global.aspx?r=flex+et+bison

Trouver des informations sur ces outils, demande quelques connaissances d'anglais. Voici tout de même quelques tutoriaux:
http://linuxfr.org/2004/08/26/17106.html

Un example:
http://www.mail-archive.com/help-bison@gnu.org/msg00156.html

juste que j'ignorai cette clause du reglement


Ce n'est pas une clause du réglement, cette une question de bon sens. C'est "règle" est valable sur tous les supports (mails, chat, forum, articles, etc...), et pas seulement sur ce site.
Une image résume vraiment bien ceci :)
http://www.geekologie.com/2009/09/01/WRITING-IN-CAPS.jpg

D'une manière générale, ce lien là est extrêmement intéressant.
http://www.gnurou.org/writing/smartquestionsfr

Bonne chance pour flex/bison la documentation pertinente n'est pas facile à trouver.
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 16 nov. 2009 à 23:09
0
Utile
tres content que vous repondiez je trouve serieusement votre reponse necessaire , mais encore unpeu insufisante car , le probleme en question est que bison apparait et disparait , donc je ne meme pas y ecrire quoi que se soit , et puis les etapes pour debuté et finalisé un projet , et non la documentation sur la syntaxe , car sur papier j'arrive a peu pré a ecrire des code de flex et de bison , mais comment ecrire sur les logiciel en question et terminé un projet et puis enregistré et éxécuté ...en tout cas merci beacoup pour votre reponse comme je le disais elle m'a été tres bénéfique . merci
Commenter la réponse de alxidali
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 16 nov. 2009 à 23:17
0
Utile
Ta demande est assez flou. J'ai du mal a délimiter ton problème. Est-ce un problème de code ou d'utilisation de ces outils ? Peux-tu préciser ta question ?

bison apparait et disparait , donc je ne meme pas y ecrire quoi que se soit

Normalement, tu n'écris pas quand Flex ou Bison te le demande, mais dans un fichier. Ce fichier tu le donnes à Flex ou a Bison, qui va te générer un code en C ou C++.
Regarde donc les liens vers les exemples que je t'ai donné (je parle bien d'exemples et non de tutoriaux ou de documentations). Si tu arrives à faire fonctionner ceux-ci, tu devrais comprendre comment faire fonctionner ton projet.
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 16 nov. 2009 à 23:21
0
Utile
j'avais cru ecrire directement sur flex ou bison , je suis tres content de commencer a comprendre , donc je doit ecrire sur un fichier externe et flex ou bison ne fera que générer le code en c ou c++ , d'accord une premiere information essentiel , mnt le probleme qui se pose et c'est le dernier apres avoir reglé tout les autre je vous en remercie , c'est que supposons que j'ai ecrit un code pour bison , je ne pourrai pas lui proposer car le prompteur apparait et disparait tout de suite ...
Commenter la réponse de alxidali
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 16 nov. 2009 à 23:37
0
Utile
se fut un plaisir malgré que qu'on ai commencé par se chamaié unpeu lol ,tres grand merci a vous .
Commenter la réponse de alxidali
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 21 nov. 2009 à 14:22
0
Utile
d'accord j'ai compris le concept maintenant j'ai passé le week-end a etudier flex , maintenant que j'ai préparé mon fichier ".l" je n'arrive pas a généré le code ".c" les options de la ligne de commande sous MS-DOS sont flou et rien ne marche , j'ai meme installé le VI , au cas ou , aidez moi s'il vous plait ...
Commenter la réponse de alxidali
cptpingu 3784 Messages postés dimanche 12 décembre 2004Date d'inscription 18 avril 2018 Dernière intervention - 21 nov. 2009 à 14:29
0
Utile
Vi n'as rien à voir. C'est juste un éditeur.

Très honnêtement, je ne sais pas le faire sous Windows. Je travaille généralement sous Unix.

Tu as surement des exécutables qui te permettent de le faire. Question bête: as-tu installé ou téléchargé des outils pour compiler du Flex/Bison sous Windows ?
Commenter la réponse de cptpingu
alxidali 97 Messages postés mardi 21 juillet 2009Date d'inscription 10 octobre 2011 Dernière intervention - 21 nov. 2009 à 14:33
0
Utile
eu non , je ne vois pas quoi tu veux parlé , juste flex et bison , c'est tout , en plus je vois sur le net que toute personne qui utilise ces deux utilitaire les utilises sous linux , devrais installé mandriva en plus de mon OS , pour travailler a l'aise avec ?
Commenter la réponse de alxidali

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

FLEX /LEX BISON/YACC - page 2