Théorie des Langages



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

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

TP1 - Prise en main de l environnement Unix.

Les structures de données. Rajae El Ouazzani

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

Initiation à la Programmation en Logique avec SISCtus Prolog

Compilation. Algorithmes d'analyse syntaxique

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

Formula Negator, Outil de négation de formule.

Chapitre 1 I:\ Soyez courageux!

SOMMAIRE. Travailler avec les requêtes... 3

Les algorithmes de base du graphisme

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

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

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

Introduction à MATLAB R

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

Algorithmique et Programmation

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

Intelligence Artificielle et Systèmes Multi-Agents. Badr Benmammar

STAGE IREM 0- Premiers pas en Python

Programmation assembleur : aperçu

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

TP 1 Prise en main de l environnement Unix

Utilisation des tableaux sémantiques dans les logiques de description

Chapitre 2 Le problème de l unicité des solutions

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Systèmes déductifs DEA D INFORMATIQUE UNIVERSITÉ BORDEAUX 1. Systèmes déductifs (Retoré) Plan Début Fin Préc. Suiv.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Chapitre 5 : Flot maximal dans un graphe

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

Définitions. Numéro à préciser. (Durée : )

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

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

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

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

Algorithmes récursifs

OCL - Object Constraint Language

Classes et Objets en Ocaml.

Initiation à l algorithmique

chapitre 4 Nombres de Catalan

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

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

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

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

Cours de Programmation 2

L ARBORESCENCE. Qu est-ce qu un dossier? L arborescence?

GUIDE DU NOUVEL UTILISATEUR

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Choisir le mode d envoi souhaité. Option 1 : Envoyer un SMS à un nombre réduit de numéros (0 10 )

Initiation. àl algorithmique et à la programmation. en C

Grammaires d unification

Your Detecting Connection. Manuel de l utilisateur. support@xchange2.net

Remise à niveau d un programme JAVA du domaine public

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Domaine Name Service ( DNS )

LE MODELE CONCEPTUEL DE DONNEES

SUPPORT DE COURS. Dr. Omari Mohammed Maître de Conférences Classe A Université d Adrar Courriel : omarinmt@gmail.com

par Denis-Charles Cisinski & Georges Maltsiniotis

Traduction des Langages : Le Compilateur Micro Java

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

Représentation d un entier en base b

Algorithmique, Structures de données et langage C

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

L informatique en BCPST

Corrigé du baccalauréat S Asie 21 juin 2010

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Rappels Entrées -Sorties

Structure d un programme

Manuel v. 6sV Simplement surfer. Simplement cliquer. Simplement bloguer.

Cours de Programmation en Langage Synchrone SIGNAL. Bernard HOUSSAIS IRISA. Équipe ESPRESSO

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

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)

Aide Webmail. L environnement de RoundCube est très intuitif et fonctionne comme la plupart des logiciels de messagerie traditionnels.

Apprentissage Automatique

Chap III : Les tableaux

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Évaluation et implémentation des langages

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

PROGRAMME DETAILLE. Parcours en première année en apprentissage. Travail personnel CC + ET réseaux

Les équations différentielles

Mathématiques Première L, ES, S, Concours Post-Bac Equations et inéquations du second degré FORMAV

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

La fonction exponentielle

Réalisabilité et extraction de programmes

introduction Chapitre 5 Récursivité Exemples mathématiques Fonction factorielle ø est un arbre (vide) Images récursives

Correction TD Algorithmique 5.3 Pile Liste 5.3 Pile

Le langage SQL Rappels

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Mesurer les performances (CPU) sous Linux

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

Correction du Baccalauréat S Amérique du Nord mai 2007

Les systèmes de gestion de version

Note de cours. Introduction à Excel 2007

ALGORITHMIQUE ET PROGRAMMATION En C

Arbres binaires de recherche

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

Comment utiliser RoundCube?

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Algorithmique et Programmation, IMA

Transcription:

Théorie des Langages Analyse syntaxique descendante Claude Moulin Université de Technologie de Compiègne Printemps 2010

Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1)

Exemple : Grammaire T = {+,,, /, (, ), nb} ; V = {E, E, T, T, F} ; Axiome : E ; P = { 1. E TE 3. E TE 5. T FT 7. T /FT 9. F (E) } 2. E +TE 4. E ɛ 6. T FT 8. T ɛ 10. F nb Cette grammaire permet d écrire des expressions telles : (nb + nb) (nb - nb) / nb

Exemple : arbre Expression : nb nb + nb E T E F T + T E nb F T F T ɛ nb ɛ nb ɛ

Principe E T E F T + T nb F nb T ɛ F nb Expression : nb nb + nb T ɛ E ɛ E nb E T E T nb T F T F nb F nb T T F T F nb F nb T + T ɛ E + E + T E T nb T F T F nb F nb T $ T ɛ E $ E ɛ

Probléme S A w a... a Le symbole à dériver est A. Le prochain caractère à lire est a. La chaîne à analyser est de la forme : wav. w est déjà lue. Il faut déterminer la règle dont la partie gauche est A à utiliser à ce moment de la dérivation. PREM(A) SUIV(A) A X 1 X 2... X n Les premiers symboles que peux générer A contiennent ceux que peut générer X 1 Si X 1 est nullifiable, c est X 2 qu il faut considérer.

Analyse des règles Si X 1 ne génère pas ɛ waβ = wx 1 X 2... X n β = wa 1 γ 1 X 2... X n β. Si X 1 génère ɛ et X 2 ne génère pas ɛ waβ = wx 1 X 2... X n β = wx 2... X n β = wa 2 γ 2 X 3... X n β. Si A = ɛ, waβ = wβ. Le caractère a qui doit décider de la règle à appliquer est : soit dans les premiers caractères que A génère soit dans ses possibles suivants (β).

Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1)

Premiers Les premiers se calculent sur les variables d une grammaire ainsi que sur les choix ou fin de choix. Un choix est une chaîne d éléments de V T figurant dans la partie droite d une règle de production. Une fin de choix α est une chaîne d au moins un élément de V T telle qu il existe X V T tel que Xα soit un choix ou une fin de choix.

Définition des Premiers Soit X V T. Définition PREM(X) est l ensemble des terminaux (y compris ɛ) qui peuvent commencer une chaîne dérivée de X. a PREM(X), si X = aβ. Soit α un choix ou une fin de choix. Définition PREM(α) est l ensemble des terminaux (y compris ɛ) qui peuvent commencer une chaîne dérivée de α. a PREM(α), si α = aβ

Initialisation a T, PREM(a) = {a}. A V, PREM(A) =. Pour tout choix ou fin de choix α non vide, PREM(α) =. PREM(ɛ) = ɛ.

Algorithme Pour chaque règle de production A α, ajouter les éléments de PREM(α) à ceux de PREM(A), y compris ɛ. Pour chaque choix ou fin de choix α de la forme Xβ, ajouter les éléments de PREM(X) à ceux de PREM(α), sauf ɛ. Lorsque PREM(X) contient ɛ, ajouter les éléments de PREM(β) à ceux de PREM(α) y compris ɛ. Répéter les phases précédentes tant que l un des PREM(α) est modifié.

Exemple T = {+,,, /, (, ), nb} ; V = {E, E, T, T, F} ; Axiome : E ; P = { 1. E TE 3. E TE 5. T FT 7. T /FT 9. F (E) } 2. E +TE 4. E ɛ 6. T FT 8. T ɛ 10. F nb

Choix particuliers +TE {+} -TE { } *FT { } /FT {/} (E) {(} L ensemble des premiers d un choix commençant par un terminal ne contient que ce terminal.

Construction 1. E TE 4. E ɛ 7. T /FT 2. E +TE 5. T FT 8. T ɛ E TE E T FT T F 3. E TE 6. T FT 9. F (E) 10. F nb

Construction 1. E TE 4. E ɛ 7. T /FT 2. E +TE 5. T FT 8. T ɛ 3. E TE 6. T FT 9. F (E) 10. F nb E TE E {+,, ɛ} règles 2, 3, 4 T FT {(, nb} à partir de F T {, /, ɛ} règles 6, 7, 8 F {(, nb} règles 9, 10

Construction 1. E TE 4. E ɛ 7. T /FT 2. E +TE 5. T FT 8. T ɛ 3. E TE 6. T FT 9. F (E) 10. F nb E TE {(, nb} à partir de T E {+,, ɛ} T {(, nb} règle 5 FT {(, nb} T {, /, ɛ} F {(, nb}

Construction 1. E TE 4. E ɛ 7. T /FT 2. E +TE 5. T FT 8. T ɛ 3. E TE 6. T FT 9. F (E) 10. F nb E {(, nb} règle 1 TE {(, nb} E {+,, ɛ} T {(, nb} FT {(, nb} T {, /, ɛ} F {(, nb}

Construction 1. E TE 4. E ɛ 7. T /FT 2. E +TE 5. T FT 8. T ɛ 3. E TE 6. T FT 9. F (E) 10. F nb E {(, nb} {(, nb} TE {(, nb} {(, nb} E {+,, ɛ} {+,, ɛ} T {(, nb} {(, nb} FT {(, nb} {(, nb} T {, /, ɛ} {, /, ɛ} F {(, nb} {(, nb}

Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1)

Suivants Les suivants sont définis pour tous les non terminaux d une grammaire. X V. Définition SUIV(X) est l ensemble des terminaux qui peuvent suivre immédiatement X lors d une dérivation. a SUIV(X) s il existe un choix contenant Xa. Si un choix contient XYa et si Y est nullifiable alors a est un suivant de X.

Algorithme Pour toute variable A, SUIV(A) =. Ajouter un marqueur de fin de chaîne à l axiome ($ par exemple). Pour chaque règle A αbβ, ajouter les éléments de PREM(β) à ceux de SUIV(B), sauf ɛ le cas échéant. lorsque ɛ PREM(β), ajouter les éléments de SUIV(A) aux éléments de SUIV(B). Pour chaque règle A αb, ajouter les éléments de SUIV(A) aux éléments de SUIV(B). Répéter les 2 phases précédentes tant que l un des SUIV(A) est modifié.

Exemple E TE E +TE E TE E ɛ T FT T FT T /FT T ɛ F (E) F nb E {(, nb} FT {(, nb} TE {(, nb} T {, /, ɛ} E {+,, ɛ} F {(, nb} T {(, nb} Init 1 2 SUIV(A) E {$, )} {$, )} E {$, )} {$, )} T {+,, $} {+,, $, )} {+,, $, )} T {+,, $} {+,, $, )} {+,, $, )} F {, /, +,, $} {, /, +,, $, )} {, /, +,, $, )}

Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1)

Table d analyse Une table d analyse est un tableau M à deux dimensions qui indique, pour chaque variable A et chaque terminal a (ainsi que $), la règle de production à appliquer. Algorithme de construction : Pour chaque production A α pour tout a PREM(α) et a ɛ ajouter A α dans la case M[A, a] si ɛ PREM(α), alors pour chaque b SUIV(A) ajouter A α dans la case M[A, b]

Exemple E TE E +TE E TE E ɛ T FT T FT T /FT T ɛ F (E) F nb E {(, nb} FT {(, nb} TE {(, nb} T {, /, ɛ} E {+,, ɛ} F {(, nb} T {(, nb} SUIV(A) E {$, )} T {+,, $, )} + - * / ( ) nb $ E 1 1 E 2 3 4 4 T 5 5 T 8 8 6 7 8 8 F 9 10

Automate P = (Q, Σ, Γ, δ, q 0, Z 0, F) : Q = {q} l ensemble des états. Σ = T l ensemble des symboles d entrée. Γ = T V l alphabet de pile. δ la fonction de transition. q 0 = q l état initial. Z 0 = $ le symbole de fond de la pile. on empile aussi le symbole S F = acceptation par pile vide.

Transition Match : (q, ax, aγ, y) (q, x, γ, y) Le symbole d entrée est le symbole de sommet de la pile. Il est consommé et le sommet de la pile est dépilé. Production : (q, bx, Aγ, y) (q, bx, αγ, yy i ) - Le sommet de la pile A. Règle : A α (M[A, b]). - A est remplacé au sommet de la pile par le choix de la règle, en empilant à partir des symboles les plus à droite. - En sortie le rang y i, de la règle utilisée, est ajouté. Acceptation : (q, $, $, y) (q, ɛ, ɛ, y)

Analyse de : 3 + 4 * 5 + - * / ( ) nb $ E 1 1 E 2 3 4 4 T 5 5 T 8 8 6 7 8 8 F 9 10 Entrée Pile Transition Sortie 3 + 4 * 5$ E$ Production 1 3 + 4 * 5$ TE $ Production 1, 5 3 + 4 * 5$ FT E $ Production 1, 5, 10 3 + 4 * 5$ nb T E $ Match 1, 5, 10

Analyse de : 3 + 4 * 5 + - * / ( ) nb $ E 1 1 E 2 3 4 4 T 5 5 T 8 8 6 7 8 8 F 9 10 Entrée Pile Transition Sortie + 4 * 5$ T E $ Production 1, 5, 10, 8 + 4 * 5$ E $ Production 1, 5, 10, 8, 2 + 4 * 5$ +TE $ Match 1, 5, 10, 8, 2

Analyse de : 3 + 4 * 5 + - * / ( ) nb $ E 1 1 E 2 3 4 4 T 5 5 T 8 8 6 7 8 8 F 9 10 Entrée Pile Transition Sortie 4 * 5$ TE $ Production 1, 5, 10, 8, 2, 5 4 * 5$ FT E $ Production 1, 5, 10, 8, 2, 5, 10 4 * 5$ nb T E $ Match 1, 5, 10, 8, 2, 5, 10 * 5$ T E $ Production 1, 5, 10, 8, 2, 5, 10, 6 * 5$ *FT E $ Match 1, 5, 10, 8, 2, 5, 10, 6

Analyse de : 3 + 4 * 5 + - * / ( ) nb $ E 1 1 E 2 3 4 4 T 5 5 T 8 8 6 7 8 8 F 9 10 Entrée Pile Transition Sortie 5$ FT E $ Production 1, 5, 10, 8, 2, 5, 10, 6, 10 5$ nb T E $ Match 1, 5, 10, 8, 2, 5, 10, 6, 10 $ T E $ Production 1, 5, 10, 8, 2, 5, 10, 6, 10, 8 $ E $ Production 1, 5, 10, 8, 2, 5, 10, 6, 10, 8, 4 $ $ Accept 1, 5, 10, 8, 2, 5, 10, 6, 10, 8, 4

Sommaire 1 Principe 2 Premiers 3 Suivants 4 Analyse 5 Grammaire LL(1)

Grammaire LL(1) Définition Une grammaire est dite LL(1) lorsque sa table d analyse ne comporte pas plusieurs règles de production pour une même cellule. Une grammaire ambiguë, récursive à gauche, non factorisée à gauche, n est pas LL(1).

Récursivité à gauche Grammaire immédiatement récursive à gauche : Une grammaire est immédiatement récursive à gauche si elle contient une règle de la forme : A Aα Grammaire récursive à gauche : Une grammaire est récursive à gauche si elle contient une variable A se dérivant en Aα (A = Aα).

Conflit Une grammaire immédiatement récursive à gauche n est pas LL(1). A Aα A β Pour chaque premier(β), il existe au moins deux règles applicables. La grammaire n est pas LL(1). Une grammaire récursive à gauche n est pas LL(1). A = Aα A β Une grammaire avec une récursivité à gauche cachée n est pas LL(1). A = αaβ et α = ɛ

Elimination Si A Aα et A β A produit des chaînes de la forme : βα. Pour éliminer la récursivité à gauche immédiate, il suffit d ajouter une variable A et de remplacer les règles telles que :. A Aα. A β par les règles :. A βa. A αa ɛ

Factorisation à gauche Une grammaire n est pas factorisée à gauche, si deux productions de la même variable A commencent par le même symbole. Une grammaire non factorisée à gauche ne peut pas être LL(1). A Xα et A Xβ sont deux règles applicables pour chaque prem(x).

Algorithme Pour chaque variable A Trouver α le plus long préfixe commun à deux ou plusieurs de ses choix si α ɛ Remplacer A αβ 1... αβ n γ 1... γ p (les γ i ne commencent pas par α) par : A αa γ 1... γ p A β 1... β n Recommencer tant que deux productions commencent par le même symbole.

Conflit Premier-Premier 1 S aab 2 A cd 3 A ce PREM(S) = { a } SUIV(S) = {$} PREM(A) = { c } SUIV(A) = {b} Table d analyse a b c d $ S 1 A 2 ; 3 Grammaire non-factorisée à gauche. Ex : chaîne acdb.

Autre conflit Premier-Premier 1 S atd 2 T Tb 3 T c PREM(S) = { a } SUIV(S) = {$} PREM(T) = { c } SUIV(T) = {b, d} Table d analyse a b c d $ S 1 T 2 ; 3 Grammaire récursive à gauche. Ex : chaîne acbd.

Conflit Premier-Suivant 1 S atb 2 T bt 3 T ɛ PREM(S) = { a } SUIV(S) = {$} PREM(T) = { b, ɛ } SUIV(T) = {b} Table d analyse a b $ S 1 T 2 ; 3 T nullifiable et PREM(T) SUIV(T). Ex : abb.

Conclusion Une grammaire est LL(1) lorsque : 1 Il n y a pas de conflit Premier-Premier. Pour chaque non terminal, les premiers des choix doivent être tous distincts. 2 Il n y a pas de conflit Premier-Suivant. Pour chaque non terminal ayant un choix nullifiable, les Premier et Suivant doivent être distincts. 3 Il n y a pas de choix nullifiables multiples.