Notes. Analyse syntaxique ascendante. Notes. Notes. Exemple. Notes. Exemple. F. De Comité. 16 mai 2011

Documents pareils
Théorie des Langages

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

Compilation. Algorithmes d'analyse syntaxique

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

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Initiation à l algorithmique

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Baladeur Santé VITAL'ACT

Description pas à pas des différents processus d installation, configuration, saisie des résultats et export des données.

Génie Logiciel avec Ada. 4 février 2013

Algorithme. Table des matières

Utilisation des tableaux sémantiques dans les logiques de description

Rappels sur les suites - Algorithme

Plus petit, plus grand, ranger et comparer

Cours de Mécanique du point matériel

BAREME sur 40 points. Informatique - session 2 - Master de psychologie 2006/2007

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

NOEUD HERRINGBONE-PINEAPPLE STANDARD TYPE and PASS

Calculs de probabilités avec la loi normale

1 Introduction C+ + Algorithm e. languag. Algorigramm. machine binaire. 1-1 Chaîne de développement. Séance n 4

STAGE IREM 0- Premiers pas en Python

Algorithmique et Programmation, IMA

Intelligence Artificielle Planification

TP1 - Prise en main de l environnement Unix.

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

Initiation à LabView : Les exemples d applications :

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

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

Mise à jour: 29 janvier Instructions Paiement en ligne

Correction du baccalauréat ES/L Métropole 20 juin 2014

Grammaires d unification

LE PLAISIR D APPRENDRE POUR APPRENDRE

Initiation à la Programmation en Logique avec SISCtus Prolog

Cours de Master Recherche

ZOTERO Un outil gratuit de gestion de bibliographies

= constante et cette constante est a.

Systèmes décisionnels et programmation avancée

1.1 Rappels sur le produit cartésien Relations Graphes dirigés Arbres Exercices Motivation...

Encryptions, compression et partitionnement des données

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

L informatique en BCPST

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Utiliser Dev-C++ .1Installation de Dev-C++ Table des matières

MANUEL DE PROCÉDURE POUR LA MISE À JOUR DU SITE DE FIDAFRIQUE. Documentation utilisateur Octobre 2005

TP1 : Initiation à l algorithmique (1 séance)

Equipe EPS 68 L athlétisme à l école primaire Page 56 sur 109

Filtres maîtres et distribués ADSL

Rappels Entrées -Sorties

Fiche PanaMaths Calculs avec les fonctions sous Xcas

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Continuité et dérivabilité d une fonction

Chapitre 1 Qu est-ce qu une expression régulière?

MANUEL UTILISATEUR BALADEUR SANTÉ AUXILIAIRES MÉDICAUX ET SAGES-FEMMES C.D.C 1.40

Vers l'ordinateur quantique

Feuille couverture de tâche du cadre du CLAO

Monopoint / Kit applique serrure EL Série 9560

Présentation du langage et premières fonctions

Licence Sciences et Technologies Examen janvier 2010

Cours 1 : Qu est-ce que la programmation?

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

Extended Communication Server 4.1 : VoIP-SIP- Guide Utilisateur

Niveau 1. Atelier d'initiation à l'ordinateur ... Fondation de la Bibliothèque Memphrémagog inc. Magog (Québec) J1X 2E7 Tél.

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

LE PROCESSUS ( la machine) la fonction f. ( On lit : «fonction f qui à x associe f (x)» )

Organigramme / Algorigramme Dossier élève 1 SI

SOCIETE NATIONALE DES CHEMINS DE FER BELGES SPECIFICATION TECHNIQUE

Logique. Plan du chapitre

Algorithmique avec Algobox

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

Correction des Travaux Pratiques Organiser son espace de travail

Automatisation de l administration système avec

Partie 1 : la construction du nombre chez l'enfant. Page 2. Partie 2 : Des jeux et des nombres Page 8

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Pourquoi utiliser des visuels et des logiciels de présentation?

Chapitre 1 : Introduction aux bases de données

Instructions de mise à jour pour V

Coûts, avantages et inconvénients des différents moyens de paiement

2. Pour accéder au Prêt numérique, écrivez dans la barre d adresse de votre navigateur Web.

APPLICATION POUR L ANALYSE DES BESOINS LINGUISTIQUES Guide de l utilisateur

Arbres binaires de recherche

OCL - Object Constraint Language

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Guide de configuration d'une classe

Maple: premiers calculs et premières applications

Le modèle standard, SPE (1/8)

Génie logiciel avec UML. Notions sur le langage UML adapté pour les cours du programme Techniques de l informatique

V- Manipulations de nombres en binaire

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Série D65/D75/D72 Afficheurs digitaux modulaires

FONCTION DE DEMANDE : REVENU ET PRIX

Chapitre 2. Eléments pour comprendre un énoncé

Raisonnement par récurrence Suites numériques

NAVIGATION SUR INTERNET EXPLORER

GUIDE DU NOUVEL UTILISATEUR

Les différents types de relation entre les tables

Note de cours. Introduction à Excel 2007

Transcription:

Analyse syntaxique ascendante. De Comité L3 Miage A C 16 mai 2011 Idée Reconstruire l arbre à partir des feuilles. Réduire une chaîne terminale w à l axiome de départ, par une suite de réductions successives de sous-chaînes en non-terminaux. * * * * E * * Grammaire de l exemple précédent expr expr + terme (1) expr terme (2) terme terme facteur (3) terme facteur (4) facteur (expr) (5) facteur (6)

Remarques Pourquoi avoir choisi de réduire à la troisième étape et pas? Une réduction est l inverse d une dérivation. La suite des réductions se lit de droite à gauche comme une dérivation. Repérer une partie droite de règle, et la remplacer par le non-terminal de la partie gauche. Problèmes Comment reconnaître une partie droite de règle? Que faire dans le cas où plusieurs règles sont applicables pour une même partie droite? Comment savoir si la chaîne consérée est une partie droite de règle, ou bien s il faut attendre d en avoir une plus longue correspondant à une autre règle? Proto-phrase Définition (Proto-phrase) Une proto-phrase est une chaîne, pouvant contenir des terminaux et des non-terminaux, obtenue par dérivations de l axiome. Définition (Proto-phrase droite) Une proto-phrase droite est une proto-phrase obtenue à partir de l axiome en n utilisant que des dérivations droites. Manche Définition Un manche est une sous-chaîne reconnue par une partie droite de règle, la réduction de cette sous-chaîne constituant une étape de la construction d une dérivation droite. Plus formellement Si S αaw αβw, alors A β, dans la position α, est un manche de αβw (remplacer β par A fournit une proto-phrase droite). Remarques Si αβw est une proto-phrase droite, alors w ne contient que des symbole terminaux. Si une grammaire est non ambiguë, alors toute proto-phrase droite a un manche et un seul.

Elagage des manches général Si w est une chaîne terminale engendrée par une grammaire donnée, soit la suite de dérivations droites : S γ 0 γ 1 γ n 1 γ n = w Repérer le manche β n dans γ n Remplacer β n par A n (application de la règle A n β n ) Recommencer avec γ n 1 etc... On ne sait toujours pas comment repérer les manches Analyse syntaxique par décalage-réduction On utilise une pile qui mémorise les chaînes en attente (construction des manches). Le symbole $ marque à la fois la fin de chaîne à analyser w et le fond de la pile. On lit la chaîne à analyser de la gauche vers la droite. Au départ, la pile contient $, et on pointe sur le premier caractère de la chaîne w. En parcourant w de gauche à droite, on décale des symboles depuis w vers la pile, jusqu à ce qu on entifie un manche. Lorsque le manche est entifié, on le remplace sur la pile par la partie gauche de la règle. Pile Entrée Action $ 1 2 $ décaler $ 1 2 $ réduire par $ 2 $ réduire par $ 2 $ décaler $ 2 $ décaler $ 2 $ réduire par $ $ réduire par $ $ réduire par E $E $ accepter Actions possibles Liste des actions 1 Décaler : prendre le symbole en cours de lecture et le mettre au sommet de la pile. 2 Réduire : trouver le manche (forcément en sommet de pile), et le remplacer par la partie gauche de la règle correspondante. 3 Accepter : annoncer le succès de l analyse syntaxique (la pile contient l axiome, et il n y a plus de symbole en entrée). 4 Erreur : quand aucune des trois actions précédentes ne s applique.

Une propriété intéressante Le manche apparaît toujours en sommet de pile, et jamais à l intérieur. S S A B B A α β ɣ y z α ɣ x y z cas 1 cas 2 Une propriété intéressante Cas 1 S αaz αβbyz αβγyz Pile Entrée Action $αβγ yz$ réduire γ $αβb yz$ décaler y (qui ne contient pas de non-terminaux) $αβby z$ réduire βγy $αa z$... une propriété intéressante Cas 2 Pile Entrée Action $αγ xyz$ réduire γ $αb xyz$ décaler $αbxy z$ réduire y $αbxa z$... Le manche est toujours au sommet de la pile...... mais on ne sait toujours pas comment l entifier simplement. Restrictions L analyse syntaxique par décalage/réduction ne marche pas pour toutes les grammaires. On peut se retrouver dans une situation où on ne sait pas s il faut réduire ou décaler : conflit décalage/réduction.... ou dans une situation où on ne sait pas quelle réduction appliquer : conflit réduction/réduction.

Définitions Définition (Grammaires LR(1)) Grammaires pour lesquelles on peut régler les conflits en connaissant le symbole courant en entrée. Lecture de la chaîne de gauche à droite : Left to right Construction d une dérivation droite : Rightmost derivation Un caractère en pré-vision permet de régler d éventuels conflits. Définition (Grammaires LR(k)) Grammaires pour lesquelles on peut régler les conflits en connaissant les k prochains symboles en entrée. De bonnes grammaires Remarques Une grammaire ambiguë n est pas LR(k). Il existe des grammaires non ambiguës qui ne sont pas LR(k). La plupart des grammaires des langages de programmation sont LR(1). Dans le cas des grammaires ambiguës, on peut parfois guer l analyse en indiquant comment régler le conflit. Construire des analyseurs syntaxiques ascendants Propriétés des analyseurs LR Analyseurs gués par des tables (comme les LL) Doivent pouvoir repérer les manches dans une pile. Analyse sans retour en arrière. Plus puissants que les analyseurs LL. Difficiles à construire à la main...... mais il existe des algorithmes pour les construire! Les items et l automate LR(0) Un analyseur par décalage-réduction mémorise où il en est de l analyse syntaxique. Pour cela, il utilise des items. Un item est une règle de production de la grammaire, où on a intercalé un point dans sa partie droite, indiquant où on est de l analyse de cette règle. Si A XYZ est une règle de G, alors les items correspondants sont : A.XYZ A X.YZ A XY.Z A XYZ.

Les items Les items A.XYZ : on commence l analyse de la règle, et on espère trouver une chaîne correspondant à une dérivation de XYZ A X.YZ : on a déjà entifié une sous-chaîne dérivant de X, on recherche une dérivation correspondant à YZ A XYZ. : on a trouvé une chaîne correspondant à l application de cette règle. La règle A ɛ n engendre qu un item : A. L automate LR(0) Construction de l automate Construire des ensembles d items : fonction ermeture(). Relier ces ensembles par des transitions : fonction Aller A() Définition (ermeture(i)) Si A α.bβ est dans ermeture(i), et si B γ est une production, alors ajouter l item B.γ dans ermeture(i). Définition (Aller A(I,X)) Aller A(I,X) est la ermeture de l ensemble des items de la forme A αx.β tels que A α.x β est dans I. La fonction Aller A définit les transitions entre les ensembles d items, qui sont les états de l automate. Exercice / illustration Construction de l automate LR(0) pour la grammaire des expressions expr expr + terme expr terme terme terme facteur terme facteur facteur (expr) facteur Utilisation de l automate LR(0) Utiliser l automate des items. Etat initial : ermeture([s.s]) Curseur sur le caractère courant de la chaîne terminale (a). S il existe une flèche étiquetée par a, décaler (empiler l état, bouger le curseur). Sinon, réduire (appliquer la règle, dépiler n symboles, changer d état). Illustration Dérouler

Construction des tables d analyse L algorithme doit être formalisé pour pouvoir être programmé : on utilise des tables d analyse, comme pour les grammaires LL. Les actions et transitions se déduisent facilement de l automate. Actions Si on est dans l état i correspondant à [A α.aβ], et qu il existe une transition étiquetée a sortant de cet état, alors Action(i, a) = décaler j, où j est le numéro de l état où mène cette transition. Si on est dans l état i correspondant à [A α.], alors Action(i, a) = réduire A α pour tout a dans Suivant(A), sauf S Si l état est [S S.], alors Action(i, $) = accepter