Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison.

Slides:



Advertisements
Présentations similaires
Déductions logiques et calcul de représentations sémantiques Alain Lecomte UMR SFL Séminaire « Logique, Sémantique, Dialogue » - partie I.
Advertisements

Méthodes basées sur la connaissance de la fécondité
PROGRAMMATION LOGICIEL PL7 MICRO Consignes
9 octobre 2007Cours de compilation 5 - Intranet1 Cours de compilation Techniques danalyse ascendantes.
24 septembre 2007Cours de compilation 4 - Intranet1 Cours de compilation Techniques danalyse descendantes.
Les circuits séquentiels
Chap 1 Grammaires et dérivations.
Introduction : Compilation et Traduction
Automate asynchrone.
Expressions rationnelles
La fonction Style Permet de créer des types de texte, par exemple
IFT313 Introduction aux langages formels
Cours d’Automatique MASTER OIV
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.
Analyse  Syntactique (Compilers, Principles, Techniques and Tools, Aho, Sethi et Ullman, 1986)
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke planiart.usherbrooke.ca/kabanza/cours/ift313.
IFT313 Introduction aux langages formels
Méthode de scénarisation
Notions de base de la théorie des langages
Le codage des nombres en informatique
Programmation fonctionnelle Le langage LISP
Programmation logique Démonstrateur automatique
I.A. Session 2009/2010 E.P.S.I. Bordeaux – C.S.I.I – 2 ème Année – Cours n°3.
A propos de ce diaporama Ce diaporama progresse automatiquement. Cest pourquoi : si vous trouvez que le diaporama avance trop lentement, ou pour passer.
INTRODUCTION AU LANGAGE « LADDER » ROLE DES DIFFERENTS ELEMENTS
Rappel... Solution itérative de systèmes linéaires (suite et fin).
Codage convolutif Les codeurs convolutifs génèrent un mot de code de longueur n à partir de plusieurs messages de longueurs k. La valeur du mot de code.
Examen de compilation 4ème année - A
Structures de données IFT-2000
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke Révision de mi-session.
IFT313 Révision finale Département d’informatique
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 Automates à pile LR Notion de poignée.
Rappels de logique des prédicats du 1er ordre
Chapitre 3 Machines de Turing.
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:
Traduction dirigée par la syntaxe
L’OFFRE ET LA DEMANDE.
Chapitre 3 Syntaxe et sémantique.
Analyse lexicale et syntaxique
Partie II Sémantique.
Analyse lexicale Pr ZEGOUR DJAMEL EDDINE
Rappel Modèle analyse-synthèse de la compilation
Le candidat traite un sujet au choix parmi deux proposés dans la même discipline. Pour traiter le sujet choisi, en histoire comme en géographie : - il.
INTERSECTION DE CYLINDRES
IFT Complexité et NP-complétude Chapitre 0 Rappels.
Programmation procédurale Transformations
IFT313 Introduction aux langage formels
Paradigmes des Langages de Programmation
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Chapitre II Analyse Lexical.
Module 8 : Surveillance des performances de SQL Server
Les machines de Turing Lionel Blavy Sébastien Giraud Fabien Tricoire
Le GRAFCET.
IFT313 Introduction aux langage formels
© Petko ValtchevUniversité de Montréal Février IFT 2251 Génie Logiciel Spécification de Processus Concurrents Hiver 2002 Petko Valtchev.
Recherche par automates finis
Abdelkader Heni FUNDP Syntaxe et sémantique Abdelkader Heni FUNDP
L T I Laboratoire de Téléinformatique 2 Projet de semestre Parseur XML basé sur la DTD : Buts –Utiliser la grammaire définissant un type de fichiers XML.
Chap 1 Grammaires et dérivations.
Chap 2. L'analyse descendante
Les dépenses budgétaires.  Rôle de l'Etat et "cœur des dépenses publiques  Etudier les dépenses publiques renvoie avant tout à l'analyse du rôle de.
CentralWeb F. Playe1 Principes de base du routage IP Ce cours est la propriété de la société CentralWeb. Il peut être utilisé et diffusé librement.
AUTOMATISME Chapitre 2: Le GRAFCET.
Transcription de la présentation:

Applications des langages hors-contextes Les analyseurs syntactiques ascendants GNU Yacc et Bison

Analyseur ascendant Il sagit dun automate à pile déterministe avec deux types de transitions: – Déplacement (Shift): Action de placer le symbole dentrée courant sur le dessus de la pile et davancer la tête de lecture au prochain symbole dentrée. – Réduction: Sil existe une règle T w et que w est sur le dessus de la pile alors une réduction consiste à remplacer w par T.

Analyseur ascendant Le comportement d'un parseur ascendant est indiqué par deux tables: La table ACTION indique si un déplacement ou une réduction doit avoir lieu étant donné l'état courant et le prochain terminal La table GOTO indique quel état on doit placer sur le dessus de la pile après qu'une réduction ait eu lieu.

Exemple On a la grammaire: 1.E E + T 2.E T 3.T T * F 4.T F 5.F ( E ) 6.F id Les tables ACTION et GOTO sont habituellement construite à l'aide d'un programme telle que YACC ou GNU bison

Les tables ACTION et GOTO

Analyseurs ascendants (suite) PileEntréeAction 0id + id * id $ Shift 5 0 id 5+ id * id $ Reduce 6 (GOTO[0,F]) 0 F 3+ id * id $ Reduce 4 (GOTO[0,T]) 0 T 2+ id * id $ Reduce 2 (GOTO[0,E]) 0 E 1+ id * id $ Shift 6 0 E 1 + 6id * id $ Shift 5 0 E id 5* id $ Reduce 6 (GOTO[6,F]) 0 E F 3* id $ Reduce 4 (GOTO[6,T]) 0 E T 9* id $ Shift 7 0 E T 9 * 7id $ Shift 5 0 E T 9 * 7 id 5$ Reduce 6 (GOTO[7,F]) 0 E T 9 * 7 F 10$ Reduce 3 (GOTO[6,T]) 0 E T 9$ Reduce 1 (GOTO[0,E]) 0 E 1$ Accept 1)E E + T 2)E T 3)T T * F 4)T F 5)F ( E ) 6)F id

Analyseurs ascendants (suite) Le non déterminisme de lautomate à pile peut provenir de deux situations: Conflit shift-reduce Conflit reduce-reduce

Conflits Shift-Reduce S 0 S 0 | 0 Dans la situation où 0 est au dessus de la pile et que le prochain symbole dentrée est 0, on a le choix entre faire une réduction (règle S 0) où encore mettre 0 sur la pile (shift) Bison (ou Yacc) choisit toujours le Shift dans ce cas.

Conflits Reduce-Reduce 1.S 0 S 0 2.S T 3.T S 0 4.T 1 Si la pile contient 0 S 0 alors il y a deux réductions possibles (règles 1 et 3) Yacc choisit toujours la première des règles dans ce cas.

Comprendre les tables: les items (0)S T$ (1)T 0T0 (2)T 1 Items: S _T$T _0T0 T _1 S T_$ T 0_T0 T 1_ S T$_ T 0T_0 T 0T0_ Items complets: S T$_ T 0T0_ T 1_

T ST_$ Signification des items 0T0 0T0 S S_T$ $ ST$_ T T0T_0 T T0T_0 0 T0T0_ 1 T1_ 0 T0T0_ 0 T0_T0 0 T0_T0 Un item de la forme Aα_β indique que l'on est en train de traiter la règle Aαβ alors que α est sur les dessus de la pile Un item complet de la forme Aγ_ indique que γ est sur le dessus de la pile et qu'on peut le remplacer par A (réduction)

T ST_$ Signification des items (suite) 0T0 0T0 S S_T$ $ ST$_ T T0T_0 T T0T_0 0 T0T0_ 1 T1_ 0 T0T0_ 0 T0_T0 0 T0_T0 1, T1_ 0, T0_T0 S, S_T$ Accepter S, S_T$ $, ST$_ T, ST_$ S, S_T$ T, ST_$ S, S_T$ 0, T0T0_ T, T0T_0 0, T0_T0 S, S_T$ T, T0T_0 0, T0_T0 S, S_T$ 0, T0T0_ T, T0T_0 0, T0_T0 S, S_T$ T, T0T_0 0, T0_T0 S, S_T$ Shifts (3 fois) Reduce Shift Reduce Shift Reduce ShiftReduce Analyse du mot 00100$

Automate fini déterministe (Enfin presque) 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T 0 T $ 1 1 0) S T$ 1) T 0T0 2) T 1 Cet automate sert à définir les tables ACTION et GOTO Chaque état correspond à un item Les mots conduisant à un item sont ceux représentant le contenu possible de la pile. Létat poubelle nest pas illustré.

Construction des tables à partir de l'automate ACTIONGOTO 01$T 0S2S31 1 accepter 2S2S34 3R2 4S5 5R1

Autre exemple Ajoutons 3 règles à la grammaire précédente: (0)S T$ (1)T 0T0 (2)T 1 (3)T 0V (4)V 2V (5)V 2

Automate fini non-déterministe 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T 0 T $ T0_V 8 V2_V 7 V2_ 9 V2V_ V T0V_ V

Automate fini déterministe 0 S_T$ 1 ST_$ ST$_ 4 T0T_0 2 T0_T0 5 T0T0_ 3 T1_ 0 0 T $ 1 1 2,6 T0_T0 T0_V 7,8 V2_ V2_V 9 V2V_ 2 2 V 0 0 T 10 T0V_ V Après la transformation, chaque état correspond à un ensemble d'items.