Vous êtes sur la page 1sur 10

Analyse lexicale

BOUDJELABA Hakim

2020/2021

BOUDJELABA Hakim Analyse lexicale 2020/2021 1 / 10


Role de l’analyseur lexical

première phase d’un compilateur;


lire les caractères d’entrée et produire une suite d’unités lexicales qui
seront utilisées par la deuxième phase (analyse syntaxique).

Une des tâches de l’analyseur lexical est d’éliminer les espaces, les
commentaires, les caractères de fin de ligne et les tabulatioins.

BOUDJELABA Hakim Analyse lexicale 2020/2021 2 / 10


Définitions
Lexème
Une suite de caractère du programme source qui correspond avec les unités
lexicales

Modèle
Est une règle qui décrit l’ensemble des lexèmes pouvant représenter une
unité lexicale du programme.

Exemple

Lexème Unité lexicale modèle


15 Constante entière suite de chiffres
i Identificateur lettre suivi de lettres et/ou chiffres
if if if
+ Opérateur arithmétique +, -, *, -, /

BOUDJELABA Hakim Analyse lexicale 2020/2021 3 / 10


Détection des erreurs lexicales

Peu d’érreurs sont détectées au niveau de l’analyse lexicale.

Exemple Les erreurs dûes au fait qu’un identificateur est mal déclaré.

int 2dx;

Dans cet exemple, une erreur lexicale est signalé car un nom de variable
doit toujours commencer soit par une lettre ou soit par

BOUDJELABA Hakim Analyse lexicale 2020/2021 4 / 10


Descréption des unités lexicales

Les unités lexicales sont décrites à l’aide de:


Grammaires régulières;
Automates.

BOUDJELABA Hakim Analyse lexicale 2020/2021 5 / 10


Réalisation d’un analyseur lexical

Il existe deux méthodes pour la réalisation d’un analyseur lexical:


Méthode manuelle;
Méthode automatique.

BOUDJELABA Hakim Analyse lexicale 2020/2021 6 / 10


Méthode manuelle
Dans ce cas, l’analyseur est une suite d’instruction si ... sinon ...
Exemple Soit le langage L = {ab, ac, b}
Soit tc le caractère courant de la chaine
ts le caractère suivant de la chaine

tc <-- premier caractère de la chaine


si(tc = ’a’) alors
tc <-- ts
si(tc = ’b’ ou tc = ’c’) alors
...
sinon
si(tc = ’b’) alors
tc <-- ts
...
Fin si
Fin si

BOUDJELABA Hakim Analyse lexicale 2020/2021 7 / 10


Méthode automatique

On utilise un automate déterministe.


L’automate est implémenté sous forme d’une matrice où:
les lignes représentent les états de l’automate;
les colonnes représentent les terminaux.

Il faut préciser l’état initial et l’ensemble des états finaux.

BOUDJELABA Hakim Analyse lexicale 2020/2021 8 / 10


Algorithme d’analyse

Soient:
Ec l’état courant de l’automate;
tc le terme courant;
Ef l’ensemble des états finaux de l’automate;
la chaine analyser se termine par un #

BOUDJELABA Hakim Analyse lexicale 2020/2021 9 / 10


Algorithme d’analyse

Ec <-- S // S est l’état initial de l’automate


tq(Ec != -1) et (tc != ’#’)faire
Ec <-- T[Ec, tc]
tc <-- ts
Ftq
si Ec = -1 alors
Chaine non acceptée
sinon
si Ec appartient Ef alors
Chaine acceptée
sinon
Chaine non acceptée
Fsi
Fsi

BOUDJELABA Hakim Analyse lexicale 2020/2021 10 / 10

Vous aimerez peut-être aussi