IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.

Slides:



Advertisements
Présentations similaires
Explorer un espace d’états
Advertisements

Algorithmes et structures de données avancés
Sensibilisation à l’Algorithmique et structure de données
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Chap 1 Grammaires et dérivations.
IFT 702 – Planification en Intelligence Artificielle Planification avec des processus de décision de Markov Froduald Kabanza Département d’informatique.
IFT313 Introduction aux langages formels
IFT 615 – Intelligence artificielle Recherche heuristique locale
Formation PAF L’AUTOMATISME EN COLLEGE E.FONTENIAUD.
IFT313 Introduction aux langages formels
IFT 615 – Intelligence Artificielle Introduction
IFT313 – Introduction aux langages formels Eric Beaudry Département dinformatique Université de Sherbrooke Laboratoire 4 – JFlex Été 2010.
IFT313 Introduction aux langages formels
IFT 702 – Planification en intelligence artificielle Extraction automatique d’heuristiques à partir d’un modèle Froduald Kabanza Département d’informatique.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Analyse lexicale Généralités Expressions rationnelles Automates finis
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT 615 – Intelligence Artificielle Satisfaction de contraintes
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Révision de mi-session.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
IFT313 Révision finale Département d’informatique
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Grammaires attribuées.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Analyseurs récursifs LL (1)
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Automates à pile LR Notion de poignée.
IFT 702 Planification en intelligence artificielle Contrôle de la recherche avec des réseaux de tâches hiérarchiques Froduald Kabanza Département dinformatique.
IFT 702 – Planification en intelligence artificielle Transformations Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift702.
IFT313Froduald Kabanza1 IFT 313 Lab 1 1Écrivez une expression régulière pour chacun des langues suivants: a)Des mots sur lalphabet {a,b,c} telle que toute.
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
CSI3525: Concepts des Languages de Programmation
Chapitre 7: Le théorème de Kleene
Hiver 2003SEG2501 analyse lexicale1 Notes supplémentaires au sujet de lanalyse lexicale Exemples Dérivation dun NFA qui accepte le même langage (algorithme:
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
Les systèmes multiplateformes
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Chapitre 3 Syntaxe et sémantique.
Analyse lexicale et syntaxique
Partie II Sémantique.
IFT313 – Introduction aux langages formels Éric Beaudry Exercices Expressions régulières, ADF et AFN Été 2010.
Séance d’introduction
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Programmation non procédurale Le projet ECOLE 2000
Rappel Modèle analyse-synthèse de la compilation
IFT313 Introduction aux langage formels
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
IFT 702 – Planification en intelligence artificielle Planification par recherche dans un espace de plans Froduald Kabanza Département d’informatique Université.
Tables de compilation pour le langage Z minimal Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
D.E ZEGOUR Ecole Supérieure d’Informatique. Problèmes de décision Concepts de base Expressions régulières Notation particulière pour exprimer certaines.
C++ L’HERITAGE Fayçal BRAÏKI DUT INFORMATIQUE.
CSI 4506: Introduction à l’Intelligence Artificielle
Recherche par automates finis
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP
1. Spoon Christophe Delagarde, septembre 1998 I.U.T., Université de la Méditerrainée 2.
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Chap. 3 Récursion et induction. Les définitions par récurrence consistent à construire des objets finis, à partir d'autres, selon certaines règles. Les.
IFT313 IFT313 Introduction aux langages formels Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Transcription de la présentation:

IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313 Convertir un expression régulière en un AFN

IFT313© Froduald Kabanza2 Sujet couvert Convertir une expression régulière en automate fini.

IFT313© Froduald Kabanza3 Objectif Être capable décrire un automate fini acceptant le langage décrit par une expression régulière donnée.

IFT313© Froduald Kabanza4 Références [1] Sudkamp, T. A.. Languages and Machines. Third Edition Edition. Addison-Wesley, – Sections 6.1 à 6.2. [2] Appel, A. and Palsberg. J. Modern Compiler Implementation in Java. Second Edition. Cambridge, – Section 2.4 [3] Wolper, P. Introduction à la calculabilité, 3è édition. Dunod, 2006 –Section 2.7 [4] Aho, A., Lam, M., Sethi R., Ullman J. Compilers: Principles, Techniques, and Tools, 2 nd Edition. Addison Wesley, – Section 3.7.4

IFT313© Froduald Kabanza5 Pourquoi la conversion ? Les expressions régulières sont souvent plus faciles à décrire, mais plus compliquées à implémenter directement. Les automates finis non déterministes (AFN) sont utiles parce quil est très facile de convertir une expression régulière en AFN. Ceci nous donne deux chois pour coder un analyseur lexical (scanner) à partir dune expression régulière : a.Convertir lAFN en AFD et utiliser un pilote (driver) de AFD. b.Utiliser un pilote (driver) de AFN. Nous voyons la première approche en détail. La deuxième approche est laissée comme exercice.

IFT313© Froduald Kabanza6 Algorithme RegExpToNFA Entrée : Une expression régulière r sur un alphabet A Sortie : Un AFN acceptant L(r). Méthode : Pour chaque expression régulière r de base (c-à-d., ε ou un élément de A), il existe un AFN très simple pour L(r). Pour chaque expression régulière plus complexe, u, (par exemple: rs, r|s, r*, r+, [abc], [a-z],…), on obtient lAFN pour L(u) en combinant les AFNs pour L(r), L(s), L(a), L(b), … On peut ensuite optimiser lAFN obtenu.

IFT313© Froduald Kabanza7 Cas de base 1.Pour ε, construire lAFN : tel que i est un nouvel état initial et accepteur. 2.Pour chaque symbole a de lalphabet, construire lAFN : Là aussi i et f sont de nouveaux états. i i f a

IFT313© Froduald Kabanza8 Cas récursifs Soit N(r) et N(s) les automates pour les expressions régulières r et s : Pour les cas récursifs, nous avons besoin de manipuler explicitement uniquement les états initiaux et finis des automates à combiner. rs

IFT313© Froduald Kabanza9 Cas récursifs 3.Pour lexpression régulière rs, construire lAFN N(rs) : C-à-d.: Létat initial de N(rs) est létat initial de N(r) et les états finaux de N(rs) sont les états finaux de N(s). Ensuite, il faut ajouter des transitions ε partant des états finaux de N(r) vers létat initial de N(s). r s ε ε ε

IFT313© Froduald Kabanza10 Cas récursifs 4.Pour lexpression régulière r|s, construire lAFN N(r|s) : C-à-d.: on crée un nouvel état i, avec des transitions ε aux états initiaux de N(r) et N(s). Les états finaux de N(rs) sont ceux de N(r) et N(s). r s ε ε i

IFT313© Froduald Kabanza11 Cas récursifs 5.Pour lexpression régulière r*, construire lAFN N(r*) : C-à-d: On crée un nouvel état initial i avec une transition ε à lancien état initial de N(r), ainsi que des transitions des états finaux de N(r) à lancien état initial de N(r). i ε ε ε ε r

IFT313© Froduald Kabanza12 Autres expressions 6.Pour r+, construire N(r+) comme N(rr*). 7.For r?, construire N(r?) comme N(r| ε ). 8.For abc, construire N(abc) comme N(a(bc)). 9.Finalement pour [abc], construire N([abc]) comme N(a|(b|c)). En général, pour les abréviations, utilisez la définition correspondante.

IFT313© Froduald Kabanza13 Exemple r = if 1 2 i I N(i) : 3 4 f F N(f) : 1 2 i 3 4 f IF ε N(if) : 1 2 i 3 f IF Après simplification :

IFT313© Froduald Kabanza14 Exemple r = [0-9]+ | [0-9]*.[0-9] ε ε ε N([0-9]), après simplifications : N([0-9]*), après simplifications :

IFT313© Froduald Kabanza15 Exemple (suite) r = [0-9]+ | [0-9]*.[0-9] ε ε ε ε ε NUM ε REAL. Ainsi de suite … À la fin on obtient : [0-9].. REAL NUM [0-9]

IFT313© Froduald Kabanza16 Résumé Il est facile de traduire une expression régulière en un AFN La méthode quon vient de voir nest pas optimale. Il existe des approches plus efficaces. On peut formellement démontrer que la méthode précédente est correcte. (Laissé comme exercice). Donc pour toute expression régulière il existe un AFN qui accepte le langage décrit par lexpression. Linverse est vrai aussi (Laissé comme exercice).

IFT313© Froduald Kabanza17 Leçon suivante Nous venons de voir comment générer un AFN à partir dune expression régulière. Létape prochaine est de voir la construction dun AFD correspondant à un AFN. Nous savons déjà comment programmer un scanner en utilisant un AFD (Devoir 1). La construction dun AFD à partir dun AFN nous permettra donc dimplémenter des scanners à partir des expressions régulières. Lalternative est de scanner en utilisant un AFN directement. Nous aborderons ce sujet sommairement.