Vous êtes sur la page 1sur 21

Cours 2:Phases de compilation

Département d’Informatique et des Technologies


Educatives- Ecole Normale Supérieure – Université de
Yaoundé I

Par KAMENI Éric Désiré


Principe
 Un compilateur est découpé en plusieurs phases. Chaque
phase constitue une partie de traduction en elle même.
Analyse lexicale
 Consiste à récupérer les mots, que l'on appelle " tokens ", à partir d'une suite de caractères.
 Par exemple déterminer, à partir de l'énoncé suivant :
for i :=1 to vmax do a :=a+i;
on peut dégager la suite de tokens suivante :
 for : mot clé
 i : identificateur
 := : affectation
 1 : entier
 to : mot clé
 vmax : identificateur
 do : mot clé
 a : identificateur
 := : affectation
 a : identificateur
 + : opérateur arithmétique
 i : identificateur
 ; : séparateur
Analyse lexicale
on peut construire la table des symboles suivante :
Analyse lexicale
 l'énoncé précédent peut s'exprimer ainsi :
 10, 1000, 100, 5001, 11, 1002, 12, 1001, 100, 1001, 101, 1000, 13
 for i := 1 to vmax do a + a + i ;
 On obtient ainsi une suite de références à la table des symboles.
 Resumé
 L'analyse lexicale
 C'est la phase la plus simple.
 But : prendre en entree un flot de caracteres et proceder a la segmentation
 (separation en "mots").
 Outil TP : LEX.
– On trouve les mots (lexemes, tokens)
– On verifie que chaque mot trouve appartient bien au lexique (dictionnaire)
– On retourne (eventuellement) des messages d'erreur.
Ces 3 etapes se font simultanement, en un seul parcours lineaire du flot d'entree.
Analyse lexicale
 L’analyseur lexical est un automate fini pour l’union de toutes les expressions
régulières définissant les tokens.
 Exemple de reconnaissance des tokens
Analyse lexicale
 Exercice d’application
 Langage source

 Récupérer les mots ou tokens de ce langage et construire la table des symboles.


Les numéros de symboles commencent à 10 et vont de 10 en 10 de la gauche vers
la droite et de la première ligne vers la dernière.
 Exprimer le code source à partir de la table des symbole.
Analyse Lexicale
Introduction à la Theorie des Langages

 Alphabets et mots en théorie des langages


 L’ensemble des entités élémentaires est
appelé l’alphabet.
Une combinaison d’entités élémentaires
est appelé un mot.
Analyse Lexicale
Introduction à la Theorie des Langages

 Alphabets: Un alphabet, noté A, est un


ensemble fini non vide de symboles.
Exemples d’alphabets :
 A1 = { •, *, ◊}
 A2 = { a, b, c, . . ., z }
 A3 = { if, then, else, id, nb, =, + }
Analyse Lexicale
Introduction à la Theorie des Langages

 Mot: Un mot, défini sur un alphabet A, est


une suite finie d’éléments de A
 Exemples de mots :
 sur l’alphabet A1, le mot ••*
 sur l’alphabet A2, le mot if
 sur l’alphabet A3, le mot if id = nb
Analyse Lexicale
Introduction à la Theorie des Langages
Terminologie
 Lors de l’analyse lexicale d’un programme, l’alphabet est l’ensemble des
symboles du clavier, tandis que les mots sont les mots clés, les identificateurs,
les nombres, les opérateurs, ... et sont généralement appelés lexèmes.
 Lors de l’analyse syntaxique d’un programme, les éléments de base de
l’alphabet sont les mots clés, les identificateurs, les nombres, les opérateurs,
... (autrement dit, les lexèmes de l’analyse lexicale), tandis qu’un mot est une
suite de lexèmes et forme un programme.
 D’une façon plus générale, lorsque les éléments de l’ensemble de base A sont
des mots au sens linguistique, on emploie le terme de vocabulaire à la place
d’alphabet pour désigner A, et le terme de phrase (ou chaîne) à la place de mot
pour désigner une séquence finie de mots linguistiques.
Analyse Lexicale
Introduction à la Theorie des Langages

 Longueur d’un mot: La longueur d’un mot


u défini sur un alphabet A, notée |u|, est
le nombre de symboles qui composent u.
 Par exemple :
 sur l’alphabet A1, | • • * |= 3
 sur l’alphabet A2, | if |= 2
 sur l’alphabet A3, | if id = nb |= 4
Analyse Lexicale
Introduction à la Theorie des Langages
 Mot vide: le mot vide, noté ε, est défini sur
tous les alphabets et est le mot de longueur 0
(autrement dit, | ε | = 0)..
 A+ : on note A+ l’ensemble des mots de
longueur supérieure ou égale à 1 que l’on peut
construire à partir de l’alphabet A.
 A : on note A l’ensemble des mots que l’on
peut construire à partir de A, y compris le mot
vide : A = {ε} A+
Analyse Lexicale
Introduction à la Theorie des Langages
 Concaténation: Soient deux mots u et v
définis sur un alphabet A. La concaténation
de u avec v, notée u.v ou simplement uv
s’il n’y a pas d’ambigüité, est le mot formé
en faisant suivre les symboles de u par les
symboles de v.
 On notera un le mot u concaténé n fois (u0 =
ε, un = u.(un−1 ) pour n ≥ 1)
Analyse Lexicale
Introduction à la Theorie des Langages
 Concaténation
Par exemple, sur l’alphabet A2, si u =
aabb et v = cc, alors u.v = aabbcc et u3
= aabbaabbaabb.
NB : La concaténation est associative
mais non commutative.
Analyse Lexicale
Introduction à la Theorie des Langages
 Exercice d’application
 Soit l’alphabet A = {a, b}.
1. Etant donnés les mots u = aa et v = bab, écrire les
mots uv, (uv)2 et u3v.
2. Enoncer tous les mots de longueur 2 définis sur A.
3. Soient les ensembles
E1 = {u.v/u A+, v A+}
E2 = {u.v/u A+, v A }
E3 = {u.v/u A , v A }
A quoi correspondent ces ensembles ?
Analyse Lexicale
Introduction à la Theorie des Langages
 Solution
1. uv = aabab, (uv)2 = aababaabab et u3v =
aaaaaabab.
2. Mots de longueur 2 = {aa, ab, ba, bb}
3. E1 = {u A /|u| ≥ 2} = ensemble des mots
d’au moins 2 symboles
E2 = A+
E3 = A*
Analyse Lexicale
Introduction à la Theorie des Langages
 Opérations sur les mots
 Préfixe
1. Soient deux mots u et v définis sur un alphabet A.
2. u est un préfixe de v si et seulement si
il existe w appartenant à A* tel que uw = v ;
w є A* tel que uw = v ;
Soit A = { a, b, c, . . ., z }
u=papa, v=papayer, w=yer. Donc u est un préfixe
de v
Analyse Lexicale
Introduction à la Theorie des Langages
 Opérations sur les mots
 Suffixe
1. Soient deux mots u et v définis sur un alphabet A.
2. u est un Suffixe de v si et seulement si
il existe w appartenant à A* tel que wu = v ;
w є A* tel que wu = v ;
Soit A = { a, b, c, . . ., z }
u=yer w=papa, v=papayer,. Donc u est un suffixe de
v
Analyse Lexicale
Introduction à la Theorie des Langages
 Opérations sur les mots
 Facteur
1. Soient deux mots u et v définis sur un alphabet A.
2. u est un Facteur de v si et seulement si
il existe w1 et w2 appartenant à A* tels que
w1uw2 = v ;
w1 є A*, w2 є A*, tel que w1uw2 = v ;
Soit A = { a, b, c, . . ., z }
u=por w1=insup, w2=table, v=insupportable,. Donc u est
un facteur de v
Analyse Lexicale
Introduction à la Theorie des Langages
 Exercices
 Exercice 1. Déterminer les facteurs, les préfixes et les suffixes
du mot u = abac.
 Exercice 2. Compter les occurrences des lettres a et b dans les
mots suivants : a3cbbca, aabgjdd, titi, babc.
 Exercice 3. Donner l’ensemble des couples (u,v) tels que uv =
abaac. (FOND Uniquement)
 Exercice 4. Soit u = a1…..an un mot de longeur n, avec ai ≠ aj
pour tous i ≠j. Combien u comporte-t-il de préfixes ? De
suffixes ? De facteurs ? (FOND Uniquement)

Vous aimerez peut-être aussi