Académique Documents
Professionnel Documents
Culture Documents
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:
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.
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.
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)
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)
• 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.