IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> compilateur avec Flex et Bison
Options
zitou20
posté 21 Nov 2014, 13:04
Message #1


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984



Bonjour,
j'ai téléchargé Flex et Bison mais j'ai pas trouver où et comment écrire mon code.
SVP j'ai besoin d'une réponse.
Merci d'avance
Go to the top of the page
 
+Quote Post
Jaypee
posté 21 Nov 2014, 14:04
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 486
Inscrit : 29 Aug 2002
Membre no 3 340



Bonjour,

Qu'est-ce qui au départ te fait commencer avec bison et flex? ça sent fort le devoir d'informatique en détresse.

As-tu entendu parler de leurs ancêtres yacc et lex? les anciens noms éclairent un peu plus sur leur destination :

- yacc est un acronyme : Yet Another Compiler Compiler. Avec une petite mutation génétique, le yack est devenu bison.
- lex : Il s'agit d'un analyseur lexical qui découpe le texte en unités qui peuvent composer une phrase.

Ensemble, ils permettent de générer du code en C, qui peut soit tourner seul, soit être intégrer dans un outil plus important.

Par exemple, on peut créer une calculette, ou un langage de commande.
Il faut pour cela créer deux fichiers :
- Un .lex : on y définit à coup d'expressions régulières ce qu'est par exemple un nombre (avec ou sans partie décimale)
- Un .y : On décrit une grammaire.

Les deux fichiers .lex et .y une fois analysés par respectivement lex (flex), et yacc (bison) produisent des sources .c et des .h

En compilant finalement avec cc (gcc) on obtient le "compilateur" ou l' "interprèteur" final.

Voilà les grandes lignes, maintenant faut bosser pour avoir le résultat.

J-P

Ce message a été modifié par Jaypee - 21 Nov 2014, 14:07.
Go to the top of the page
 
+Quote Post
zitou20
posté 21 Nov 2014, 14:14
Message #3


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984




Merci pour votre réponse, mais je dois travailler avec Flex et Bison.je suis dans la première étape j'ai téléchargé Flex et Bison et j'ai consulté un peu des tutos et quant j'ai voulu tester un exemple simple je n’ai pas trouvé où j'écrit mon premier code et comment.
Go to the top of the page
 
+Quote Post
chombier
posté 21 Nov 2014, 15:40
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Citation (zitou20 @ 21 Nov 2014, 14:14) *
Merci pour votre réponse, mais je dois travailler avec Flex et Bison.je suis dans la première étape j'ai téléchargé Flex et Bison et j'ai consulté un peu des tutos et quant j'ai voulu tester un exemple simple je n’ai pas trouvé où j'écrit mon premier code et comment.

Comme le dit Jaypee, ça sent fort le devoir d'informatique en détresse. biggrin.gif
Tu peux te baser sur ce petit exemple sur github:
https://github.com/meyerd/flex-bison-example
Tu n'a jamais utilisé le Terminal ?


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zitou20
posté 21 Nov 2014, 17:08
Message #5


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984



j'ai jamais utilisé Flex.J'ai téléchargé Flex à partir de ce lien http://sourceforge.net/projects/flex/files/flex/ et je veut écrire ce code comme un exemple ,où je doit l’écrire ?
/*
* Sample Scanner1:
* Description: Replace the string "username" from standard input
* with the user's login name (e.g. lgao)
* Usage: (1) $ flex sample1.lex
* (2) $ gcc lex.yy.c -lfl
* (3) $ ./a.out
* stdin> username
* stdin> Ctrl-D
* Question: What is the purpose of '%{' and '%}'?
* What else could be included in this section?
*/

%{
/* need this for the call to getlogin() below */
#include <unistd.h>
%}

%%
username printf("%s\n", getlogin());
%%

main()
{
yylex();
}
Go to the top of the page
 
+Quote Post
chombier
posté 21 Nov 2014, 17:37
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Le code que tu montres, tu le mets dans un fichier texte que tu enregistres sous le nom "sample1.lex", tu lances le Terminal, tu te positionnes sur le dossier dans lequel tu as créé ce fichier, et tu exécutes les commandes précédées de (1) (2) et (3).
Mais il te faut aussi gcc, et donc installer soit Xcode, soit les "Command Line Tools for Xcode".


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zitou20
posté 21 Nov 2014, 17:42
Message #7


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984



Merci mais c'est quoi le gcc ?
Go to the top of the page
 
+Quote Post
chombier
posté 21 Nov 2014, 17:46
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Citation (zitou20 @ 21 Nov 2014, 17:42) *
Merci mais c'est quoi le gcc ?

Argh ! biggrin.gif
C'est le compilateur qui va transformer le code en langage C généré par flex à partir du code flex en code exécutable par ton Mac...


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zitou20
posté 21 Nov 2014, 17:52
Message #9


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984



ok.j'ai ce code par exemple
int num_lines = 0, num_chars = 0;
%%
\n ++num_lines; ++num_chars;
. ++num_chars;
%%
main()
{
yylex();
printf( "# of lines = %d, # of chars = %d\n",
num_lines, num_chars );
}
je l’écrit dans un fichier texte et j'enregistre avec un nom simple.lex. Après,j'ouvre interpréteur du commande Windows je ping sur le fichier simple.lex et après comment j’exécute ?
Go to the top of the page
 
+Quote Post
chombier
posté 21 Nov 2014, 17:58
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Citation (zitou20 @ 21 Nov 2014, 17:52) *
je l’écrit dans un fichier texte et j'enregistre avec un nom simple.lex. Après,j'ouvre interpréteur du commande Windows je ping sur le fichier simple.lex et après comment j’exécute ?

Euh... "interpréteur du commande Windows" ? huh.gif ping ? blink.gif
Je crois qu'il te manque un minimum de base...


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post
zitou20
posté 21 Nov 2014, 18:00
Message #11


Nouveau Membre


Groupe : Membres
Messages : 6
Inscrit : 21 Nov 2014
Membre no 192 984



Oui,c'est la première foie que j'utilise Flex.En tout cas merci pour votre aide.
Go to the top of the page
 
+Quote Post
chombier
posté 21 Nov 2014, 18:15
Message #12


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 580
Inscrit : 20 Mar 2003
Membre no 6 765



Mais tu utilises bien un Mac ?
Si oui, commence par lire ça ou ça.
Sinon, va au Diable... biggrin.gif


--------------------
késtananafout' (:
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 20th April 2024 - 01:28