0% ont trouvé ce document utile (0 vote)
56 vues2 pages

Compilation TP02

Transféré par

adelpepl الجديد
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
56 vues2 pages

Compilation TP02

Transféré par

adelpepl الجديد
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Mohamed El Bachir El Ibrahimi de Bordj Bou Arreridj

Faculté des Mathématiques et d'informatique Durée : 2 Séances


Département d'informatique
Licence 3ème année Systèmes informatiques
Module : Compilation

TP N° : 02
Introduction à l’analyse lexicale
1. Objectifs :
L'objectif de ces séances de travaux pratiques de compilation est de se familiariser aux
commandes flex, un outil de compilation permet de construire un analyseur lexical à partir d’un
ensemble de règles/actions décrites par des expressions régulières.

2. Outils :
- Editeur de texte.
- Le générateur Flex
- un compilateur de c, (gcc ou un autre outil de développement utilisant le langage C).

3. Travail demandé :
3.1. Partie I : Premier pas avec Flex
- Commencer par l’installation des outils Flex, dans le dossier c:\ GnuWin32 , vérifier que Flex
est déjà ajouté dans les variables d’environnement (path)

- A partir de l’invite de commande « cmd.exe », lancer la commande :>flex --version , pour


vérifier que Flex est reconnue par le système
- Créer un dossier nommé :TP02
- Lancer un éditeur de texte : exemple bloc-notes.exe, et taper le code ci-dessus

%%
(0|1)+ printf ("c'est un nombre binaire");
.* printf ("ce n'est pas un nombre binaire");
%%
int yywrap()
{
return 1;
}
main()
{
yylex();
}

- Le fichier doit être enregistré avec l’extension. lex (exemple : TP02_binaire.lex), et Placer
dans le dossier TP02.
- A partir de l’invite de commande, lancer la commande :> Flex tp02_binaire.lex
- En cas de réussite, le fichier lex.yy.c est généré dans le même répertoire
- Utiliser un outil de développement utilisant le langage C. Pour compiler le fichier lex.yy.c pour
générer l’exécutable
Exemple : gcc lex.yy.c

Page 1/2
Module : compilation TP N° 02
- Lancer l’exécutable pour tester les séquences suivant :
Fichier : Binaire.txt
10111
12001111
111110
10002001

- En utilisant la commande :
o > lex.yy.exe <binaire.txt
o ou bien : a <binaire.txt .. Suivant le nom de votre exécutable
Exercice 01 :
- Compiler et exécuter le fichier exc1.lex suivant, que fait cet analyseur ?
%{
int c ;
%}
%%
^\n { return 0 ;}
. { c++ ; }
\n { printf("total ligne %d\n",c) ; }
%%
int yywrap()
{
return 1;
}
main()
{
c=0 ;
yylex() ;
printf("total final : %d\n",c) ;
}

- Lancer l’exécutable pour tester un fichier contient un texte quelconque.


Exercice 02 :
- Ecrire un programme Flex, qui lit un fichier et nous permet de compter le nombre de lignes, de mots et
de caractères dans le fichier

Exercice 03 :
- Ecrire un programme qui compte le nombre de voyelles, de consonnes et de caractères de ponctuations,
d’un texte entre au clavier

Exercice 04 :
- Écrire un programme Flex qui permet de reconnaître :
 Toutes les chaînes de lettres commençant par une majuscule au début d’une ligne.
 Toutes les chaînes de lettres commençant par "a" et se terminant par "e".
 Toutes les chaînes de "0" et de "1" qui contiennent le facteur "011".
 Tous les caractères "." ou "?" qui se trouvent à la fin d’une ligne.

Exercice 05 :
- Écrire un programme Flex qui permet de calculer la moyenne d’une série de nombres d’entiers

Exercice 06 :
- Construire un analyseur qui, pour chaque lettre minuscule d'un texte, affiche après chaque ligne le
nombre de fois où cette lettre est apparue en tout.
- Construire un analyseur qui, pour chaque mot (en minuscules) d'un texte, affiche le nombre de fois où ce
mot est apparu.

Page 2/2

Vous aimerez peut-être aussi