:: Enseignements :: Licence :: L3 :: 2007-2008 :: Traduction ::
| Analyse lexicale avec flex |
Le but de ce TD est de se familiariser avec l'analyse lexicale en
flex.
Exercice 1 - Mots de moins de 10 lettres
Écrire un programme flex qui extrait d'un texte tous les mots de moins
de dix lettres, sans utiliser la fonction strlen ou la variable
yyleng.
Exercice 2 - Colonne de texte
Écrire un programme
flex qui prend en entrée un texte et qui
affiche en sortie toutes les lettres de ce texte sur une colonne de 5
caractères de large. Voici ce qui doit s'afficher pour le texte
"Je crois que c'est bien, oui.":
Jecro
isque
cestb
ienou
i
Exercice 3 - Codage circulaire
Écrire un programme flex qui remplace dans un texte chaque lettre par sa suivante en conservant la
casse (a par b, B par C, z par a).
Exemple: pour "Je me sens VRAIMENT bien!":
Kf nf tfot WSBJNFOU cjfo!
Exercice 4 - Repérage des noms de fonctions en C
Écrire un programme \verb$flex$ qui prend un programme C et qui affiche tous
les noms de fonctions utilisés dans ce programme. On fera attention à ne pas
repérer abusivement les noms qui apparaissent dans les chaînes et les
commentaires. Si l'on prend en entrée le programme suivant:
/* la fonction plus(int,int) renvoie
la somme de ses paramètres */
int plus
(int a,int b) {
return a+b;
}
int main (void) {
printf ("plus(4,7)=%d\n",plus(4,7));
getchar(); // getchar() attend un retour chariot
return 0;
}
on devra obtenir la liste suivante:
plus main printf plus getchar
Exercice 5 - Coupures de mots
Les traitements de texte coupent parfois les mots en fin de ligne, en insérant un tiret juste avant
le retour à la ligne. Ecrire un programme
flex qui supprime les coupures d'un texte, en rétablissant
les mots en fin de ligne. On fera attention au caractère qui suit la fin du mot, de façon à ne pas laisser
d'espace en début de ligne et à ne pas envoyer une ponctuation à la ligne. Si l'on prend le texte suivant:
Ma grand-mère me dit sou-
vent de jouer - sagement -
à faire de la mu-
sique
pour me dis-
traire.
il ne doit pas devenir ceci:
Ma grand-mère me dit souvent
de jouer - sagement -à faire de la musique
pour me distraire
.
mais ceci:
Ma grand-mère me dit souvent
de jouer - sagement -
à faire de la musique
pour me distraire.
© Université de Marne-la-Vallée