L'anlyse lexical avec lex

manalou -  
badr.echec Messages postés 23 Statut Membre -
[debutante]

Bonjour,
je cherche la documentation sur lex, et si c'est possible des exemples pour la réalisation d'un anlyseur lexical en utilisant lex.

aider moi sil vous plai.

18 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
Bonjour,

C'est domage il fut une époque ou j'en avais réalisé un mais j'ai perdu ces données :'(
Toujours est il que tu peux regarde ces quelques exemples pour comprendre comment ca marche :
http://veille-srv.inist.fr/dilib/v04Veille/Documentation/Tutorial/4/2/tp.fre.html

Voici un autre lien sur lex :
http://www.google.fr/url?sa=t&ct=res&cd=6&url=http%3A%2F%2Fforum.topflood.com%2Ftutorial-yacc-t3166.html&ei=EWyDR6nyEY6W-AKz6pjnDw&usg=AFQjCNFoYRlwVpFeG6lUpkC0AbMlaDrCrw&sig2=rYajUzvQhGo9gtfDTWgL5Q
0
manou
 
merci beaucoup pour votre reponse, mais j'ai toujours besoin d'un aide pour la realisation d'un anlyseur lexical avec lex.

a part ce problème, je doit aussi realiser un analyseur syntaxique avec le yacc. Si vous avez quelques choses pour m'aidée, aider moi s'il vous plai.

je vous remercie encore une fois. aider moi....
0
Nico# Messages postés 338 Statut Membre 102
 
Salut, Et ton probleme pour la realisation de l'analyseur est ou exactement.
0
manou
 
bonjour

merci beaucoup Nico#, je doit realiser un analyseur lexical en utilisant lex pour une specification d'une interface homme machine ( une interface graphique ) et cette specification est ecrite dans un fichier texte que je doit analyser et afficher les erreurs.
si vous pouvez m'envoyé quelques idées pour mon probleme, je vous remercie d'avance.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Nico# Messages postés 338 Statut Membre 102
 
Il faut que tu commence par definir tes regles

exemple pour le lanage pascal C'est du C

c = getchar();
switch (c) {
case ':' : c=getchar();
if (c== '=')
{
unite_lex = AFFECTATION;
c= getchar();
}
else
unite_lex = DEUX_POINTS;
break;
case '<' : unite_lex := OPREL;
c= getchar();
if (c=='=')
{
attribut = INFEG;
c = getchar();
}
else
attribut := INF
break;
case .....
0
manou
 
bonjour

Merci beaucoup pour votre reponce Nico#,je vais essayé d'appliquer votre conseil.
je voulais vous demander si vous avez une idée comment faire pour indiquer au programme lex le fichier a analyser,d'une autre façon est ce que je doit indiquer le chemin ou se trouve le fichier a analyser ou comment?

merci.
0
Nico# Messages postés 338 Statut Membre 102
 
Non il faut creer votre fichier Lex et votre fichier Yacc pour ensuite le passer en ligne de commande comme le compilateur G++ avec C++
0
manou
 
je vous remercie encore une fois pour votre reponse.
justement moi je travaille avec "le Parser Generator version 1.12" , ce dernier contient un fichier .l (pour lex) et un fichier.y ( pour yacc) .aprés l'exécutions de ces deux fichiers, le Parser génère le code source de l'anlyseur lexical en c++ (et aussi le code source de l'anlyseur syntaxique).
j'espère que vous avez bien compri avec quoi je travaille, j'aimerai bien que vous m'expliqué plus votre dernière reponse.

merci.
0
Nico# Messages postés 338 Statut Membre 102
 
Aucun probleme manou mais ce soir je n'ai malheureusement pas le temps de le faire cependant je n'y manquerait pas demain soir.
0
manou
 
merci beaucoup Nicau#, c'est trés gentil de ta part. j'attent avec impatince votre reponse.

merci.
0
Nico# Messages postés 338 Statut Membre 102
 
>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]

Avec tout fichier Lex qui s'appelle calc.lex et ton fichier yacc calc.y

Désoler c'est avec Bison et Flex mais sinon c'est pareil
0
Nico# Messages postés 338 Statut Membre 102
 
Si sa t'interesse je peut t'envoyer un mini cour sur lex et yacc
0
manou
 
merci beaucoup Nico#, et pour le cours sa m'interesse bien sur.

merci.
0
Nico# Messages postés 338 Statut Membre 102
 
Alors donne moi une adresse a laquelle je peut te l'envoyer
0
manou
 
mon adresse est : didja_28@hotmail.com
0
manou
 
bonjour Nico#

merci beaucoup pour les cours que vous m'avez envoyé, sa ma vraiment aidé.et si vous avez toujours autres choses qui peut m'aidé vous pouvez me les envoyer, surtout pour le yacc car j'ai toujours des problemes.

merci.
0
en java
 
programe en java d'analyse lexical
0
badr.echec Messages postés 23 Statut Membre 1
 
bonjour,
je cherche un exemple d'un analyseur lexical pour le langage c Shell. et merci beaucoup.
0