Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

TP 8

INF4061– LANGAGES & COMPILATEURS


Responsable Module: Oussama SMIMITE
Niveau: 4ème Année Année: 2022/2023
Filière: G. Informatique Session: 2 – Hiver 2023

Les expressions régulières avec LEX


Dans ce premier TP. nous commencerons à coder des programmes sous LEX afin
de créer un analyseur lexical avec cet outil. Nous utiliserons le logiciel EditPlus
Text Editor pour écrire. compiler, et lancer nos programmes. Nous partons du
principe qu’un programme LEX de base s’écrit de cette manière :

%{
#i n c l u d e <s t d i o . h> // Pour A f f i c h e r l e s m es sag es en s o r t i e
%}

%%
// D e s c r i p t i o n d e s ER e t a f f i c h a g e de message
%%
i n t yywrap ( ) { // Permet de b o u c l e r s u r l e s UL a r e c o n n a i t r e

return 1;

}
main ( ) {

p r i n t f ( ” E n t r e r l e s UL e t j e v a i s l e s r e c o n n a i t r e ” ) ;

yylex ( ) ; // Lancer l ’ a n a l y s e d ’ une UL

Exercice 1
Donnez sous LEX le code qui identifie et affiche un message suivant le tableau
suivant :
Expression régulière à reconnaitre Message à afficher
+ - / ou * Operateur
F. FF. FFF. ... Une suite de F
abab, ababab, abababab. ... Deux ab ou plus
AZE. As2. b3A. SSo. 123. 34c ... Mot de longueur 3

• Donnez sous LEX le code nous permettant de reconnaitre :


– Un nombre entier et un nombre réel.
– Un identificateur qui commence obligatoirement par une majuscule
suivie d’au moins un caractère alphanumérique, et  ER non recon-
nue  pour toutes autres choses.

• Donnez en LEX le code qui reconnait les expressions régulière telles que:
b ART c22 r44c2 pTR ple 5

• Mais ne reconnait pas les expressions régulières telles que:

z pi n_ _2

Exercice 2
Ecrire des expressions régulières pour reconnaitre :

1. les identificateurs du C (commencent par une lettre ou un , puis une suite de chiffres, lettres ou );

2. les chaines de caractères du C ;

3. les commentaires du C (/* ... */ et // ...) ;

4. les entiers (décimal, hexadécimal 0x... et octal 0...)

Exercice 3
Que fait le programme flex suivant ?

%%
”/∗” p r i n t f (”<SE>”);
”∗/” p r i n t f (”<ASE>”);
”\\n” p r i n t f (”<ASN>”);
” ( ” | ” [ ” | ” { ” p r i n t f (”<PO>”);
” ) ” | ” ] ” | ” } ” p r i n t f (”<PF>”);
”?”+ p r i n t f (”<?;%d>”, y y l e n g ) ;
. ;
%%
i n t main ( ) {
yylex ( ) ;
return 0;
}

You might also like