Vous êtes sur la page 1sur 25

Analyse 

 Lexicale
A.L. : Objectif (rappel)
Rappelez vous : 
Rôle
Lire le code source caractère par caractère et extraire les mots
(lexèmes) et les classes correspondantes
Exemple
« For i = 1 to 10 do print(i); »
 For : Mot Réservé
 I : Identifiant
 = : Opérateur
 1 : Entier
 To : Mot Réservé
 Etc...
A.L. : Outils de travail

Spécifier le langage de 
programmation :
Expressions Régulières

Série de transformations pour passer  
d’E.R à des AFD
(Thompson, déterminisation, 
minimisation, etc..)

Reconnaissance des lexèmes et 
des classes de lexèmes:
Automates Finis Déterministe
A.L. : Expressions régulières
• Un alphabet est un ensemble fini de caractères.

• Une chaîne de caractères est une séquence fini de 
caractères d’un alphabet.

• Un langage est un ensemble  (fini ou pas) de chaînes de 
caractères.

Exemples:
les prénoms des étudiants, les entiers,
les identifiants dans C, l’arabe, etc…
A.L. : Expressions régulières
• Eléments:
 Caractères : ‘a’, ‘b’, ‘c’, etc …

 Chaîne vide : Ɛ

• Opérations de base:

 Union : A + B = {a | a ∈ A} ∪ {b | b∈B}

 Concaténation : AB = {ab | a ∈A et b ∈ B}

 Fermeture de Kleene (étoile) : A* =  ‫≥𝑖ڂ‬0 𝐴𝑖 , 
A0 = Ɛ ,
Ai= A … A
i fois
A.L. : Expressions régulières
• Définition:
Les expressions régulières sur un alphabet  ∑ est l’ensemble
minimal des expressions qui incluent   Ɛ
|‘c’ , c ∈∑
|R + R 
|RR
|R*
• Priorités des opérations de base:
 Union ≈ Addition
 Concaténation ≈ Multiplication
 Etoile ≈ Puissance
Exemples: 
(a+b)c = (ac)+(bc) = { ’ac’, ’bc’ }
a+bc = a+(bc) = { ’a’, ’bc’ }
ab* = a(b*) = { ’a’, ’ab’, ’abb’, . . .}
A.L. : Expressions régulières
Structure Lexicale d’un langage de programmation

=
L’ensemble des classes de lexèmes.

• Chaque classe de lexèmes représente un ensemble de chaînes


de caractères pouvant être générées par une expression
régulière.

Une classe de lexèmes  = une expression régulière (langage régulier)
A.L. : Automates Finis
• Automate fini = Implémentation d’une expression régulière.

• Un automate fini est définit par:

 Un alphabet  ∑

 Un ensemble fini d’état S

 Un état initial (axiome) n

 Un ensemble d’états finaux ou d’acceptation F

 Un ensemble de transitions s1  s2
A.L. : Automates Finis
• Un état

• Un état initial

• Un état final

• Une transition a
A.L. : Automates Finis
Automate fini non déterministe (AFN)

Règles : Pas de règles
 Pas de restrictions sur les étiquettes des arcs.

 Possibilité d’avoir plus qu’une transition à partir d’un état


pour un caractère donné.

 Possibilité d’avoir des Ɛ­transitions.

 Aspect non déterministe = possibilité de faire des choix.
A.L. : Automates Finis
Automate fini déterministe (AFD)

Règles :
 Au plus un arc sortant par caractère.

 Pas de Ɛ­transitions.

 Aspect déterministe = les chemins sont déterministes et pas 
de choix possibles.
A.L. : Automates Finis
 Un mot w est accepté s’il existe au moins un chemin étiqueté par les
caractères de w et qui se termine par un état final. (algorithme linéaire 
pour un AFD)

 L’ensemble des mots reconnus par un AFN ou un AFD définit un langage


régulier généré par une expression régulière correspondante. 

 Comment évaluer une expression régulière ?
Réponse : construire l’AFD correspondant en3 étapes :
­ transformation ER  AFN (construction de Thompson)

­ transformation AFN  AFD (Déterminisation)

­ minimisation de l’AFD (algorithme de Moore)


A.L. : ER  AFN (Thompson)
Soit  R une expression régulière

• Pour R = c (ou ε) c (ou ε) 
A.L. : ER  AFN (Thompson)
Soit  R une expression régulière

• Pour R = c (ou ε) c (ou ε) 

• Pour R = AB  ε
AFN de A AFN de B
A.L. : ER  AFN (Thompson)
Soit  R une expression régulière

• Pour R = c (ou ε) c (ou ε) 

• Pour R = AB  ε
AFN de A AFN de B

• Pour R = A + B  ε AFN de A ε
ε ε
AFN de B
A.L. : ER  AFN (Thompson)
Soit  R une expression régulière

• Pour R = c (ou ε) c (ou ε) 

• Pour R = AB  ε
AFN de A AFN de B

• Pour R = A + B  ε AFN de A ε
ε ε
AFN de B

ε
• Pour R = A*
ε AFN de A
ε
ε
A.L. : ER  AFN (Thompson)

Exemple :   R =  1*+ 0

Solution : AFN
A.L. : AFN  AFD (Déterminisation)
 Un état de l’AFD ≈ n états de l’AFN.

 ε­fermeture(s) est un ensemble d’états contenant l’état s lui­même


ainsi que tous les états atteignables à partir de s par une ou
plusieurs ε­transitions.

 trans(s, c) est l’ensemble des états atteignables par une seule


transition c à partir d’un état s.

 On commence par calculer la ε­fermeture de l’état de départ de


l’AFN.

 Si un état nouvellement construit de l’AFD contient au moins un état


final de l’AFN alors il est aussi final.
A.L. : AFN  AFD (Déterminisation)
Algorithme
A.L. : Minimisation de l’AFD (Moore)
• Suivre exemple sur tableau.
A.L. : Minimisation de l’AFD (Moore)
A.L. : Minimisation de l’AFD (Moore)
A.L. : Minimisation de l’AFD (Moore)
A.L. : Minimisation de l’AFD (Moore)
A.L. : Minimisation de l’AFD (Moore)

Vous aimerez peut-être aussi