Académique Documents
Professionnel Documents
Culture Documents
M28 : Compilation
Session Automne
Pr Errais Mohammed
mahammed.errais@gmail.com
Organisation du cours
1 Introduction
2 Analyse lexicale
Analyse Syntaxique
3
Analyse sémantique
4
2
Objectifs du cours
3
Objectifs du cours
4
Organisation du cours
5
Organisation du cours
Contenu des modules
Automates finis et expression régulière.
Grammaires.
Analyse lexicale.
Analyse syntaxique.
Analyse sémantique.
6
Organisation du cours
Note du module
7
Organisation du cours
1 Introduction
2 Analyse lexicale
Analyse Syntaxique
3
Analyse sémantique
4
8
Introduction – Plan de cours
I. Introduction
1. Introduction générale
2. Qu’est ce que la compilation?
3. Pourquoi ce cours ?
4. Structure d’un compilateur
9
Introduction
Introduction générale
L’exécution des programmes directement sur
les machines ( processus mémoire, circuits
…) nécessite l’utilisation des langages de bas
niveaux Assembleur, codage binaire (0 …1 )
C
Maple
Java
Python
11
Introduction
Introduction générale
Un interprète prend en entrée un
programme P écrit dans le langage L et
des données et produit en sortie un
résultat correspondant à l'exécution de P
avec les données.
12
Introduction
Introduction générale
Contrairement à un interpréteur, le
compilateur donne comme résultat un autre
programme écrit dans un autre langage.
13
Introduction
Qu’est ce que la compilation?
Définition :
Un compilateur est un logiciel particulier
qui traduit un programme écrit dans un
langage de haut niveau par le
programmeur en instructions exécutables
14
Introduction
Qu’est ce que la compilation?
L’outil gcc
15
Introduction
Pourquoi ce cours?
Il est important de comprendre le
fonctionnement d’un compilateur pour :
La compilation peut être utilisé pour la
transformation d’un programme d’un langage de
haut nivaux à un autre (C à pascal).
Besoin de retrouver un code à partir d’un
exécutable
La compréhension du fonctionnement du
compilateur permet d’implémenter d’une manière
plus efficace.
16
Introduction – Plan de cours
I. Introduction
1. Introduction générale
2. Qu’est ce que la compilation?
3. Pourquoi ce cours ?
4. Structure d’un compilateur
17
Introduction
Structure d’un compilateur
La sortie d’un compilateur varie selon
l’application :
Un programme exécutable pour un processus
physique (processeur, mémoire)
Fichier de code pour une VM( exemple JAVA)
Code abstrait destiné à un outil particulier.
18
Introduction
Structure d’un compilateur
La compilation se décompose en deux phases :
19
Introduction
Structure d’un compilateur
20
Introduction
Structure d’un compilateur
Analyse lexicale
Permet de reconnaitre les types des caractères
lu par le compilateur.
Les caractères sont exprimés par des unités lexicales
( identificateur, constante, opérateur ….)
Les objectifs de cette étape :
Eliminer les caractères superflu (espaces,
commentaires ..)
Identifier les symbole les unités lexicales
21
Introduction
Structure d’un compilateur
Exemple d’analyse
lexical d’une
l’expression :
22
Introduction
Structure d’un compilateur
Question :
Donner le résultat de l’analyse lexicale de
l’expression suivante :
23
Introduction
Structure d’un compilateur
24
Introduction
Structure d’un compilateur
Analyse syntaxique
Permet de vérifier la grammaire des unités
lexicales est ce que les unités sont écrites
dans le bon ordre comme défini dans le langage
source?
26
Introduction
Structure d’un compilateur
Analyse contextuelle
Dite aussi Analyse sémantique permet de
vérifier si la structure du texte est correcte Est
ce qu’une unité lexicale est correcte?
Les identificateurs sont déclarés
Les opérantes sont ils compatible ( additionner un
float à un entier ) ?
Les arguments des fonctions sont correctes?
Phase de synthèse
28
Introduction
Structure d’un compilateur
Génération de code intermédiaire et
optimisation
Permet de transformer le code source au
programme cible ( généralement assembleur).
L’optimisation consiste à adapter le code cible
au matérielle de la machine courante ( adapté
les adresses, éliminer les instructions inutiles.
30
Introduction
Structure d’un compilateur
Gestion de la table des
symboles :
La table des symboles est Exemple :
une structure qui sert à
stocker les identificateurs.
Le remplissage de la table
est fait dans la phase
d’analyse.
Les informations stockés
dans la table sont
essentielles pour l’analyse
lexicale et syntaxique.
31
Introduction
Structure d’un compilateur
Gestion des erreurs
Permet d’identifier l’erreur de la manière la
plus précise possible.
32
Introduction
Structure d’un compilateur: Exemple
33
Questions
35
Organisation du cours
1 Introduction
2 Analyse lexicale
Analyse Syntaxique
3
Analyse sémantique
4
36
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langages
3. Mise en ouvre d’un analyseur lexicale
37
Analyseur lexicale
C’est quoi ?
Le programme source se compose de flot de
caractère.
Le rôle principale de l’analyseur lexical est de
reconnaitre dans ce flot « les unités lexicales ».
Les unités lexicales => les mots clés du langage
que le compilateur doit reconnaitre. Les principaux
unités dans un langages sont :
• Opérateurs arithmétiques : +, -, * , /
• Opérateurs logiques : < , > , ==
• Les mots clés : if, where , while
• Les constantes , les numéros
38
Analyseur lexicale
C’est quoi ?
Généralement une unité lexicale reconnue
dans le texte source distingue quatre notions:
L’unité lexicale représentée par un code
conventionnel ( PLUS, EGAL, PLUS PLUS …)
« le lexème » la chaine de caractère qui
correspond à une unité lexicale exemple « + est
PLUS ou < est INF … »
Un attribut qui dépend de l’unité lexicale en
question pour un nombre il s’agit de ca valeur,
pour un identificateur il s’agit d’un envoi à la table
des symboles
39
Analyseur lexicale
C’est quoi ?
Généralement une unité lexicale reconnue
dans le texte source distingue quatre notions –
suite :
Le modèle qui permet de spécifier l’unité lexicale
plusieurs techniques formelles existent pour
décrire un modèle.
41
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
1. Généralités
2. Expressions régulières
3. automates
3. Mise en ouvre d’un analyseur lexicale
42
Théorie des langages
Généralités
L'objectif de cette section est d'étudier les
notions de théorie des langages qui sont
utiles en compilation.
Les notions de vocabulaire, de chaîne sur un
vocabulaire et de langage sur un vocabulaire,
ainsi que diverses opérations
43
Théorie des langages
Généralités- Langage sur un vocabulaire
44
Théorie des langages
Généralités- Langage sur un vocabulaire
45
Théorie des langages
Généralités- Langage sur un vocabulaire
Propriété :
L'ensemble des chaînes sur V satisfait les
propriétés suivantes :
La chaîne vide est élément neutre pour la
concaténation.
Pour toute chaîne de V*, on a : x · = · x = x.
46
Théorie des langages
Généralités- Langage sur un vocabulaire
Définition : Préfixe.
• Soit deux chaînes x et y sur V. La chaîne x est préfixe de la
chaîne y si et seulement si il existe une chaîne z telle que x · z =
y.
• Exemple la chaîne a b b a pour préfixes , a, a b et a b b.
Définition : Suffixe.
• Soit deux chaînes x et y sur V. La chaîne x est suffixe de la chaîne y
si et seulement si il existe une chaîne z telle que z · x = y.
• Exemple la chaîne a b b a pour suffixes , b, b b et a b b.
Définition : Sous-chaîne.
• Soit deux chaînes x et y sur V. La chaîne x est sous-chaîne
de la chaîne y si et seulement si il existe deux chaînes z et z'
telles que z · x · z'= y.
• Exemple la chaîne a b b a pour sous-chaînes , a, b, a b, b
b et a b b.
47
Théorie des langages
Généralités- Langage sur un vocabulaire
Définition : Langage.
On appelle langage sur un vocabulaire V un sous-
ensemble L de V*.
Exemples de langages
• les langages de programmation
• l'ensemble des mots de la langue française est un
langage sur le vocabulaire constitué des lettre de
l'alphabet
• l'ensemble des expressions arithmétiques est un
langage sur {num , +, - , *, /, ( , )}.
48
Théorie des langages
Généralités- Langage sur un vocabulaire
49
Théorie des langages
Généralités- Langage sur un vocabulaire
Question :
1. Donner la différence entre une sous
chaine et un suffixe ?
2. Citer des exemple de langage ?
3. Comment peut – on définir un langage?
Exercice :
1. Prouver que bc est un suffixe de la
chaine abc
2. Est-ce que ab est une sous chaine de
abc? Prouvez le.
50
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
1. Généralités
2. Expressions régulières
3. automates
3. Mise en ouvre d’un analyseur lexicale
51
Théorie des langages
Expression régulière
Exemple :
L’opérateur peut être laissé implicite
53
Théorie des langages
Expression régulière
54
Théorie des langages
Généralités- Expression régulière
55
Théorie des langages
Spécification des expression régulière
Soit L = {A,B,...,Z} U {a,b,...,z} et C = {0,1,...9}
deux langages.
A partir de L et C, nous pouvons produire
d'autres langages.
L U C : ensemble des lettres et chiffres,
LC : ensemble des chaînes constituées d'une lettre
suivie d'un chiffre,
: ensemble des chaînes constituées de 4 lettres,
: ensemble des entiers naturels, -
L(LUC)* : ensemble des chaînes constituées d'une
lettre suivie d'une chaîne de lettres et de chiffres ou
d'une chaîne vide.
56
Théorie des langages
Spécification des expression régulière
Exemple:
Un nombre entier non signé (en C) est
une chaîne constituée d'une suite de
chiffres, au moins un.
L'expression régulière associée est:
+ est un opérateur unaire post-fixe qui
veut dire un ou plusieurs fois.
57
Théorie des langages
Spécification des expression régulière
Soit r et s deux expressions régulières qui
dénotent les langages L(r) et L(s), alors:
(r) | (s) est une expression régulière qui
dénote (L(r)) U (L(s)).
(r)(s) dénote (L(r))(L(s)).
(r)* dénote (L(r))*.
59
Théorie des langages
Spécification des expression régulière
Propriétés algébriques
Soit r, s et t des expressions régulières.
r|s = s|r : l'opérateur| (ou) est commutatif.
r|(s|t) = (r|s)|t : l'opérateur l'opérateur | est
associatif.
(rs)t = r(st) : la concaténation est associative.
r(s|t)=rs|rt : la concaténation est distributive
par rapport au |.
ε r = r ε = r : ε est l'élément neutre de la
concaténation.
60
Théorie des langages
Spécification des expression régulière
Notation
* est un opérateur unaire poste-fixe qui
veut dire zéro, un ou plusieurs fois.
+ est un opérateur unaire poste-fixe qui
veut dire un ou plusieurs fois.
r+ = r r* = r*r r* = r+|ε
? est un opérateur unaire poste-fixe qui
veut dire zéro ou une fois: r? = r|ε
[a-z] désigne un élément (une lettre) de
cette classe. [a-z] = a|b|c...|z
61
Théorie des langages
Spécification des expression régulière
Les priorités des opérateurs
L' opérateur * a la plus haute priorité et est
associatif à gauche.
Les opérateurs + et ? ont la même priorité et
la même associativité que *.
La concaténation a la deuxième priorité et est
associative à gauche.
Le | a la plus faible priorité et est associatif à
gauche.
63
Théorie des langages
Expression régulière
Questions :
1. Proposer une définition de l’expression régulière
2. C’est quoi la différence entre un Vocabulaire et un
langage?
3. Donner les propriétés algébriques des
expressions régulières.
4. Donner les propriétés de la concaténations
5. C’est quoi l’ intérêt de l’utilisation des expressions
régulières dans le processus de compilation.
64
Théorie des langages
Expression régulière
Exercice :
1. Proposer l’expression régulière des mots qui se
terminent par aba sur le vocabulaire V= {a,b}
2. Proposer l’expression régulière des mots qui
commencent par a sur le vocabulaire V=
{a,b,c}.
3. Proposer l’expression régulières des chiffres
signés.
4. L’ER du langage L des mots binaires.
5. L’ER du langage L des identificateurs.
6. L’ER des chiffres non signés acceptant la
division sur 2.
65
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
1. Généralités
2. Expressions régulières
3. Automate
3. Mise en ouvre d’un analyseur lexicale
66
Théorie des langages
Automates- Introduction
67
Théorie des langages
Automates- Introduction
En 1936, Alan Turing (1912-1954), présente sa
machine (appelée depuis machine de Turing). Elle est
composée :
d'une unité centrale se trouvant dans un état qi, pris parmi
l'ensemble fini de ses états internes, noté Q={q1, q2, ..., qn}. Parmi
les états, on distingue un état initial (état au lancement de la
machine) et des états finaux (états de la machine en situation de
terminaison)
d'un ruban de taille illimitée divisé en cases, contenant au départ
les données à traiter, et à l'arrivée les résultats des calculs
d'une tête de lecture-écriture qui assure la communication entre
l'unité centrale et le ruban
68
Théorie des langages
Automates- Introduction
69
Théorie des langages
Automates- Introduction – M T
Le rôle de la machine est d’identifier le
comportement d’un programme ( la figure)
Pour ce faire la machine identifie pour un
programme et pour un état qi et pour un symbole
aj situé devant la tête de lecture-écriture, le
nouvel état dans lequel passe la machine.
72
Théorie des langages
Automates- AFN
Définition mathématique
Un automate fini est un quintuple A = (Q,V,I,F) où
Q est un ensemble fini dont les éléments sont
appelés états ;
V est un vocabulaire ;
I est l'ensemble des états initiaux ;
F est l'ensemble des états terminaux (ou finaux) ;
appartient à Q × (V × { }) × Q est la relation de
transition.
73
Théorie des langages
Automates- AFN
On définit un automate A1 comme suit:
Q={p, q}
V={a, b}
I={p}
F={q}
={(p, a, q), (q, b, q)}
74
Théorie des langages
Automates- AFN
Exercice
Donner la représentation graphique de
l’automate à état fini défini par :
Q={1, 2,3}
V={a, b,c}
I={1}
F={3}
={(1, a, 2), (1,b,1),(2, b, 3), (3,c,3) }
75
Théorie des langages
Automates- AFN
Définition : Chemin, trace
Un chemin de l'automate A de
longueur n est une suite de transitions
• (r0, a1, r1), (r1, a2, r2), ... (rn-1, an, rn)
On dit que ce chemin mène de l'état r0 à
l'état rn avec la trace a1 a2 ... an.
Exemple
Les mots a, a b, a b b sont reconnus par
l'automate A1.
77
Théorie des langages
Automates- AFN
Définition : Langage reconnu par un automate.
L'ensemble des chaînes reconnues par un
automate est appelé langage reconnu par
l'automate.
Exemple
Le langage reconnu par l'automate A1 est le
langage défini par l'expression régulière a b*.
78
Théorie des langages
Automates- AFN
Soit l’automate suivant :
79
Théorie des langages
Automates- AFN
Exercice
On veut définir l’automate définissant les
chiffres binaires
a. Identifier le vocabulaire
b. Proposer une expression régulière
c. Proposer un automate a état fini.
80
Théorie des langages
Automates- AFN
Définition : Automates équivalents
Deux automates sont équivalents si et seulement si ils ont
le même vocabulaire et reconnaissent le même langage.
Exemple
Le langage défini par l'expression régulière num ( ('+' + '-
' ) num )* est reconnu par l'automate suivant.
81
Théorie des langages
Automates- AFN
Il existe plusieurs sous types des
automates à état fini :
Automate avec états inaccessibles
Automate fini déterministe /non déterministe
?
82
Théorie des langages
AFN- sans état inaccessible
Soit l’automate fini A = (Q,V,I,F) .
Définition : État accessible.
On dit Un état p de l'automate A est accessible si et
seulement si il existe un chemin d'un état initial
vers p.
Un état inaccessible est un état qui n'est pas
accessible.
83
Théorie des langages
AFN- sans état inaccessible
Théorème (1)
Soit R appartient à Q l'ensemble des états accessibles
de A. Soit B l'automate obtenu à partir de A en
supprimant les états inaccessibles .
Alors les automates A et B sont équivalents.
Exemple
84
Théorie des langages
AFN- sans -transition
Définition
Une -transition est une transition de la forme (p, ,
q).
Théorème (2)
Si L est un langage sur V reconnu par un automate
fini, alors L est un langage sur V reconnu par un
automate sans -transition.
85
Théorie des langages
AF- déterministe
Définition
Un automate A = (Q, V, I, F, ) est déterministe si et
seulement si
I contient un seul élément
A n'a pas d‘ -transition
p appartient à Q, a appartient à V, il existe un unique
état q appartient à Q tel que ( p, a, q) . Cet unique état
est noté (p, a).
86
Théorie des langages
AF- déterministe
Exemple
87
Théorie des langages
AF- déterministe
Les automate déterministe sont plus facile à
implémenter et à manipuler que les automates non
déterministes.
D’après les théorème (1) et (2) pour tout automate
non déterministe il existe un automate déterministe
équivalent.
89
Théorie des langages
AF- déterministe
La première étape consiste à enlever les ε-
transitions.
A tout AFN comportant des ε-transitions, il est
possible de faire correspondre un AFN équivalent
théorème (1), c'est-à-dire reconnaissant le même
langage, sans ε-transition.
90
Théorie des langages
AF- déterministe
Comment enlever les ε-transition ?
A tout automate T=(A, Q, I, F, μ) comportant des
ε-transitions existe un automate T'=(A, Q, I, F', ε-
fermeture μ) équivalent, sans ε-transition, avec
F' = F ∪ {I} s'il existe une chaîne de ε-
transitions entre I et un état q ∈ F et F' = F sinon.
91
Théorie des langages
AF- déterministe
Passage d’un AFN à un AFD
Nous allons présenter dans ce cours une méthode
simple appelée la méthode par construction des sous-
ensembles.
L'idée générale sur laquelle se base la transformation d'un
AFN en AFD est que chaque état de l'AFD correspond à un
ensemble d'états de l'AFN.
Un état courant de l'AFD correspond à l'ensemble des états
possibles de l'AFN qui sont atteints avec la même chaîne
d'entrée.
L’AFD "simule" le parcours "en parallèle" des états pour un
mot donné
92
Théorie des langages
AFN- déterministe
Exemple
Soit l’automate suivant :
93
Théorie des langages
AF- déterministe
Puis, on regarde vers quels états l'automate se trouve
pour chacun des symboles de l'alphabet à partir de I‘
95
Théorie des langages
AF- déterministe
Exemple 2
Soit l’automate suivant :
Phase 1 : Phase 2
96
Théorie des langages
AF- déterministe
Phase 3
Phase 4
97
Théorie des langages
AF- déterministe
Phase 5
C est un état
inaccessible
98
Théorie des langages
AF- déterministe
L’automate déterministe équivalent est :
99
Théorie des langages
Automates- AFD
Exercice
Soit le vocabulaire suivant V={a,b,c}
a. Proposer une expression régulière du
langage des mots qui se terminent par
« ab »
b. Proposer un automate a état fini.
c. En utilisant l’algorithme de construction des
sous-ensembles proposer un automate fini
déterministe équivalent.
100
Théorie des langages
AFD- Minimal
Certains AFDs possèdent un nombre d'états et
de transitions important typiquement, cette
situation a lieu lorsque l'automate est construit à
l'aide d'algorithmes automatiques.
La transformation d’un AFN à un AFD.
Pour des raisons d’optimisation il est intéressant
d'essayer de minimiser un AFD.
Procédure
Il existe de nombreuses stratégies pour
minimiser un AFD.
Dans ce cours nous verrons l’algorithme basé
sur les classes d'équivalence d'états
102
Théorie des langages
AFD- Minimal
Procédure
L'algorithme de minimisation du nombre d'états d'un
AFD fonctionne en déterminant tous les groupes
d'états qui peuvent être distingués par une chaîne
d'entrée.
Chaque groupe d'états in distinguables est alors
fusionné en un état unique
L'algorithme travaille en mémorisant et en raffinant
une partition de l'ensemble des états.
Chaque groupe d'états à l'intérieur de la partition
correspond aux états qui n'ont pas encore été
distingués les uns des autres
103
Théorie des langages
AFD- Minimal
Procédure – suite
Initialement, la partition consiste à former deux
groupes : les états d'acceptation et les autres.
L'étape fondamentale prend un groupe d'états et un
symbole puis étudie les transitions de ces états sur
ce symbole
Si ces transitions conduisent à des états qui
tombent dans au moins deux groupes différents de
la partition courante, alors on doit diviser ce groupe
Ce processus de division est répété jusqu'à ce
qu'aucun groupe n'ait plus besoin d'être divisé
104
Théorie des langages
AFD- Minimal
Exemple
On suppose l’automate AFD suivant :
105
Théorie des langages
AFD- Minimal
Exemple – suite
pour chaque couple (état, symbole), on regarde vers
quel ensemble nous mène la transition de l'automate
(si elle existe, sinon on ne met rien).
107
Théorie des langages
AFD- Minimal
Exemple – suite
La situation courante (la ligne Bilan 1) est différente
que la situation de départ. Donc il faut recommencer !
108
Théorie des langages
AFD- Minimal
Exemple - suite
Nous pouvons donc construire le nouvel automate en
associant un état à chaque ensemble.
109
Théorie des langages
AFD- Minimal
Exemple - suite
Cependant, l'algorithme n'est pas encore terminé ! Pour
l'instant, nous avons "fusionné" les états in distinguables.
Il faut maintenant supprimer tous les états inutiles
restant.
Dans notre exemple, l'état III est un état stérile, donc
inutile. Il faut donc le supprimer
110
Théorie des langages
AFD- Minimal
Exercice
Donner l’automate minimal équivalent à
l’automate suivant :
111
Théorie des langages
AFD- Minimal
Propriétés :
1. Pour vérifier si un automate déterministe est minimal, il
suffit d'appliquer l'algorithme de minimisation. Ensuite, si
les deux automates sont identiques (à la numérotation
des états près) alors l'automate d'origine est minimal.
112
Théorie des langages
AFD- Minimal
Exercice
Soit l’automate :
113
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
3. Mise en ouvre d’un analyseur lexicale
1. Spécification des unités lexicales
2. Les attributs
3. Analyseur lexical
4. Erreurs lexicales
114
Mise en œuvre d’un AL
Spécifications des unités lexicales
Exemple: le langage C
Un identificateur
Les chiffres
Les instruction de contrôles
115
Mis en œuvre d’un AL
Spécifications des unités lexicales
116
Mise en œuvre d’un AL
Spécifications des unités lexicales
Définition :
Un langage régulier L sur un alphabet est
défini récursivement de la manière suivante :
{ } est un langage régulier .
Si a est une lettre de alors {a} est un langage
régulier.
Si R est un langage régulier sur alors et
sont des langages réguliers.
Si R1 et R2 sont des langages réguliers sur alors
R1 R2 et R1.R2 sont des langages réguliers.
117
Mise en œuvre d’un AL
Spécifications des unités lexicales
Propriété
Les langages réguliers se décrivent facilement
par une expression régulière
118
Mise en œuvre d’un AL
Spécifications des unités lexicales
Exemple :
dénote l’ensemble de tous les mots formés
de a et de b ou le mot vide.
dénote l‘ensemble des mots
sur {a,b} ayant le facteur abb
Identificateur sous C :
119
Mise en œuvre d’un AL
Spécifications des unités lexicales
L’ ER est un mécanisme de base pour décrire
des unités lexicales.
Pour éviter les expressions régulières difficile
on utilise les définitions régulières.
120
Mise en œuvre d’un AL
Spécifications des unités lexicales
Exemple :
définition régulière pour les identificateurs
dans le langage C :
121
Mise en œuvre d’un AL
Les attributs
Pour ce qui est des symboles ( <; ==; >; .. )
l’analyseur syntaxique a juste besoin de savoir
que cela correspond a l’unité lexicale OPREL
(opérateur relationnel).
C’est seulement lors de la génération de code que
l’on aura besoin de distinguer < de > par exemple.
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
3. Mise en ouvre d’un analyseur lexicale
1. Spécification des unités lexicales
2. Les attributs
3. Analyseur lexical
4. Erreurs lexicales
123
Mise en œuvre d’un AL
Analyseur lexical
Le rôle d’un analyseur lexical est la reconnaissance
des unités lexicales
Une unité lexicale peut être exprimée sous forme de de
définition régulière / expression régulière.
Une expression régulière peut être reconnu par un automate
fini.
124
Mise en œuvre d’un AL
Analyseur lexical
125
Mise en œuvre d’un AL
Analyseur lexical
Exemple :
Soit le langage régulier L sur l’alphabet {a,b,c}.
Le langage L reconnait les mots commençant par abbcc
ou baccc et qui peut se terminer par c ou bb.
126
Mise en œuvre d’un AL
Analyseur lexical
Exemple de morceau d’analyseur lexical pour le langage
Pascal en C :
127
Mise en œuvre d’un AL
Analyseur lexical
Il n ‘est pas évident de se retrouver si on veut
modifier l’analyseur ou le compléter si on
l’implémente manuellement.
128
Pan de la partie
I. Introduction
II. Analyseur lexicale
1. C’est quoi un analyseur lexicale ?
2. Théorie des langage
3. Mise en ouvre d’un analyseur lexicale
1. Spécification des unités lexicales
2. Les attributs
3. Analyseur lexical
4. Erreurs lexicales
129
Mise en œuvre d’un AL
Erreurs lexicales
Peu d’erreurs sont détectables au seul niveau
lexical car un analyseur lexical a une vision
très locale du programme source.
131
Mise en œuvre d’un AL
Exercice
Soit l’alphabet A={0,1}
Soit le langage L sur l’alphabet A, qui décrit les
mots commencent par 10 et qui se terminent par
01
Question
Modéliser l’analyseur lexical qui reconnait le
langage L.
132