Compilation. Plan. CM2 - Analyse syntaxique. COMP, M1 info [0]

Documents pareils
Théorie des Langages

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

Évaluation et implémentation des langages

Cours 1 : Qu est-ce que la programmation?

Quelques éléments de compilation en C et makefiles

Algorithmique et Programmation, IMA

Cours 1 : La compilation

Analyse de sécurité de logiciels système par typage statique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

CH.6 Propriétés des langages non contextuels

Introduction à la programmation Travaux pratiques: séance d introduction INFO0201-1

Utilisation des tableaux sémantiques dans les logiques de description

Initiation à l algorithmique

Dérivation : Résumé de cours et méthodes

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Machines virtuelles Cours 1 : Introduction

Cours de Programmation 2

Licence Sciences et Technologies Examen janvier 2010

Continuité et dérivabilité d une fonction

TP 1. Prise en main du langage Python

Introduction à Eclipse

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Algorithmique et Programmation Fonctionnelle

modules & compilation

La mémoire. Un ordinateur. L'octet. Le bit

Théorie de la Programmation

MIS 102 Initiation à l Informatique

Formula Negator, Outil de négation de formule.

Traduction des Langages : Le Compilateur Micro Java

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Introduction aux Systèmes et aux Réseaux, Master 2 CCI

ADAPT: un modèle de transcodage des nombres. Une application des systèmes de production au développement

Compilation. Algorithmes d'analyse syntaxique

CHAPITRE 1. Introduction aux bases de données

S LICENCE INFORMATIQUE Non Alt Alt SS1 S2 S3 S4 S5 S6 Parcours : IL (Ingénierie Logicielle) SRI (Systèmes et Réseaux Informatiques)

Programmation C. Apprendre à développer des programmes simples dans le langage C

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Bases de données cours 1

Bases de programmation. Cours 5. Structurer les données

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

TP Bases de données réparties

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

TRAVAUX DIRIGES D'INFORMATIQUE INITIATION A LA MANIPULATION DE WINDOWS 98

Ordonnancement temps réel

«Dire et écrire» pour réaliser une composition en travail collaboratif en géographie. Agnès Dullin, lycée J. Racine 20 rue du Rocher, Paris

Python - introduction à la programmation et calcul scientifique

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Grammaires d unification

Fiche PanaMaths Calculs avec les fonctions sous Xcas

UNIVERSITE DE TOULON UFR FACULTE DE DROIT REGLEMENT D EXAMEN ANNEE 2012/2017 LICENCE DROIT MENTION DROIT GENERAL

Partie 1 - Séquence 3 Original d une fonction

Correction de l examen de la première session

Introduction à l étude des Corps Finis

TD 1 - Structures de Traits et Unification

Résolution d équations non linéaires

Simulation en santé. Outil de gestion des risques. Avril Dr MC Moll 1

Pour l épreuve d algèbre, les calculatrices sont interdites.

Introduction aux Bases de Données Relationnelles Conclusion - 1

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

STAGE IREM 0- Premiers pas en Python

Enseigner les Lettres avec les TICE

Prise en main de Moodle

L E C O U T E P r i n c i p e s, t e c h n i q u e s e t a t t i t u d e s

Cours Composant 2. Qualité logicielle et spécications algébriques

Préparation à l examen EFA en Macro

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Maple: premiers calculs et premières applications

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

TP1 - Prise en main de l environnement Unix.

Le théorème de Thalès et sa réciproque

TP 1 Prise en main de l environnement Unix

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Initiation à la programmation en Python

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Nom de l application

ZOTERO Un outil gratuit de gestion de bibliographies

Cours de Master Recherche

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

TP, première séquence d exercices.

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

RMI le langage Java XII-1 JMF

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Licence de Biologie, 1ère année. Aide. [Aide 1] Comment utiliser l'explorateur Windows? Comment créer des dossiers?

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

L informatique en BCPST

Plan du cours : Zippers. Des fonctions sur les listes avec position. Des fonctions sur les listes avec position

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

CRÉER UN COURS EN LIGNE

Programmer en JAVA. par Tama

UE Programmation Impérative Licence 2ème Année

Chapitre I Notions de base et outils de travail

ARBRES BINAIRES DE RECHERCHE

Introduction à MATLAB R

Intelligence artificielle appliquée à l automatique

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Initiation à la Programmation en Logique avec SISCtus Prolog

Transcription:

Compilation CM2 - Analyse syntaxique ISTIC, Université de Rennes 1 Sebastien.Ferre@irisa.fr COMP, M1 info 1 / 34 Plan [0] Analyse syntaxique Résumé cours précédent Automate des items non-contextuels Analyse syntaxique descendante Analyse syntaxique ascendante sujet DM 2 / 34

Plan [0] Analyse syntaxique Résumé cours précédent Automate des items non-contextuels Analyse syntaxique descendante Analyse syntaxique ascendante sujet DM 3 / 34 Rappels langage = ensemble de mots mot = suite de caractères/symboles/terminaux hiérarchie de langages type 3 : langages dits réguliers engendrés par des expressions régulières reconnus par des automates finis type 2 : langages dits algébriques engendrés par des grammaire hors-contexte reconnus par des automates à pile 4 / 34

Des grammaires aux automates Problème Comment construire un automate à pile M à partir d une grammaire hors-contexte G tel que L(M) = L(G)? quels états (Q)? quelles transitions ( )? grammaire = spécification du langage (génération) automate = implémentation du langage (reconnaissance) C est un problème de compilation! langage source : grammaires langage cible : automates à pile préservation de la sémantique : L(G) = L(M) efficacité : automate déterministe, si possible 5 / 34 Des grammaires aux automates Décomposition du problème : 1. traduction : dérivation d un automate des items non-contextuels (AINC), indéterministe 2. optimisation : réduction de l indéterminisme par application de restrictions différentes restrictions différents types d analyses pour différents types de grammaires ex. : descendante, ascendante, tabulée 6 / 34

Grammaire augmentée Forme de la grammaire : on suppose que l axiome S n apparaît pas à droite des règles que la fin des phrases est facilement reconnaissable Si ce n est pas le cas, on augmente la grammaire Definition (grammaire augmentée) G = (V T, V N, S, P ) est la grammaire augmentée de G = (V T, V N, S, P) où : V T = V T {$} V N = V N {S } P = P {S S $} ajout symbole de fin nouvel axiome règle pour le nouvel axiome 7 / 34 Exemple de grammaire augmentée 0 : S S $ 1 : S X Y 2 : X a X 3 : X c 4 : Y b 8 / 34

Items non-contextuels L AINC est basé sur la notion d item (non-contextuel) (INC) qui représente un corps de règle partiellement reconnu. Definition (item non-contextuel (INC)) Si A αβ est une production d une grammaire G alors [A α β] est un INC. α est l histoire de l item : ce qui a été reconnu β est le futur de l item : ce qui reste à reconnaître pour avoir reconnu un A [A α ] est un item complet I G est l ensemble des INC de G Exemple :...... 9 / 34 Les items comme états de l automate des items Deux items particuliers : l item [S S$] correspond au début de l analyse rien de reconnu l item [S S $] correspond à la fin de l analyse une phrase S complète a été reconnue Ce qu on en déduit : ces items représentent l état initial et l état final les états de l AINC sont des INC (items)! l AINC va manipuler des piles d items! 10 / 34

Automate des items non-contextuels Definition Soit G = (V T, V N, S, P), et sa grammaire augmentée G, on appelle automate des items non-contextuels l automate à pile M G = (V T, I G, δ, [S S$], {[S S $]}) où δ est l ensemble des transitions d un des trois types suivants : (E)xpansion : futur : Y γ αγ pour tout (Y α) P, indéterministe δ([x β Y γ], ɛ) = [Y α][x βy γ] (L)ecture (ou (D)écalage) : δ([x β aγ], a) = [X βa γ] histoire : β βa déterministe (R)éduction : histoire : βα βy δ([y α ][X βy γ], ɛ) = [X βy γ] déterministe 11 / 34 Analogie Analogie avec l exécution d un programme procédural : production définition de procédure pile d items pile d appels compteur ordinal expansion appel de procédure Y de corps α lecture exécution d une instruction a réduction retour de procédure Y Indéterminisme si plusieurs productions α pour un même non-terminal Y plusieurs définitions d une même procédure 12 / 34

Arbre de dérivation Construction possible de l arbre de dérivation pendant l exécution de l automate pendant le processus de reconnaissance du mot L arbre «pousse» avec les expansions : Expansion :...... Lecture :...... Réduction :...... 13 / 34 Exemple : grammaire et automate des items...... 14 / 34

Exemple : Analyse d un mot avec l AINC...... 15 / 34 Correction de l automate des items Theorem (préservation de la sémantique) L automate des INC M G accepte un mot m ssi la grammaire G engendre m. L(M G ) = L(G) 16 / 34

Efficacité de l automate des items Cet automate a deux inconvénients : 1. indéterminisme des expansions 2. complexité des piles d items Des analyseurs plus efficaces peuvent être obtenus en imposant des restrictions aux transitions restrictions au niveau des grammaires et des langages perte de complétude par rapport aux langages de type 2 Remarque On recherche un compromis entre efficacité de l analyse et expressivité de la famille d analyseurs. 17 / 34 Analyse syntaxique descendante Le principe de l analyse descendante est de construire l arbre de dérivation 1. en partant de la racine et 2. de la gauche vers la droite Plutôt que de procéder par essai-erreur, on va tenter de prédire la structure de l arbre en fonction des symboles terminaux lus En terme d automate des items, le parti pris est de ne regarder que le futur des items, qui correspond aux parties de l arbre restant à construire 18 / 34

Simplification de l automate des items On va donc «oublier» l histoire et la tête des items non-contextuels dans la relation de transition δ : [X α β] [β] Expansion : δ([y γ], ɛ) = [α][γ], pour tout (Y α) P Lecture : δ([aγ], a) = [γ] Réduction : δ([][γ], ɛ) = [γ] 19 / 34 Simplification de l automate des items Dans chaque transition, on regarde au plus un symbole de l item en somme de pile. on peut oublier les [ ] délimitant les items une pile de symboles suffit au lieu d une pile de séquences de symboles (items) Transitions simplifiées, sur piles de symboles (V T V N ) : transition d un ancien futur vers un nouveau futur Expansion : δ(y γ, ɛ) = αγ, pour tout (Y α) P Lecture : δ(aγ, a) = γ Réduction : δ(γ, ɛ) = γ On s est ramené à un automate plus simple : analyse par expansion-lecture (plus de réduction) inutile une pile de symboles (le futur) état = symbole! 20 / 34

Exemple d analyse descendante Avec le même exemple que précédemment :...... 21 / 34 Déterminisation de l automate des items Problème On a simplifié l automate, mais il reste le même indéterminisme sur les expansions choix de la production Y α pour un Y donné choix des productions 2 ou 3 pour expansions de X Solution On va autoriser la transition d expansion à consulter les premiers symboles de ce qui reste à lire Dans l exemple, un seul symbole suffit : si c est un a, alors 2 : X a X si c est un c, alors 3 : X c On dit que la grammaire est LL(1) 22 / 34

Grammaires et langages LL(k) Definition (grammaire LL(k)) Une grammaire est LL(k) si la lecture de au plus k symboles permet toujours de choisir la bonne production à expanser L = left-to-right scan lecture de gauche à droite L = leftmost derivation expansions du NT le plus à gauche Definition (langage LL(k)) Un langage est LL(k) s il est engendré par une grammaire LL(k). 23 / 34 Grammaires et langages LL(k) Certaines grammaires (et langages) hors-contexte ne sont LL(k) pour aucun k exemple : 1. S Decl-fonction Decl-procedure 2. Decl-fonction En-tete Corps-avec-return 3. Decl-procedure En-tete Corps-sans-return Le return d une fonction peut se trouver à une distance arbitraire du début de la déclaration, selon la taille du corps Le choix d une analyse descendante déterministe impose donc des restrictions sur les langages (et leurs grammaires) que l on peut analyser 24 / 34

Grammaires et langages LL(k) 1. Si un langage n est pas LL(K), on peut le modifier : S fun Decl-fonction proc Decl-procedure 2. Si une grammaire G n est pas LL(k), mais que le langage L(G) l est, on peut modifier la grammaire pour la rendre LL(k) sans modifier le langage engendré Remarque L objet du TD1 sera de décider si une grammaire est LL(1), et si non, de la rendre LL(1) lorsque c est possible (langage LL(1)). 25 / 34 Récursivité gauche L analyse descendante s accomode mal des récursivités gauches car elles entrainent des boucles sans fin dans l analyse. exemple :...... 26 / 34

Récursivité gauche Cependant, il est toujours possible de transformer un récursivité gauche en une récursivité droite : avant : X Xβ α après : X αx et X βx ɛ X αβ... β 27 / 34 Compilateurs d analyseurs descendants Les outils suivants prennent en entrée la description d une grammaire et produisent un analyseur descendant (avec certaines restrictions) : ANTLR (Java, C, C++,...) : grammaires LL(k) stream parsers (OCaml) : grammaires LL(1) JavaCC (Java) : grammaires LL(k) DCG (Prolog) : grammaires LL(*) mais indéterministe DM et TP DM et TP 28 / 34

Analyse syntaxique ascendante Le principe de l analyse ascendante est de construire l arbre de dérivation en partant des feuilles de la gauche vers la droite En terme d automate des items, le parti pris est de ne regarder que l histoire des items, qui correspond aux parties de l arbre déjà construites L idée est de reconnaitre des corps de règle et de les remplacer par la tête de règle 29 / 34 Simplification de l automate des items On oublie la tête et le futur des items dans la relation de transition δ : [X α β] [α] Expansion : δ([β], ɛ) = [][β] Lecture : δ([β], a) = [βa] Réduction : δ([α][β], ɛ) = [βy ] si (Y α) P On «inverse» les piles d items (fond de pile à gauche) et on les «applatit» en piles de symboles : Expansion : δ(β, ɛ) = β Lecture : δ(β, a) = βa Réduction : δ(βα, ɛ) = βy si (Y α) P inutile 30 / 34

Déterminisme de l analyse ascendante Plus d indéterminisme sur les expansions, mais possiblement sur les réductions s il existe une règle de la forme Z α (même corps) une transition de lecture est toujours possible (conflit avec réduction?) 31 / 34 Exemple d analyse ascendante...... 32 / 34

Plan [0] Analyse syntaxique Résumé cours précédent Automate des items non-contextuels Analyse syntaxique descendante Analyse syntaxique ascendante sujet DM 33 / 34 Devoir à la Maison (DM) - préparation TP Objectifs découverte de l outil choisi : ANTLR/OCaml application des concepts vus en cours préparation aux TPs travail par binôme, note de CC Rapport de 4 pages, pour le CM du 29 septembre documents lus installation et utilisation de ANTLR/OCaml exemple de l évaluateur d expression augmenter cet exemple avec division : même priorité que multiplication puissance : priorité supérieure à la multiplication et associativité à droite résultats d expériences 34 / 34