Vous êtes sur la page 1sur 26

Chapitre II Analyse Lexicale

erale Presentation gen ` Expressions reguli eres et automates nis lexicales Reconnaissance des unites Gestion des erreurs lexicales

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

1 / 24

erale Presentation gen

erale Presentation gen


Analyseur lexical ` phase dun compilateur. Lanalyseur lexical constitue la premiere ` et de Sa tache principale est de lire les caracteres dentree lexicales que produire comme resultat une suite dunites lanalyseur syntaxique va utiliser.

Flot de caractres

Analyseur Lexical

Flot dunits lexicales

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

2 / 24

erale Presentation gen

erale Presentation gen


PSOURCE

Analyseur Lexical

Unit lexicale
Obtenir prochaine unit lexicale

Analyseur Syntaxique

Table des Symboles


Analyseur lexical LAnalyseur lexical est un sous programme de lAnalyseur syntaxique. ` la reception , lanalyseur lexical lit les A de prochaine unite ` jusqua ` ce quil puisse identier la prochaine caracteres dentree lexicale. unite
Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale 2011-2012 3 / 24

erale Presentation gen

erale Presentation gen


lexicale Unite
` produite la meme pour un ensemble de cha nes de caracteres

` dune unite lexicale Modele


` lexicale (Expression reguli ` regle qui decrit une unite ere)

` Lexeme
` ` dune une suite de caracteres du PS qui concorde avec le modele lexicale. unite

Lexicale Unite const if oprel id nb

` Lexemes const if <<==<>>>= Pi compte D2 3 6.780 6.0

Description formelle ` des modeles const if (< + <= + = + <> + > + >=) lettre(lettre + chiffre) Chiffre+ + chiffre+ .chiffre+
2011-2012 4 / 24

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

` Expressions reguli eres et automates nis

` Langages et expressions reguli eres


` Probleme un programme source, comment reconna Etant donnee tre les lexicales de ce programme ? unites Solution ` lexicales dou Il faut decrire les modeles des unites le ` decrire pour ecrire langage utilise le programme. Il existe plusieurs types de langage, on sinteresse aux langages reguliers un langage regulier est un langage qui est decrit par une ` expression reguli ere

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

5 / 24

` Expressions reguli eres et automates nis

` Langages et expressions reguli eres


Alphabets et mots On appelle alphabet un ensemble ni non vide de symboles. ements On appelle mot toute sequence nie del de . est le mot vide. On note lensemble inni contenant tous les mots possibles sur . On note + lensemble des mots non vides quon peut former sur : + = \ {} On note |m| la longueur du mot m : le nombre de symboles de composant le mot. On note n lensemble des mots de longueur n : =
n n =0

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

6 / 24

` Expressions reguli eres et automates nis

` Langages et expressions reguli eres


Langages On appelle langage sur un alphabet tout sous-ensemble de . Operations sur les langages :
Union : L1 L2 = {/ L1 ou L2 } Intersection : L1 L2 = {/ L1 et L2 } Concatenation : L1 L2 = { = 1 2 /1 L1 et 2 L2 } Ln = { = 1 . . . n /i L et i {1, . . . , n}} Etoile :L = n0 Ln

Exemple = {a, b, c }. L1 est lensemble des mots ayant autant des a que des b L1 = {, c , cc , . . . , ab, abc , abcc , . . . , aacbb, . . .}

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

7 / 24

` Expressions reguli eres et automates nis

` Langages reguliers et expressions reguli eres


Denition par une Un langage regulier L sur un alphabet est represent e ` expression reguli ere. ` ER sur un alphabet est denie Une expression reguli ere recursivement comme suit :
est une ER qui decrit {} Si a alors a est une ER qui decrit le langage {a} Si r est une ER qui decrit le langage R alors r est une ER decrivant R Si r est une ER qui decrit le langage R alors r + est une ER decrivant R+ Si r et s sont des ER qui decrivent respectivement les langages R et S alors r + s est une ER decrivant RS Si r et s sont des ER qui decrivent respectivement les langages R et S alors r .s est une ER decrivant RS

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

8 / 24

` Expressions reguli eres et automates nis

` Langages reguliers et expressions reguli eres

` Exemples-expressions reguli eres de a et b ainsi que le mot . (a + b) : tous les mots formes par 0 ou plusieurs b a + b .c : le mot a ou tous les mots formes suivis dun c . {a, c , bc , bbc , bbbc , bbbbc , . . .} (a + b) abb(a + b) : tous les mots sur {a, b} ayant le facteur abb.

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

9 / 24

` Expressions reguli eres et automates nis

` Langages reguliers et expressions reguli eres


` Denitions reguli eres ` Soit un alphabet de symboles de base, une denition reguli ere est une suite de denitions de la forme :
d 1 r1 d 2 r2 ... dn rn Ou ` chaque di est un nom distinct et chaque ri est une expression ` sur les symboles de {d1 , d2 , , dn } reguli ere

Exemples Lettre A|B | . . . |Z |a|b| . . . |z chiffre 0|1| . . . |9 id Lettre(Lettre + Chiffre)


Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale 2011-2012 10 / 24

` Expressions reguli eres et automates nis

Automates nis
Exemple introductif ` reconna On cherche a tre un langage
indiquer si la phrase quon a lu appartient bien au langage ou pas.

On commence par la reconnaissance de quelques mots particuliers On souhaite reconna tre le mot fee :
` les autres et accepter le mot une fois Lire les lettres les unes apres quon a bien lu fee . Passer alors par quatre etats : lorsquon a rien lu, lorsquon a lu f, lorsquon a lu fe puis lorsquon a lu fee.
Dbut

S0

S1

S2

S3

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

11 / 24

` Expressions reguli eres et automates nis

Automates nis
Exemple introductif ` reconna On cherche a tre un langage
indiquer si la phrase quon a lu appartient bien au langage ou pas.

On commence par la reconnaissance de quelques mots particuliers On souhaite reconna tre le mot fee :
` les autres et accepter le mot une fois Lire les lettres les unes apres quon a bien lu fee . Passer alors par quatre etats : lorsquon a rien lu, lorsquon a lu f, lorsquon a lu fe puis lorsquon a lu fee.
Dbut

S0

S1

S2

e u

S3 S4

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

11 / 24

` Expressions reguli eres et automates nis

Automates nis

Denition par (S , , , s0 , SF ) ou Un automate ni deterministe est donne `:


S est un ensemble ni detats ; est un alphabet ni ; : S S est la fonction de transition ; s0 est letat initial ; SF est lensemble des etats naux.

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

12 / 24

` Expressions reguli eres et automates nis

Automates nis
Denition par (S , , , s0 , SF ) ou Un automate ni deterministe est donne `:
S est un ensemble ni detats ; est un alphabet ni ; : S S est la fonction de transition ; s0 est letat initial ; SF est lensemble des etats naux.

Exemple S = {s0 , s1 , s2 , s3 } = {f , e } (s0 , f ) = s1 , (s1 , e) = s2 , (s2 , e) = s3 s0 est letat initial ; SF = {s3 }.


Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale 2011-2012 12 / 24
Dbut

S0

S1

S2

S3

` Expressions reguli eres et automates nis

Un diagramme de transition pour la reconnaissance des operateurs de relation


Dbut 0 < 1 = > 3 autre autre = 4 > 9 Erreur() autre 8 5 * return(oprel, PPQ) return(oprel, DIF) 2 return(oprel, PPE)

return(oprel, EGA) = 6 * return(oprel, PGQ) 1 return(oprel, PGE) 7

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

13 / 24

` Expressions reguli eres et automates nis

Un diagramme de transition pour la reconnaissance des identicateurs et des mots cles


lettre, chiffre return(UnilexId(),RangerId()) 0 lettre 1 autre 2

Dbut

ee par le symbole permet de reculer dune Laction speci ` la consommation dun symbole position sur le chier source apres autre quune lettre ou un chiffre.

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

14 / 24

` Expressions reguli eres et automates nis

Diagramme de transition pour la reconnaissance des identicateurs et des mots cles


La fonction RangerId() ` au tampon ou lexicale identicateur a et e localisee. A acces ` lunite Examine la table des symboles :
` est trouve ; retourne 0, si le lexeme avec lidenticateur mot cle dans la table des symboles, si retourne un pointeur vers une entree ` on trouve le lexeme comme variable du programme ; de la table si non, retourne un pointeur vers une nouvelle entree des symboles representant une nouvelle variable contenant le ` lexeme.

La fonction UnilexId() ` recherche le lexeme dans la table des symboles :


` lunite lexicale correspondante est si le lexeme est un mot cle, ; retournee lexicale id est retournee. autrement, lunite
Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale 2011-2012 15 / 24

` Expressions reguli eres et automates nis

Diagramme de transition pour la reconnaissance des identicateurs et des mots cles


Remarques Le diagramme de transition ne change pas si on doit reconna tre de nouveaux mots cles. On initiale simplement la table des symboles avec les nouvelles lexicales. cha nes et les nouvelles unites En pratique, la table des symboles peut etre repartie sur deux tables :
table des mots cles, table des identicateurs de variables.

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

16 / 24

lexicales Reconnaissance des unites

lexicales Reconnaissance des unites


lexicales, nous utilisons les Pour reconna tre les unites diagrammes de transition. Exemple Considerons le fragment de la grammaire suivant :
Instr si expr alors instr| si expr alors instr sinon instr | id opaff id pv| id opaff nb pv expr terme oprel terme| terme terme id | nb

Ou ` si, alors, sinon, oprel, id et nb engendrent les ensembles de par les denitions ` cha nes donnees reguli eres suivantes :
si si, alors alors sinon sinon oprel < | <= | = | <> | > | >=
Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale

id lettre(lettre|chiffre) nb chiffre+ opaff :=, pv ;


2011-2012 17 / 24

lexicales Reconnaissance des unites

lexicales Reconnaissance des unites


Exemple dans le chier source est le suivant : Le mot en entree
si a1 >= b alors a1 := 10 ;

` N Lexemes Type Mots cles 1 a1 ... si 2 b ... alors 3 ... ... Lanalyseur lexical retourne la sequence suivante dunites lexicales avec leurs attributs : si 0 id 1 oprel PGQ id 2 alors 0 id 1 opaff := nb 10 pv ;

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

18 / 24

lexicales Reconnaissance des unites

lexicales Reconnaissance des unites


Remarques ` par un espace On suppose que les lexemes sont separ es consistant dune suite non vide de blancs, tabulations et ns de lignes. Lanalyseur lexical doit eliminer ces espaces en comparant une ` suivante : cha ne avec la denition reguli ere lim blanc |tabulation|ndeligne De lim+ bl d e Si lanalyseur lexical trouve une correspondance avec bl , il ne lexicale a ` lanalyseur syntaxique. retourne pas lunite lexicale qui suit le blanc et la Il continue pour rechercher lunite ` lanalyseur syntaxique. retourne a

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

19 / 24

lexicales Reconnaissance des unites

Implementation de lanalyseur lexical

Pour ecrire lanalyseur lexical dun programme source, il suft, alors, decrire un programme simulant lautomate reconnaissant le langage avec lequel est ecrit le programme source. er e. Il sagit de produire une implementation de lautomate gen Il y a essentiellement deux types dimplementation :
Implementation manuelle :
simulation du travail de lautomate

Implementation systematique :
conversion de lautomate en un programme ou donne ` chaque etat ` un segment du code. lieu a

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

20 / 24

lexicales Reconnaissance des unites

Implementation de lanalyseur lexical

Implementation manuelle c=getchar(); switch(c) { case > : c=getchar(); if(c===) return(oprel,PGE); else return(oprel,PGQ); break; case = : return(oprel,EGA); break; case ... ...

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

21 / 24

lexicales Reconnaissance des unites

Implementation de lanalyseur lexical


Implementation systematique Switch(etat){ case 0: c=getchar(); if( car == <) etat = 1; else if (car == =) etat = 5; else if (car == >) etat = 6; else Erreur(); case 1: c=getchar(); if( car == =) return(oprel,PPE); else if (car == >) return(oprel,PPE); else { Reculer(1); return(oprel, PPQ); } case 2: ... ...
Yousra Bendaly Hlaoui (ISITCOM) Analyse Lexicale 2011-2012 22 / 24

Gestion des erreurs lexicales

Erreurs lexicales
au niveau lexical : lAL a une Peu derreurs peuvent etre detect ees ` locale du programme source. vision tres a ` une suite Les erreurs se produisent lorsque lAL est confronte ` ` aucun des modeles ` de caracteres qui ne correspond a dunites lexicales quil reconna t. Exemples
1

LAL detecte esle dans un programme C : sagit t-il du mot clef else mal ecrit ou dun identicateur ?
` de lunite lexicale comme la cha ne correspond au modele IDENT :lAL ne detecte pas derreurs ` lAS quil a reconnu un IDENT :lAS detecte lAL transmet a lerreur

LAL rencontre 1i : sagit t-il du chiffre 1 suivi de lidenticateur i ou dune erreur de frappe. lAL signale juste que la cha ne 1i ne ` une unite lexicale correspond pas a
Analyse Lexicale 2011-2012 23 / 24

Yousra Bendaly Hlaoui (ISITCOM)

Gestion des erreurs lexicales

Erreurs lexicales

Gestion des erreurs lexicales a ` une suite de caracteres ` Lorsque lAL est confronte qui ne ` aucun de ses modeles, ` corespondent a il suit lune des strategie suivantes :
1

` ` Mode panique : il ignore les caracteres qui posent des problemes ` lutilisateur quil ignore ces caracteres. ` et il continue en signalant a ` ou echange Transformation du texte source : il remplace, insere ` pour obtenir un mot qui ne pose de problemes. ` un caractere

Yousra Bendaly Hlaoui (ISITCOM)

Analyse Lexicale

2011-2012

24 / 24