Théorie des langages Grammaires Hors-Contexte

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

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

Corrigé des TD 1 à 5

Organigramme / Algorigramme Dossier élève 1 SI

Examen Médian - 1 heure 30

Représentation d un entier en base b

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)

Enseignement secondaire technique

Recherche dans un tableau

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

Compilation (INF 564)

Informatique Théorique : Théorie des Langages, Analyse Lexicale, Analyse Syntaxique Jean-Pierre Jouannaud Professeur

LES TYPES DE DONNÉES DU LANGAGE PASCAL

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Introduction à l étude des Corps Finis

Cours d algorithmique pour la classe de 2nde

= constante et cette constante est a.

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

Cours de Programmation 2

Les BRMS Business Rules Management System. Groupe GENITECH

Gestion mémoire et Représentation intermédiaire

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

Programmation linéaire

Théorie des Langages

EES : Engineering Equation Solver Fiche récapitulative - Marie-Sophie Cabot

Exercices - Polynômes : corrigé. Opérations sur les polynômes

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

Algorithmique et Programmation, IMA

Continuité et dérivabilité d une fonction

Théorie de la Programmation

Rappels sur les suites - Algorithme

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

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.

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

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Arbres binaires de recherche

Initiation à l algorithmique

MIS 102 Initiation à l Informatique

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Les structures de données. Rajae El Ouazzani

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

DOCM Solutions officielles = n 2 10.

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Le langage SQL Rappels

Résolution de systèmes linéaires par des méthodes directes

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Année 2014/ er septembre Version de Anca Muscholl, issue du poly de Marc Zeitoun. 1/143

Calculabilité Cours 3 : Problèmes non-calculables.

Préparation à l examen EFA en Macro

1. Structure d'un programme FORTRAN 95

Fondements de l informatique Logique, modèles, et calculs

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

Polynômes à plusieurs variables. Résultant

Propagation sur réseau statique et dynamique

Java Licence Professionnelle CISII,

Présentation du langage et premières fonctions

Algèbre binaire et Circuits logiques ( )

Évaluation et implémentation des langages

CHAPITRE 9. Codes source. 9.1 Insertion brute

Université Paris-Dauphine DUMI2E 1ère année, Applications

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

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

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Algorithmes et programmation en Pascal. Cours

Compression Compression par dictionnaires

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

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

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Formula Negator, Outil de négation de formule.

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Probabilités sur un univers fini

Cours Informatique Master STEP

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

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Sécurité par compression! ReSIST Gilles RICHARD IRIT

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

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Quelques Algorithmes simples

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

Algorithmique et programmation : les bases (VBA) Corrigé

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

TP 1. Prise en main du langage Python

Simulation de variables aléatoires

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL


Chapitre 7. Récurrences

Cours 1 : La compilation

Chapitre 5 : Flot maximal dans un graphe

Algorithme. Table des matières

Logiciel Libre Cours 2 Fondements: Programmation

Introduction à MATLAB R

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Transcription:

Théorie des langages Grammaires Hors-Contexte Elise Bonzon http://web.mi.parisdescartes.fr/ bonzon/ elise.bonzon@parisdescartes.fr 1 / 31

Grammaires Hors-Contexte 1 Définitions 2 Grammaires réduites 3 Grammaires propres 4 Formes normales 2 / 31

Définitions Grammaires Hors-Contexte 1 Définitions 2 Grammaires réduites 3 Grammaires propres 4 Formes normales 3 / 31

Définitions Grammaire Hors-Contexte Grammaire Hors-Contexte ou algébrique Une grammaire G = V, Σ, P, S est hors-contexte (ou algébrique) si V est un alphabet Σ V est l ensemble des symboles terminaux V \ Σ est l ensemble des symboles non terminaux S V \ Σ est le symbole de départ P ((V \ Σ) V ) est l ensemble (fini) de règles de production 4 / 31

Définitions Grammaire Hors-Contexte Grammaire Hors-Contexte ou algébrique Une grammaire G = V, Σ, P, S est hors-contexte (ou algébrique) si V est un alphabet Σ V est l ensemble des symboles terminaux V \ Σ est l ensemble des symboles non terminaux S V \ Σ est le symbole de départ P ((V \ Σ) V ) est l ensemble (fini) de règles de production Langage algébrique Un langage L est algébrique s il existe une grammaire algébrique telle que L(G) = L 4 / 31

Définitions Grammaire Hors-Contexte Conséquence : Tout langage rationnel est algébrique. ATTENTION: la réciproque est fausse Un langage algébrique non rationnel n est pas reconnu par un automate fini n est pas décrit par une expression régulière il n existe pas de grammaire régulière pour l engendrer. 5 / 31

Définitions Rappel : hierarchie de Chomsky Type 0 Pas de restriction Type 1 Grammaires contextuelles (ou sensibles au contrôle) (Context-sensitive) α β, α β, α V + Type 2 Grammaires hors-contexte (Context-Free) A β Type 3 Grammaires régulières (ou linéaires à droite) A wb A, B V \ Σ non terminaux A w w Σ terminaux 6 / 31

Définitions Rappel : hierarchie de Chomsky T3 Réguliers Automate fini T2 Context Free Automate à pile T1 Context sensitive Machine de Turing T0 7 / 31

Définitions Grammaire hors contexte : exemple Soit G = V, Σ, P, S avec Σ = {a, b} V \ Σ = {S} Axiome S 3 règles de production : S asb S ɛ L(G) = {a n b n n 0} 8 / 31

Définitions Grammaire hors contexte : langage PASCAL instruction ɛ variable := expression begin liste-instructions end if expression then instruction if expression then instruction else instruction case expression of liste-case end while expression do instruction repeat instruction until expression for varid := liste-pour do instruction identificateur-procedure identificateur-procedure(liste-expressions) goto etiquette with liste-variables-record do instruction etiquette : instruction 9 / 31

Définitions Grammaire hors contexte : langage PASCAL instruction ɛ variable := expression begin liste-instructions end if expression then instruction if expression then instruction else instruction case expression of liste-case end while expression do instruction repeat instruction until expression for varid := liste-pour do instruction identificateur-procedure identificateur-procedure(liste-expressions) goto etiquette with liste-variables-record do instruction etiquette : instruction Symboles terminaux : begin, if, then, else, end, case, of, while... Les variables (ou symboles non terminaux) sont définies dans d autres règles Grammaire Pascal : plus de 300 règles 9 / 31

Définitions Analyse syntaxique Les langages de programmation sont des langages algébriques. Ils sont spécifiés par des grammaires algébriques Dans sa phase d analyse syntaxique, un compilateur teste si un programme est bien un élément du langage de programmation dans lequel il est écrit. Pour un programme donné, le compilateur essaie de reconstituer l arbre de dérivation (ou arbre syntaxique) de bas en haut en procédant par réductions successives : on parle alors d analyse ascendante. A l issue de cette phase, on sait si notre programme est syntaxiquement correct ou pas 10 / 31

Grammaires réduites Grammaires Hors-Contexte 1 Définitions 2 Grammaires réduites 3 Grammaires propres 4 Formes normales 11 / 31

Grammaires réduites Grammaires réduites Symbole non terminal utile Soit G = V, Σ, P, S. Un symbole non terminal X V \ Σ est Productif si L G (X ) Accessible s il existe des mots α, β tels que S G αx β Utile s il est productif, qu il existe des mots α, β tels que S αx β G et tels que α et β ne contiennent que des symboles non terminaux productifs. 12 / 31

Grammaires réduites Grammaires réduites Symbole non terminal utile Soit G = V, Σ, P, S. Un symbole non terminal X V \ Σ est Productif si L G (X ) Accessible s il existe des mots α, β tels que S G αx β Utile s il est productif, qu il existe des mots α, β tels que S αx β G et tels que α et β ne contiennent que des symboles non terminaux productifs. Grammaire réduite Une grammaire est réduite si tous ses symboles non terminaux sont utiles. 12 / 31

Grammaires réduites Grammaires réduites Symbole non terminal utile Soit G = V, Σ, P, S. Un symbole non terminal X V \ Σ est Productif si L G (X ) Accessible s il existe des mots α, β tels que S G αx β Utile s il est productif, qu il existe des mots α, β tels que S αx β G et tels que α et β ne contiennent que des symboles non terminaux productifs. Grammaire réduite Une grammaire est réduite si tous ses symboles non terminaux sont utiles. En supprimant les variables inutiles dans une grammaire, on ne change pas le langage engendré sauf si l axiome lui-même est inutile, c est-à-dire si la grammaire engendre le langage vide. 12 / 31

Grammaires réduites Algorithme de calcul des symboles non terminaux productifs 1. Calculer l ensemble V 0 des symboles non terminaux X pour lesquels il existe une règle X α, α Σ 2. Calculer l ensemble V i+1 formé de V i et des symboles non terminaux X pour lesquels il existe une règle X α, α (Σ V i ) 3. Arrêter lorsque V i+1 = V i. Cet ensemble est l ensemble des symboles non terminaux productifs. 13 / 31

Grammaires réduites Algorithme de calcul des symboles non terminaux accessibles 1. Poser W 0 = {S} 2. Calculer l ensemble W i+1 formé de W i et des symboles non terminaux X pour lesquels il existe une règle Y αx β, avec Y W i 3. Arrêter lorsque W i+1 = W i. Cet ensemble est l ensemble des symboles non terminaux accessibles. 14 / 31

Grammaires réduites Algorithme de réduction d une grammaire 1. Déterminer l ensemble des symboles non terminaux productifs 2. Supprimer les symboles non terminaux non productifs, ainsi que les règles dans lesquels ils figurent 3. Si l axiome S est improductif, la grammaire réduite a pour seul symbole non terminal S, et un ensemble de règles vide 4. Si l axiome S est productif, déterminer tous les symboles non terminaux accessibles à partir de S. Ceci permet d obtenir l ensemble des symboles non terminaux utiles. 5. Supprimer tous les autres symboles non terminaux, ainsi que les règles dans lesquelles ils figurent. La grammaire ainsi obtenue est réduite. 15 / 31

Grammaires réduites Algorithme de réduction d une grammaire : exemple On considère la grammaire ayant les règles suivantes : S a X X XY Y b Symboles non terminaux productifs : {S, Y }. X est donc improductif, on peut le supprimer On obtient la grammaire S a Y b L ensemble des symboles non terminaux accessibles est {S}. On supprime Y S a La grammaire est réduite. 16 / 31

Grammaires réduites Algorithme de réduction d une grammaire : exemple 2 On considère la grammaire ayant les règles suivantes : S XYZW X cx Y ab Z cya WSW W ɛ Symboles non terminaux productifs : {Y, Z, W }. S est donc improductif. La grammaire réduite a donc pour seul symbole non terminal S, et un ensemble de règles vide 17 / 31

Grammaires propres Grammaires Hors-Contexte 1 Définitions 2 Grammaires réduites 3 Grammaires propres 4 Formes normales 18 / 31

Grammaires propres Grammaires propres Une grammaire propre ne contient : Pas de règle unitaire (ou renommage): G ne contient pas de production de la forme A B, avec A, B V \ Σ (symboles non terminaux) Pas de ɛ-règle : G ne contient pas de règle du type A ɛ 19 / 31

Grammaires propres Grammaires propres Théorème Tout langage algébrique L = L \ {ɛ} peut être engendré par une grammaire propre. 20 / 31

Grammaires propres Grammaires propres Théorème Tout langage algébrique L = L \ {ɛ} peut être engendré par une grammaire propre. Un symbole non terminal X est annulable si X ɛ X est annulable si : Il existe une règle X ɛ, ou Il existe une règle X Y 1... Y n, avec Y 1,..., Y n des symboles non terminaux annulables 20 / 31

Grammaires propres Algorithme de calcul des symboles non terminaux annulables 1. Calculer l ensemble N 0 des symboles non terminaux X telles qu il existe une règle X ɛ 2. Calculer l ensemble N i+1 formé de N i et des symboles non terminaux X telles qu il existe une règle X α avec α N i 3. Arrêter lorsque N i+1 = N i. Cet ensemble est l ensemble des symboles non terminaux annulables. 21 / 31

Grammaires propres Algorithme d élimination des ɛ-règles 1. Calculer l ensemble N des symboles non terminaux annulables 2. Remplacer chaque règle X α par toutes les règles obtenues en remplaçant, de toutes les façons possibles, les occurrences de symboles non terminaux annulables par le mot vide. S il y a n occurrences de symboles non terminaux annulables dans α, cela donne 2 n règles. 3. Supprimer les ɛ-règles. La grammaire obtenue est équivalente à la grammaire de départ au mot vide près, et est sans ɛ-règle. 22 / 31

Grammaires propres Algorithme d élimination des ɛ-règles : exemple On considère la grammaire ayant les règles suivantes : S asbs ɛ Remplacer le symbole non terminal S par le mot vide de toutes les façons possibles dans asbs donne les 4 mots asbs, abs, asb et ab La grammaire propre obtenue est S asbs abs asb ab 23 / 31

Grammaires propres Algorithme d élimination des ɛ-règles : exemple 2 On considère la grammaire ayant les règles suivantes : S asb SS ɛ La première règle donne S asb et S ab La seconde règle donne S SS La règle S S générée deux fois par notre algorithme est inutile La grammaire propre obtenue est S asb ab SS 24 / 31

Grammaires propres Algorithme d élimination des règles unitaires 1. Calculer la relation définie par X Y ssi X Y 2. Calculer la relation définie par X Y ssi X Y et Y X 3. Choisir un symbole non terminal par classe d équivalence, et remplacer toutes les occurrences de toutes les symboles non terminaux équivalents par ce représentant. Supprimer toutes les règles unitaires entre symboles non terminaux équivalents. 4. En commançant par les symboles non terminaux qui sont minimaux dans l ordre, remplacer les règles unitaires X Y par toutes les règles X α, pour tous les α tels que Y α. La grammaire obtenue est sans règles unitaires. 25 / 31

Grammaires propres Algorithme d élimination des règlesunitaires : exemple On considère la grammaire des expressions arithmétiques ayant les règles suivantes : E E + T T T T F F F (E) a b c Il y a deux règles unitaires : E T et T F L ordre obtenu est E > T > F On considère les symboles non terminaux en commançant par celles qui sont minimales dans On substitue à T F les règles T (E) a b c On substitue à E T les règles E T F (E) a b c On obtient : E E + T T F (E) a b c T T F (E) a b c F (E) a b c 26 / 31

Formes normales Grammaires Hors-Contexte 1 Définitions 2 Grammaires réduites 3 Grammaires propres 4 Formes normales 27 / 31

Formes normales Forme normale de Chomsky Forme normale de Chomsky Une grammaire algébrique G = V, Σ, P, S est sous la forme normale de Chomsky si toute production est de la forme : avec A, B, C V \ Σ, et a Σ A a A BC Intérêt de la forme normale de Chomsky: Les arbres d analyse correspondants seront des arbres binaires Disposer d une forme normale pour les grammaires permet de simplifier les développements de certaines preuves 28 / 31

Formes normales Algorithme de mise en forme normale de Chomsky On part d une grammaire propre. 1. On introduit un nouvel ensemble de symboles non terminaux Z = {Z a a Σ} 2. On ajoute les règles Z a a pour tout a Σ 3. Toute règle X α où α est de longueur 1 est conservée Note puisque la grammaire est propre, α est un symbole non terminal 4. Toute règle X α où α 2 est transformée en 2 étapes : i) Tout symbole terminal a dans α est remplacé par le symbole non terminal Z a ii) Si α > 2, soit α = Y 1... Y p. On introduit p 2 nouveaux symboles non terminaux T 1,..., T p 2 et on remplace la règle X Y 1... Y p par les p 1 règles X Y 1 T 1, T 1 Y 2 T 2,..., T p 3 Y p 2 T p 2, T p 2 Y p 1 Y p La grammaire obtenue est en forme normale de Chomsky 29 / 31

Formes normales Algorithme de mise en forme normale de Chomsky : exemple On considère la grammaire propre ayant les règles suivantes : S asbs abs asb ab On introduit d abord deux nouveaux symboles non terminaux Z a et Z b, et on remplace les symboles terminaux. La grammaire devient S Z asz b S Z az b S Z asz b Z az b ; Z a a; Z b b On considère à présent les règles suivantes : S Z asz b S, que l on transforme en S Z at 1 ; T 1 ST 2 ; T 2 Z b S S Z az b S, que l on transforme en S Z at 2 ; T 2 Z b S S Z asz b, que l on transforme en S Z at 3 ; T 3 SZ b La grammaire devient sous forme normale de Chomsky : S Z at 1 Z at 2 Z at 3 Z az b T 1 ST 2; T 2 Z b S; T 3 SZ b Z a a; Z b b 30 / 31

Formes normales Forme normale de Greibach Forme normale de Greibach Une grammaire algébrique G = V, Σ, P, S est sous la forme normale de Greibach si toute production est de la forme : avec A, A i V \ Σ, et a Σ A aa 1... A n A a Intérêt de la forme normale de Greibach: A chaque dérivation, on détermine un préfixe de plus en plus long formé uniquement de symboles non terminaux Permet de construire plus aisément des analyseurs permettant de retrouver l arbre d analyse associé à un mot généré 31 / 31