Vous êtes sur la page 1sur 75

Faculté des Sciences Agadir

Département Informatique
Filière SMI
Semestre 5

Compilation

Par Mustapha Machkour


Chapitre 2

Comprendre les concepts et les notions de l'analyse lexicale 1

Expressions régulières
Objectifs
 Objectifs de l’analyse lexicale
 Analyse préliminaire
 Alphabet et langage
 Opérations sur les langages
 Les unités lexicales, lexèmes et modèles
 Les expressions régulières
 Opérations des expressions régulières

FS Agadir SMI 20-21 Compilation 3


 Objet de l'analyse lexicale
- Première phase du compilateur(fait partie du
front-end)
- Lecture du texte caractère par caractère d'un
programme source
- Regrouper les caractères pour en former des
unités lexicales
- Présenter les unités lexicales trouvées à
l'analyseur syntaxique

FS Agadir SMI 20-21 Compilation 4


 Analyse lexicale en deux phase
Phase de Lecture + phase d'analyse lexicale
proprement dite

FS Agadir SMI 20-21 Compilation 5


 Phase de lecture
Extraction des caractères + suppression des
blancs, fin de ligne, des tabulations , des
commentaires = phase préliminaire

FS Agadir SMI 20-21 Compilation 6


 Phase d'analyse lexicale
Reconnaissance des mots ou des lexèmes en
utilisant des modèles ou des spécifications

FS Agadir SMI 20-21 Compilation 7


 Schéma analyseur lexical

FS Agadir SMI 20-21 Compilation 8


 Analyse lexicale = phase séparée
Pourquoi?
- Simplicité de la conception
Séparation des tâches(an. lexical et an.
syntaxique)
- Portabilité du compilateur
- Efficacité (tâche mécanique)
- Existence des outils générateurs

FS Agadir SMI 20-21 Compilation 9


 Notion d'alphabet
Alphabet =Ensemble fini et non vide de
symboles.
On le note par A.
Un symbole peut être composé d'un ou de
plusieurs caractères.

FS Agadir SMI 20-21 Compilation 10


 Exemples d'alphabet
A={a,b,c,d,1,2}
A={ab,c,d}
A={0,1}

FS Agadir SMI 20-21 Compilation 11


 Notion de chaîne
Une chaîne est suite finie de symboles de
l'alphabet A.

FS Agadir SMI 20-21 Compilation 12


 Exemple
pour l'alphabet
A={a,b,c,d,1,2},
Nous avons les chaînes :
ab, ac, bc1

FS Agadir SMI 20-21 Compilation 13


 Chaîne vide
Est une chaîne composé de 0 symbole
Notation
ε = chaîne vide

FS Agadir SMI 20-21 Compilation 14


 Longueur de chaîne
Longueur de chaîne = Le nombre d'occurrences
de symboles de l'alphabet dans la chaîne.
- Notation
|ch| donne la longueur de ch.

FS Agadir SMI 20-21 Compilation 15


 Exemple
Alphabet : A={a,c,d}
Chaîne : S=acda
|S|=4

FS Agadir SMI 20-21 Compilation 16


 Exercice
Chercher la longueur des chaînes suivantes:
- A={a,b,c,d,1,2} , S=ab
- A={ab,c,k,d}, S=abckd

FS Agadir SMI 20-21 Compilation 17


Opérations sur la chaînes

FS Agadir SMI 20-21 Compilation 18


 Concaténation des chaînes
Si X et Y sont deux chaînes alors
XY est une chaîne composée des symboles de X
suivis des symboles de Y.

FS Agadir SMI 20-21 Compilation 19


 Exemple 1
si X=ab, Y=df alors
XY=abdf.

FS Agadir SMI 20-21 Compilation 20


 Exercice
Quelle est la valeur de XY dans les cas suivants :
- X=ab et Y=ε
- X=ε et Y=ab

FS Agadir SMI 20-21 Compilation 21


 Exponentiation des chaînes
Soit S une chaîne.
par définition
S0=ε
S1=S
Sn=SSSSS…S n fois

FS Agadir SMI 20-21 Compilation 22


 Notion de langage
un langage = sous-ensemble de l'ensemble des
chaînes formées par un alphabet.
Notation
L

FS Agadir SMI 20-21 Compilation 23


 Exemples
Alphabet : A={0,1}
L={0,1,11,10}

FS Agadir SMI 20-21 Compilation 24


 Exercice
A={0,1}
L=langage?

FS Agadir SMI 20-21 Compilation 25


 Exercice
A={0,1,2…9}
L=langage?

FS Agadir SMI 20-21 Compilation 26


 Concaténation des langages
Soit L1 et L2 deux langages alors
La concaténation de L1 et L2 notée
L1L2 ou L1*L2 est donnée par
L1L2={XY avec X chaîne de L1 et Y chaîne de L2}

FS Agadir SMI 20-21 Compilation 27


 Exemple
Nous donnons L1={a,b} et L2={c}
Chercher L1L2.

FS Agadir SMI 20-21 Compilation 28


 Exponentiation des langages
Soit L un langage.
par définition
L0={ε}
L1=L
Ln=LLLL…L n fois

FS Agadir SMI 20-21 Compilation 29


 Exemple
L={a,b}
L2=LL={aa,ab,ba,bb}

FS Agadir SMI 20-21 Compilation 30


 Exercice
Soit L={a}
Chercher L1, L2 et L3

FS Agadir SMI 20-21 Compilation 31


 Exercice
Chercher
- L{ε}
- {ε}L

FS Agadir SMI 20-21 Compilation 32


 Union des langages
Soit L1 et L2 deux langages alors
l'union de L1 et L2 notée
L1 U L2 est donnée par
L1 U L2={X/ X de L1 ou X de L2}

FS Agadir SMI 20-21 Compilation 33


 Exemple
Nous donnons L1={a,b} et L2={a,c}
Chercher L1 U L2.

FS Agadir SMI 20-21 Compilation 34


 Fermeture d'un langage
Soit L un langage, la fermeture de L est donnée
par
L*= U Li avec i=0,1…

FS Agadir SMI 20-21 Compilation 35


 Exemple
Chercher L* sachant que L={a}

FS Agadir SMI 20-21 Compilation 36


 Réponse
L*=L0u L u L2 u L3…={ε,a, aa, aaa…}

FS Agadir SMI 20-21 Compilation 37


 Exercice
Chercher L* sachant que L={a, b}

FS Agadir SMI 20-21 Compilation 38


 Fermeture positive d'un langage
Soit L un langage, la fermeture positive de L est
donnée par
L+= U Li avec i=1…
Exemple
Chercher L+ sachant que L={a}

FS Agadir SMI 20-21 Compilation 39


 Réponse
L+=L u L2 u L3…={a, aa, aaa…}

FS Agadir SMI 20-21 Compilation 40


 Remarque
L+=L* \{ε}

FS Agadir SMI 20-21 Compilation 41


 Exercices
- Chercher L+ sachant que L={ab}
- Chercher L+ sachant que L={a,b}

FS Agadir SMI 20-21 Compilation 42


 Exercice
Soit A et L des langages /
A={lettres, chiffres} et L={lettres}
Donner l'expression du langage ID représentant
les identificateurs.

FS Agadir SMI 20-21 Compilation 43


 Réponse
ID={id/ id de LA*}

FS Agadir SMI 20-21 Compilation 44


 Exercices
Soit L={lettres} et C={chiffres}
Définir les langages suivants :
- L U C.
- LC.
- L2
- L*
- (L U C)*
- L(L U C)*

FS Agadir SMI 20-21 Compilation 45


 Exercice
Soit L1={0} et L2={1}
Définir le langage binaire à partir de L1 et L2.

FS Agadir SMI 20-21 Compilation 46


 Exercice
Soit L={0,1}
Définir le langage binaire à partir de L.

FS Agadir SMI 20-21 Compilation 47


 Lexèmes
Considérons l'instruction suivante
int c=1;
Définition
lexème= mot ou symbole du programme :
variable, constante, nom de fonction, opérateurs
de comparaison, opérateurs d'affectation…
Exemples
int,
=,
c et 1;

FS Agadir SMI 20-21 Compilation 48


 Unité lexicale
Définition
Unité lexicale = mot défini dans le langage
correspondant au mot ou symbole rencontré
dans le programme.
Exemples d'unités lexicale
ID,
NB,
OPER
FS Agadir SMI 20-21 Compilation 49
 Unités lexicales et lexèmes
- Les lexèmes sont des valeurs ou instances des unités lexicales.
- Une unité lexicale est une classe de lexèmes
Exemples
- {12, 13} sont des lexèmes de NB.
- {x, x1, X_3} sont des lexèmes de ID.
- {<, <=, == } sont des lexèmes OPER.

FS Agadir SMI 20-21 Compilation 50


 Exercice
Chercher les lexèmes et les unités lexicales dans
le programme suivant :
int max(int i,int j)
{
return i>j?i:j;
}

FS Agadir SMI 20-21 Compilation 51


 Expressions régulières E.R.(description des mots
du langage)
Objectifs
 Une E.R. est une notation utilisée pour spécifier ou
décrire un langage.
 Une E.R. est donnée à base d'un alphabet.
 Une E.R. décrit les unités lexicales d'un langage.

FS Agadir SMI 20-21 Compilation 52


 Expressions régulières E.R.(description des mots
du langage)
Définition
Soit A un alphabet, une expression régulière est donnée par :
- ε est une E.R. qui désigne le langage {ε}
- si a est un élément de A alors a est une E.R. qui désigne {a}
- si X est une E.R. qui désigne L alors (X)* est une E.R. qui désigne L*
- si X est une E.R. qui désigne L alors (X)+ est une E.R. qui désigne L+
- si X et Y sont des E.R. qui désignent Lx et Ly alors (X)|(Y) désigne Lx u Ly.
- si X et Y sont des E.R. qui désignent Lx et Ly alors (X)(Y) désigne LxLy

FS Agadir SMI 20-21 Compilation 53


 Exemples
Soit A={a,b} un alphabet
- (a|b)*
- (a*|b*)*
- (a)|((b)*(c))=a|b*c

FS Agadir SMI 20-21 Compilation 54


 Chercher les langages désignés par chacune des E.R. suivantes
- a*
- a(a)*
- a|b
- a|ba*
- (aa)*a

FS Agadir SMI 20-21 Compilation 55


 Réponses
- a*  L={ε, a, aa, aaa, …}
- a(a)*  L={a, aa, aaa, …}
- a|b  L={a, b}
- a|ba*  L={a, b, ba, baa, …}
- (aa)*a  L={a, aaa, aaaaa, …}

FS Agadir SMI 20-21 Compilation 56


 Définition régulière
Le nom affecté à une expression régulière.
Exemples
- Lettre  a|b|…|z|A|B…|Z
- Chiffre  0|1…|9

FS Agadir SMI 20-21 Compilation 57


 Définition régulière : pourquoi?
Réutiliser et simplifier les expressions régulières.

FS Agadir SMI 20-21 Compilation 58


 Exemple : cas du langage C
- Lettre  a|b|…|z|A|B…|Z
- Chiffre  0|1…|9
- Id Lettre(Lettre|Chiffre)*

FS Agadir SMI 20-21 Compilation 59


 Opérations sur les E.R.
Soit X, Y, Z des E. R. alors on a les propriétés
algébriques suivantes: :
- X|Y=Y|X
- X|(Y|Z)=(X|Y)|Z
- X(YZ)=(XY)Z
- X(Y|Z)=XY|XZ
- (X|Y)Z=XZ|YZ
- Xε= εX=X

FS Agadir SMI 20-21 Compilation 60


 Écrire une expression régulière qui décrit les
lexèmes suivants, nous prenons A={a,b}:
1) les mots qui commencent par b.
2) les mots qui se terminent par a.
3) les mots qui se terminent par un nombre qlq de a.
4) les mots qui se terminent par un nombre pair de a.
5) les mots contenant exactement 2a.
6) les mots contenant au moins 2a.

FS Agadir SMI 20-21 Compilation 61


 Réponses
1) b(a|b)*
2) (b|a)*a
3) (b|a)a+
4) (b|a)*b(aa)+
5) b*ab*ab*
6) (a|b)*a(a|b)*a (a|b)*

FS Agadir SMI 20-21 Compilation 62


 Remarque
On peut utiliser les définitions régulière dans les
réponses aux questions 5 et 6.
Pour la question 5, on a aussi la réponse suivante
b*ab*a|ab*ab*
On peut aussi écrire
E1b*ab*a
E2ab*ab*
EE1|E2
FS Agadir SMI 20-21 Compilation 63
 Remarque (utilisation des définitions)
Pour la question 6, on a aussi la réponse
(b|a)*a(b|a)*a|a (b|a)* a (b|a)*
on peut aussi écrire
E1 (b|a)*a(b|a)*a
E2a (b|a)* a (b|a)*
EE1|E2

FS Agadir SMI 20-21 Compilation 64


 Exercice
Écrire une expression régulière qui décrit les
nombres binaires.

FS Agadir SMI 20-21 Compilation 65


 Réponse
(0|1)+

FS Agadir SMI 20-21 Compilation 66


 Extensions des expressions régulières
- r?=r|ε
- a|x|w=[axw]
- a|b|c|…|z=[a-z]

FS Agadir SMI 20-21 Compilation 67


 Exercice
1) Donner l'expression régulière qui représente les
chiffres.
2) Donner l'expression régulière qui représente les lettres
A…Z.
3) Donner l'expression régulière qui représente les lettres.

FS Agadir SMI 20-21 Compilation 68


 Réponse
1) [0-9]
2) [A-Z]
3) [a-zA-Z]

FS Agadir SMI 20-21 Compilation 69


 Exercices
1) Chercher l'expression régulière étendue pour les identificateurs.
2) Chercher l'expression régulière étendue pour les nombres entiers.

FS Agadir SMI 20-21 Compilation 70


 Remarques
Dans l'écriture des expressions régulières, on doit
prendre en considération la priorité et
l'associativité (à droite) des opérateurs
- *, +
- ?
- |

FS Agadir SMI 20-21 Compilation 71


 Exemple
L'expression (a)(b)*|(cd) peut s'écrire
ab*|cd

FS Agadir SMI 20-21 Compilation 72


 Exercice
Simplifier les expressions suivantes:
1) b(c)*a
2) ((a|b)|c)|(d)+c

FS Agadir SMI 20-21 Compilation 73


 Réponse
Simplifier les expressions suivantes:
1) bc*a
2) (a|b|c)|d+c=[a-c]|d+c

FS Agadir SMI 20-21 Compilation 74


Résumé
 Objectifs de l’analyse lexicale
 Analyse préliminaire
 Alphabet et langage
 Opérations sur les langages
 Les unités lexicales, lexèmes et modèles
 Les expressions régulières
 Opérations des expressions régulières

FS Agadir SMI 20-21 Compilation 75

Vous aimerez peut-être aussi