Utiliser flex et bison
Résoluje suis entrain de réaliser un compilateur.
je dois nécessairement utiliser les outils flex et bison.
j'ai réussi à télécharger ces 2 outils et je m'ai documenté un peu à propos de ces derniers. mais voilà la question qui est très simple : comment dois je faire pour compiler les fichier.lex et .y?
c à d est ce que je dois ouvrir l'executable de flex ou de bison ou l'invite de commnades (pour écrire les commandes ) ou même compiler les fichier avec le compilateur c++?
voilà je suis bloquée et j'ai pas compris comment compiler les fichiers .lex et .y
j'ai beson d'aide, please.
Configuration: Windows XP Internet Explorer 7.0
4 réponses
La discussion porte sur l'utilisation des outils flex et bison pour créer un compilateur et sur la manière de compiler les fichiers .lex et .y, notamment sous Windows. Plusieurs réponses évoquent l'utilisation d'environnements compatibles comme MinGW sur Windows et l'exécution des outils via l'invite de commandes plutôt que d'ouvrir des exécutables, avec des références vers des ressources historiques et des tutoriels. D'autres éléments abordent la confusion entre lex et flex sous Windows et la possibilité d'exécuter lex seul pour l'analyse lexicale, ainsi que la manière de fournir un fichier source à analyser par les programmes générés. En cas de doute, des réponses mentionnent aussi des variantes Unix ou Windows et l'intérêt d'utiliser un environnement de développement adapté comme MinGW ou Cygwin.
-
Salut,
pour générer les fichiers C à partir de ces deux fichiers .l et .y, tu dois ouvir l'invite de commande et taper les commandes suivantes :
flex -oNomFichier.c Nomfichier.l
bison -d NomFichier.y
cl NomFichier_tab.c Nomfichier.c
Bonne chance-
-
@roufafunBonjour,
Si c'est possible tu peux me filer ton adresse E-mail pour t'envoyer deux documents qui peuvent certainement t'aider dans la réalisation de ton projet (je les ai utilisé personnellemnt dans mon projet de fin d'ètudes).
-
-
recherche
bison mingw
flex mingw
done
http://cobcurses.wiki.sourceforge.net/Install-MinGW-bison
http://cobcurses.wiki.sourceforge.net/Installing-MinGW-flex
ça a l'air pas mal-
bonjour
Enfin j'ai arrivé à faire tourner corretement l'exemple. bon j'ai réinstallé une autre version de flex (qui dispose de la librairie libfl.a). et ça marche très bien.
pour ton support et tes précieuses conseils je veux te dire mille mercis. tu m'as soulagée et suis très reconnaissante.
Merci. -
Bonjour j'adresse la parole pour tous qui ont éprouvé des difficultés lors de l'excecution de l'exemple de la calculatrice sous windows et non Unix.
cet exemple est situé à cette page : http://www.linux-france.org/article/devl/lexyacc/minimanlexyacc-4.html
1) vous devez télécharger n'impote quel version de bison
2) vous devez télécharger la version Flex se trouvant à cette page : https://sourceforge.net/projects/gnuwin32/files/flex/
3) vous devez télécharger MinGW : pour télécharger gcc qui sera utilisé ultérieurement
4)pour compiler l'exemple et faire dégager l'éxcecutable, vous devez saisir sous l'invite de commandes (sous Windows)
bison -d calc.y
// au lieu de saisir commande bison tout court vous devez saisir tout le chemin d'accès conduisant à l'emplacement de bison par exemple : "C:/LexYacc/Bison/bin/bison.exe" -d calc.y
de même pour le reste des commandes flex et gcc sans oublier l'extension .exe
move calc.tab.h calc.h
move calc.tab.c calc.y.c
flex calc.lex
move lex.yy.c calc.lex.c
gcc -c calc.lex.c -o calc.lex.o
gcc -c calc.y.c -o calc.y.o
gcc -o calc calc.lex.o calc.y.o -lfl
j'espère que ça sera bien facile à comprendre et à l'appliquer. -
Bonjour TLa
je suis bien reconnaissante por ton aide et soutien.
Mais j'ai d'autreS questions à propos de Lex et Yacc. Si tu peux m'orienter encore une fois.
comment faire tourner lex tout seul c-a-d comment faire tourner un analyseur lexical tout seul sans obligatoirement passer par l'analyse syntaxique.
une deuxieme question si tu permet : comment fournir un fichier contenent le coude source à analyser au programme (lex et yacc)?
TLa, je compte sur toi mon ami(e). -
@rouroubonjour TLa,
moi aussi j'ai le meme probleme que rourou, je veux donner a l'executable fournis apres compilation par flex et bison un fichier deja pres, dans lequel se trouve le code source a compiler.
comment faire ceci???
merci -
-
-
-
-
@rourouje ne sais pas trop si il y en a des natifs win32.
en utilisant cygwin, tu aurra un gcc, g++, du flex, du bison ...
http://cygwin.com/cgi-bin2/package-grep.cgi?grep=bison -
@TLamerci beaucoup pour ton aide bien que j'ai pas bien compris ta réponse.
bon je me suis débrouillée et j'ai réussi à compiler un premier exemple avec flex et bison. j'ai suivi à la lettre l'exemple figurant dans ce lien http://www.linux-france.org/article/devl/lexyacc/minimanlexyacc-4.html
et comment dire ?
j'ai saisis toutes ces lingnes de commandes
>bison -d calc.y
>mv calc.tab.h calc.h
>mv calc.tab.c calc.y.c
>flex calc.lex
>mv lex.yy.c calc.lex.c
>gcc -c calc.lex.c -o calc.lex.o
>gcc -c calc.y.c -o calc.y.o
>gcc -o calc calc.lex.o calc.y.o -ll -lm [eventuellement -lfl]
tout va bien sauf la dernière ligne de commande un message d'erreur est tjrs affiché :
connot find -lfl ou bien connot find -ll
quoi faire ? sachant que dans cette page http://www.linux-france.org/article/devl/lexyacc/minimanlexyacc-4.html l'auteur a mentionné la phrase suivante : "Il suffit alors de compiler, sans oublier de linker avec la librairie mathématique ("-lm") et la librairie spéciale Lex ("-ll"). "
" est ce que je dois télecharger qql chose dll ou autre?
si tu m'envois une rèponse je serais fortement reconnaissante.
merci TLa pour ton support. -
@rourouBonjour,
sur quoi tu execute ces commandes ?
si c'est cygwin, il te faut le package flex/flex-2.5.33-1 :
http://cygwin.com/cgi-bin2/package-cat.cgi?file=flex%2Fflex-2.5.33-1
qui te fourni : /usr/lib/libfl.a
et
gcc -o calc calc.lex.o calc.y.o -ll -lfl
devrait alors fonctionner -
@TLasalut TLa
j'utilise plutôt MinGW.
-
-
salut
j'attends une réponse.
je souffre.
une réponse SVP.
j'ai une autre question : flex et bison sont à utiliser pour un système Unix ou Windows?