hiver 2003SEG2501 analyse lexicale1 Notes supplémentaires au sujet de lanalyse lexicale Exemples Dérivation dun NFA qui accepte le même langage (algorithme: expression régulière – > NFA) Transformation NFA – > DFA par Gregor v. Bochmann février 2003
hiver 2003SEG2501 analyse lexicale2 NFA Voici un automate qui accepte le langage défini par lexpression régulière (a|b)*abb
hiver 2003SEG2501 analyse lexicale3 suite Cet automate a la table de transition suivante:
hiver 2003SEG2501 analyse lexicale4 Voici un DFA qui accepte la même langage
hiver 2003SEG2501 analyse lexicale5 Exemple de construction dun automate à partir dune expression régulière Nous prenons lexemple de lexpression r=(a|b)*abb Voici son arbre syntaxique:
hiver 2003SEG2501 analyse lexicale6 Exemple – suite Pour les feuilles de larbre, voici les automates correspondants: Voici lautomate correspondant à la parenthèse avec ses deux alternatives:
hiver 2003SEG2501 analyse lexicale7 Exemple – suite (2) Voici lautomate correspondant à la parenthèse avec létoile:
hiver 2003SEG2501 analyse lexicale8 Exemple – suite (3) Avec un a ajouté à la fin, cela donne cela:
hiver 2003SEG2501 analyse lexicale9 Exemple – suite (4)... et finalement le résultat final:
hiver 2003SEG2501 analyse lexicale10 Exemple de conversion NFA à DFA Prenons le NFA obtenu pour lexpression régulière ci-haut:
hiver 2003SEG2501 analyse lexicale11 Table de transition du DFA Si on applique lalgorithme 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 2003SEG2501 analyse lexicale12 Diagramme de transition du DFA
hiver 2003SEG2501 analyse lexicale13 La minimalisation des automates Question: Etes-vous surpris que lon 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 sils 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é à lautomate obtenu sur la page précédente pour aboutir à lautomate minimal montré sur la page 7. Question: Comment peut-on vérifier que lautomate 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 lautomate est minimal. –Inversement, on voit que les états A et C de lautomate de la page précédente acceptent le même langage. Donc, se sont des états équivalents, et lautomate nest pas minimal. On peut fusionner les états équivalents et on obtient lautomate de la page 7.