Rappel Modèle analyse-synthèse de la compilation

Slides:



Advertisements
Présentations similaires
L-System et modélisation de plantes…
Advertisements

Chap 1 Grammaires et dérivations.
Introduction : Compilation et Traduction
Automate asynchrone.
Expressions rationnelles
FLSI602 Génie Informatique et Réseaux
IFT313 Introduction aux langages formels
IFT 615 – Intelligence artificielle Recherche heuristique locale
IFT313 Introduction aux langages formels
IFT313 – Introduction aux langages formels Eric Beaudry Département dinformatique Université de Sherbrooke Laboratoire 4 – JFlex Été 2010.
IFT313 Introduction aux langages formels
Conception et analyse des algorithmes
IFT313 Introduction aux langages formels
Introduction : Compilation et Traduction
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.
IFT451 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
Notions de base de la théorie des langages
Programmation fonctionnelle Le langage LISP
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°3.
Rappel... Solution itérative de systèmes linéaires (suite et fin).
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
IFT313 Introduction aux langages formels
Examen de compilation 4ème année - A
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.
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.
Expressions régulières et hash tables
Semaine #1 INF130 par Frédérick Henri.
IFT Complexité et NP-complétude
1 CSI3525: Concepts des Languages de Programmation Notes # 3: Description Syntaxique des Languages.
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é.
IFT 6800 Atelier en Technologies d’information
Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison.
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.
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Programmation procédurale Transformations
Expressions régulières et hash tables
Paradigmes des Langages de Programmation
Chapitre II Analyse Lexical.
Les machines de Turing Lionel Blavy Sébastien Giraud Fabien Tricoire
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.
D.E ZEGOUR Ecole Supérieure d’Informatique
Recherche par automates finis
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Chap 1 Grammaires et dérivations.
Philippe Gandy - 8 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
BASE DE L’ALGORITHMIE.  Un système d’instructions.  Pour résoudre d’un problème ou d’une classe de problèmes  Recette de cuisine pour faire un gâteau.
IFT313 IFT313 Introduction aux langages formels Froduald Kabanza Département d’informatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
Transcription de la présentation:

Rappel Modèle analyse-synthèse de la compilation code source position = initial + rate * 60 table de symboles position id1 rate initial id2 id3 Analyseur lexicale (scanner) unités lexicales (token) id1 = id2 + id3 * 60 Analyseur syntaxique (parser) = + * id1 id2 id3 60 arbre syntaxique IFT313 © Froduald Kabanza

Rappel Modèle analyse-synthèse de la compilation Chacun des éléments du lexique est décrit par une expression régulière position = initial + rate * 60 Analyseur lexicale (scanner) id1 = id2 + id3 * 60 code source unités lexicales (token) L’analyseur lexical est un automate à états fini déterministe Nous avons donc besoin de : Convertir une expression régulière en un AFN Convertir un AFN en AFD Optimiser l’AFD IFT313 © Froduald Kabanza

Rappel Expressions régulières Automates à états finis Conversion d’une expression régulière en un automate à états fini non déterministe IFT313 © Froduald Kabanza

Rappel Expressions régulières Automates à états finis Conversion d’une expression régulière en un automate à états fini non déterministe IFT313 © Froduald Kabanza

Expression régulières ε (ou ‘’) : L’expression régulière ε représente le langage {ε} (ou {‘’}) symbole (caractère) : Pour chaque symbole (caractère) a dans l’alphabet, l’expression régulière a représente le langage {a}, c-à-d., le langage contenant juste le mot a. Étant donnés les expressions régulières r et s représentant, respectivement, les langages L(r) et L(s) : r|s (alternation) est une expression régulière représentant L(r) U L(s). rs (concaténation) est une expression régulière représentant L(r)L(s). r* (zéro ou plusieurs répétitions) représente (L(r))*. (r) est une expression régulière représentant L(r). IFT313 © Froduald Kabanza

Exemples expressions régulières ((a|b)a)* spécifie le langage de mots de longueur paire terminés par un ‘a’ { ‘’, aa, ba, aaaa, baaa, aaba, baba, aaaaaa, …} (0|1)*0 spécifies l’ensemble de nombres binaires qui sont des multiples de 2. ((a|b)a)* n’est pas le langage de mots terminé par un ‘a’. Ce dernier est (a|b)*a IFT313 © Froduald Kabanza

Rappel Expressions régulières Automates à états finis Conversion d’une expression régulière en un automate à états fini non déterministe IFT313 © Froduald Kabanza

Automates à états finis Un automate à états finis, ou automate fini (AF) tout court, est un modèle très simple de programme ayant : une entrée de chaîne de symboles (caractères), un ensemble fini d’états, des transitions entre les états en fonction des symboles lus, et un état initial un ensemble d’états accepteurs (appelés aussi états finaux). Entrée if (rate >= 0) …… Tête de lecture i f IF 1 3 4 ... 2 w h AF IFT313 © Froduald Kabanza

Définition formelle Un automate fini M est un tuple M = (S,A,R,s0, F) : A est un ensemble de symboles (l’alphabet) S est un ensemble fini d’états R est soit: Une relation de transition R : S × A* ® 2S pour les automate fini non déterministe (AFN) Une fonction de transition R : S × A ® S pour les automates finis déterministes (AFD) s0 est l’état initial (appartenant dans S) F est un ensemble finaux d’états (appartenant dans S) IFT313 © Froduald Kabanza

. Exemple . a..z 1 3 4 2 5 “ ” 0..9 “ ” 1 2 3 4 5 [0-9] NUM REAL SPACE “ ” other 1 2 3 4 5 IFT313 © Froduald Kabanza

Simuler un AFD Algorithme I : DFASimualtor (Simulateur d’AFD ou PiloteAFD) Entrée : Chaîne de symboles input terminée par EOF (fin de fichier). AFD D, avec la matrice de transitions trans, état initial s0 (initialState), et états accepteurs F Sortie : True if D accepts x; False otherwise. Approche : Suivre la fonction de transition trans. Utiliser input.nextChar() pour lire la prochaine caractère dans input. IFT313 © Froduald Kabanza

Code de l’algorithme currentState = D.initialState; currentInputPosition = 0; currentChar = input.nextChar(); currentInputPosition++; while ((currentChar!=EOF) && (currentState !=0 ) ) { currentState = D.trans[currentState][currentChar]; } if in(currentState, D.F) && (currentChar == EOF)) return TRUE; else return FALSE; IFT313 © Froduald Kabanza

Exemple de trace Entrée : 9 7 . 5 EOF 1 1 2 2 2 3 3 4 3 current Input [0-9] . REAL NUM 5 “ ” SPACE current Input Position current State 1 1 2 2 2 ‘ ‘ [0-9] ‘.’ 1 5 2 4 3 3 3 4 3 Retourne TRUE (accepte l’entrée) parce qu’il termine dans un état accepteur et toute l’entrée est lue. IFT313 © Froduald Kabanza

Reconnaître des tokens L’algorithme précédent accepte ou rejette un chaîne de caractères. La tâche d’un analyseur lexical n’est pas juste d’accepter ou rejeter des chaînes de caractères. Il doit trouver la plus longue sous-chaîne de l’entrée correspondant à une expression régulière (longest match). On peut étendre l’algorithme précédent pour garder une trace de la plus longue sous-chaîne acceptée, en introduisant des variables additionnelles. IFT313 © Froduald Kabanza

Rappel Expressions régulières Automates à états finis Conversion d’une expression régulière en un automate à états fini non déterministe IFT313 © Froduald Kabanza

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 l’AFN pour L(u) en combinant les AFNs pour L(r), L(s), L(a), L(b), … On peut ensuite optimiser l’AFN obtenu. IFT313 © Froduald Kabanza

Cas de base i i f Pour ε, construire l’AFN : tel que i est un nouvel état initial et accepteur. Pour chaque symbole a de l’alphabet, construire l’AFN : Là aussi i et f sont de nouveaux états. i i f a IFT313 © Froduald Kabanza

Cas récursifs Pour l’expression régulière rs, construire l’AFN 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 Kabanza

Cas récursifs Pour l’expression régulière r|s, construire l’AFN 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 Kabanza

Cas récursifs Pour l’expression régulière r*, construire l’AFN N(r*) : C-à-d: On crée un nouvel état initial i avec une transition ε à l’ancien état initial de N(r), ainsi que des transitions des états finaux de N(r) à l’ancien état initial de N(r). i ε r IFT313 © Froduald Kabanza