Chapter 8

publicité
Notes supplémentaires
au sujet de l’analyse lexicale
Exemples
Dérivation d’un NFA qui accepte le même
langage (algorithme: expression régulière – >
NFA)
Transformation NFA – > DFA
par Gregor v. Bochmann
février 2003
hiver 2003
SEG2501 analyse lexicale
1
NFA
• Voici un automate qui accepte le langage défini par
l’expression régulière (a|b)*abb
hiver 2003
SEG2501 analyse lexicale
2
suite
• Cet automate a la table de transition suivante:
hiver 2003
SEG2501 analyse lexicale
3
Voici un DFA qui accepte la
même langage
hiver 2003
SEG2501 analyse lexicale
4
Exemple de construction d’un automate
à partir d’une expression régulière
• Nous prenons l’exemple de l’expression r=(a|b)*abb
• Voici son arbre syntaxique:
hiver 2003
SEG2501 analyse lexicale
5
Exemple – suite
• Pour les feuilles de l’arbre, voici les automates
correspondants:
• Voici l’automate correspondant à la parenthèse avec ses
deux alternatives:
hiver 2003
SEG2501 analyse lexicale
6
Exemple – suite (2)
• Voici l’automate correspondant à la parenthèse
avec l’étoile:
hiver 2003
SEG2501 analyse lexicale
7
Exemple – suite (3)
• Avec un a ajouté à la fin, cela donne cela:
hiver 2003
SEG2501 analyse lexicale
8
Exemple – suite (4)
•
. . . et finalement le résultat final:
hiver 2003
SEG2501 analyse lexicale
9
Exemple de conversion NFA à DFA
• Prenons le NFA obtenu pour l’expression
régulière ci-haut:
hiver 2003
SEG2501 analyse lexicale
10
Table de transition du DFA
• Si on applique l’algorithme décrit dans les notes du Dr.
Somé, on obtient la table de transition suivante.
• Question: Quels ensembles d’états du NFA représentent
les états A, B, C etc. du DFA ?
hiver 2003
SEG2501 analyse lexicale
11
Diagramme de transition du DFA
hiver 2003
SEG2501 analyse lexicale
12
La minimalisation des automates
• Question: Etes-vous surpris que l’on a pas obtenu le même automate que
celui présenté sur la page 4?
• Les deux automates sont équivalents.
• Définition: Deux automates sont équivalents s’ils acceptent le même
langage.
• Il existe des algorithmes pour trouver un automate minimal (ayant le
nombre minimum d’états) équivalent à un automate donné. Un tel
algorithme pourrait être appliqué à l’automate obtenu sur la page
précédente pour aboutir à l’automate minimal montré sur la page 7.
• Question: Comment peut-on vérifier que l’automate de la page 7 est
minimal ?
– Réponse: Si le langage accepté pour chaque état (pris comme état initial) est
différent des autres états, alors l’automate est minimal.
– Inversement, on voit que les états A et C de l’automate de la page précédente
acceptent le même langage. Donc, se sont des états équivalents, et l’automate
n’est pas minimal. On peut fusionner les états équivalents et on obtient
l’automate de la page 7.
hiver 2003
SEG2501 analyse lexicale
13
Téléchargement