LANGAGES - GRAMMAIRES - AUTOMATES



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

Théorème de Poincaré - Formule de Green-Riemann

Synthèse de cours (Terminale S) Calcul intégral

semestre 3 des Licences MISM annnée universitaire

STI2D Logique binaire SIN. L' Algèbre de BOOLE

Notes de révision : Automates et langages

Tout ce qu il faut savoir en math

Chapitre 11 : L inductance

Correction de l épreuve CCP 2001 PSI Maths 2 PREMIÈRE PARTIE ) (

Module 2 : Déterminant d une matrice

ANALYSE NUMERIQUE NON-LINEAIRE

Université Paris-Dauphine DUMI2E. UFR Mathématiques de la décision. Notes de cours. Analyse 2. Filippo SANTAMBROGIO

COURS D ANALYSE. Licence d Informatique, première. Laurent Michel

/HVV\VWqPHVFRPELQDWRLUHV

Techniques d analyse de circuits

Guide des bonnes pratiques

Séquence 8. Probabilité : lois à densité. Sommaire

Chapitre VI Contraintes holonomiques

LICENCE DE MATHÉMATIQUES DEUXIÈME ANNÉE. Unité d enseignement LCMA 4U11 ANALYSE 3. Françoise GEANDIER

L'algèbre de BOOLE ou algèbre logique est l'algèbre définie pour des variables ne pouvant prendre que deux états.

Sommaire. 6. Tableau récapitulatif Sophos NAC intégré Vs. NAC Advanced - 17 Février

Cours d Analyse IV Suites et Séries de fonctions

Guide d'utilisation Easy Interactive Tools Ver. 2

Introduction à la modélisation et à la vérication p. 1/8

Toyota Assurances Toujours la meilleure solution

3- Les taux d'intérêt

Conseils et astuces pour les structures de base de la Ligne D30

Algorithmes sur les mots (séquences)

AUTOUR D UN MÉMOIRE INÉDIT : LA CONTRIBUTION D HERMITE AU DÉVELOPPEMENT DE LA THÉORIE DES FONCTIONS ELLIPTIQUES. Bruno BELHOSTE (*)

Licence M.A.S.S. Cours d Analyse S4

Statuts ASF Association Suisse Feldenkrais

Pour développer votre entreprise LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Thèse Présentée Pour obtenir le diplôme de doctorat en sciences En génie civil Option : structure

ANALYSE : FONCTIONS D UNE VARIABLE RÉELLE

La pratique institutionnelle «à plusieurs»

LOGICIEL FONCTIONNEL EMC VNX

Partie 4 : La monnaie et l'inflation

Réalisation de sites Internet PME & Grandes entreprises Offre Premium. Etude du projet. Webdesign. Intégration HTML. Développement.

NEWS PRO ACTIV. [Juillet 2015] Ce mois-ci on vous parle de. L arrêté est applicable à compter du 1er Juillet 2015.

Pour développer votre entreprise. Compta LES LOGICIELS EN LIGNE, VOUS ALLEZ DIRE OUI!

Influence du milieu d étude sur l activité (suite) Inhibition et activation

Avant d utiliser l appareil, lisez ce Guide de référence rapide pour connaître la procédure de configuration et d installation.

- Phénoméne aérospatial non identifié ( 0.V.N.I )

LITE-FLOOR. Dalles de sol et marches d escalier. Information technique

Chapitre 1 : Fonctions analytiques - introduction

Turbine hydraulique Girard simplifiée pour faibles et très faibles puissances

Le canal étroit du crédit : une analyse critique des fondements théoriques

ManSafe. pour les Utilitiés. La Protection antichute pour les Industries de l'energie. Français. TowerLatch LadderLatch

Commencer DCP-7055W / DCP-7057W /

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

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

Intégrale et primitives

Transfert. Logistique. Stockage. Archivage

EnsEignEmEnt supérieur PRÉPAS / BTS 2015

Classeur courtier d assurance. Comment organiser son activité et se préparer à un contrôle

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

INTENTION LES PROCESSUS MATHÉMATIQUES

Santé et sécurité psychologiques en milieu de travail

Guide de l'utilisateur

SYSTEME DE TELEPHONIE

CHAPITRE VIII : Les circuits avec résistances ohmiques

La paye. La comptabilité. Comparez et choisissez votre logiciel. Comparez et choisissez votre logiciel. Paye Bâtiment Paye Agricole 2013

Modification simultanée de plusieurs caractéristiques d un bien hédonique : une nouvelle méthode de calcul de la variation de bien-être des ménages

Rappels sur les suites - Algorithme

Magister en : Génie Mécanique

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

INSTALLATION DE DETECTION INCENDIE

Limites finies en un point

Structures algébriques

6. Les différents types de démonstrations

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

Théorie des Langages

Bloc notes. a À faire tout de suite. Gardez secret votre code confidentiel. À conserver précieusement. Protégez votre carte

Problèmes de Mathématiques Filtres et ultrafiltres

Baccalauréat S Asie 19 juin 2014 Corrigé

LE PROBLEME DU PLUS COURT CHEMIN

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

Livret de l étudiant

Directives COV et alternative lipochimique : peintures, encres, nettoyage, dégraissage...

Interview p.10. Francis Delpérée. Dossier pédagogique des Equipes Populaires Bimestriel n 154 Janvier-Février 2013

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

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

Algorithme. Table des matières

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

Sciences Industrielles Précision des systèmes asservis Papanicola Robert Lycée Jacques Amyot

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

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

Exercices de dénombrement


Développement décimal d un réel

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Date : Tangram en carré page

LES TYPES DE DONNÉES DU LANGAGE PASCAL

INSTRUCTIONS POUR L INSTALLATION ET LE FONCTIONNEMENT DES SERRURES À POIGNÉE BÉQUILLE

Représentation d un entier en base b

5 ème Chapitre 4 Triangles

D'UN THÉORÈME NOUVEAU

DOCM Solutions officielles = n 2 10.

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

Transcription:

LANGAGES - GRAMMAIRES - AUTOMATES Mrie-Pule Muller Version du 14 juillet 2005 Ce cours présente et met en oeuvre quelques méthodes mthémtiques pour l informtique théorique. Ces notions de bse pourront servir d'entrée en mtière vnt d'border un cours de compiltion. Elles sont introduites ici sns ucun prérequis, fin d être ccessibles à tout lecteur débutnt sur ce sujet. Tble des mtières. INTRODUCTION 2 1. Les tâches d nlyse d un compilteur. 2 2. L notion de grmmire et d nlyse syntxique. 2 LANGAGES LANGAGES REGULIERS 5 1. Définitions. 5 2. Opértions sur les lngges. 6 3. Lngges réguliers (Kleene, 1956). 6 GRAMMAIRES ALGEBRIQUES (dites ussi : «hors contexte») 8 1. Définition d une grmmire lgébrique. 8 2. Dérivtions. Lngge engendré. 9 3. Arbre de dérivtion. Dérivtions à guche. 10 4. Grmmires régulières. 11 5. Ambiguïté. Grphe orienté d une grmmire lgébrique. 13 LE LEMME DE L ETOILE (en nglis : «pumping lemm») 15 1. Le lemme de l Etoile pour les grmmires régulières. 15 2. Un exemple d ppliction du lemme de l Etoile. 17 ANALYSE SYNTAXIQUE (en nglis : «prsing») 19 1. Test sur le préfixe terminl dns les nlyses syntxiques descendntes. 19 2. Anlyse syntxique descendnte en lrgeur d'bord. 20 3. Anlyse syntxique descendnte en profondeur d'bord. 21 4. Note sur les nlyses scendntes. 23 AUTOMATES 24 1. Définitions. 24 2. Lngge reconnu pr un utomte. 25 3. Automtes déterministes, utomtes déterministes complets. 25 4. Automtes et grmmires régulières. 27 5. Les λ utomtes. Preuve du théorème 2. 28 TRANSFORMATION DES GRAMMAIRES ALGEBRIQUES 32 1. Suppression de l récursivité de l xiome. 32 2. Suppression des règles vides. 33 3. Suppression des enchînements de vribles. 34 4. Suppression des vribles et symboles inutiles. 35 5. Forme normle de Chomsky (1959). 36 6. Forme normle de Greibch (1965). 37 NETOGRAPHIE 40 M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 1

INTRODUCTION Un compilteur est un utilitire de trduction permettnt, à prtir d'un progrmme écrit dns un lngge de "hut niveu" ou, du moins, compréhensible pr un progrmmeur humin (C/C++, Pscl, Algol, FORTRAN, ssembleur,...), de vérifier l syntxe du progrmme de déprt, puis de produire un fichier en un lngge de niveu plus bs, pr exemple un fichier en code objet, exécutble pr le système d'exploittion. Le premier lngge de hut niveu qui été écrit est le FORTRAN («Mthemticl FORmul TRANslting System») ; son compilteur été conçu et écrit dns les nnées 1954-57 pr une équipe de pionniers super-progrmmeurs conduite pr John W. Bckus. Son écriture, soit 25 000 lignes de code mchine enregistrées sur bnde mgnétique, nécessité un trvil équivlent à 18 hommes-nnées, bien plus importnt que ce que le projet initil prévoyit ; mis l direction d'ibm, dont dépendit ce projet, eu l'intelligence de lisser le groupe libre de poursuivre son effort comme il l'entendit. Coup d'essi, coup de mître : le lngge FORTRAN I eu un succès énorme, et son compilteur grdé durnt vingt ns le record d'optimistion du code objet produit. Plus trd, le compilteur du PASCAL été écrit en uto-morçge : conçu «à l min» pour 60% environ du lngge, le reste été produit pr ce qui étit déjà compilé. De nombreux utres compilteurs ont suivi (pr exemple YACC, "Yet Another Compiler of Compiler"). Durnt les mêmes nnées 1955-65, des linguistes, philosophes et mthémticiens ont défriché l prtie théorique en proposnt une description et une clssifiction des lngges et des grmmires, pour les diverses lngues nturellement utilisées puis pour les lngges de progrmmtion. Prmi eux, citons le linguiste Nom Chomsky, le mthémticien logicien Stephen Kleene, l'informticienne Sheil Greibch, dont nous reverrons les noms dns ce cours. 1. Les tâches d nlyse d un compilteur. Les premières tâches d'un compilteur sont de fire : l nlyse lexicle : reconnître les éléments constitutifs de l chîne entrée, c est-àdire du code source, et en dresser l liste. l nlyse syntxique : vérifier l conformité vec les règles de constitution du code. Pr exemple, l'expression (A+B)) = C est syntxiquement incorrecte (prenthèses ). l nlyse sémntique : nlyser le sens et fixer une interpréttion. Pr exemple dns «si A lors si B lors C sinon D», choisir à quel si se rpporte le sinon. Dns ce qui suit, nous nous occuperons essentiellement de l'nlyse syntxique. 2. L notion de grmmire et d nlyse syntxique. Considérons, pr exemple, l phrse suivnte : LE VIEUX CHAT ATTRAPE LE PETIT RAT Le but est de construire une grmmire qui permette de produire cette phrse. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 2

Il fut tout d bord préciser les «ingrédients» nécessires : ce ser l lphbet des symboles ou lexique. Dns notre cs, nous pouvons prendre comme lphbet l ensemble Σ = {LE, VIEUX, PETIT, CHAT, RAT, ATTRAPE} ( il contient ici six symboles). Noter que le terme «lphbet» n ps ici le sens hbituel A, B, C,. : en fit, l lphbet contient les «briques de bse» vec lesquelles on peut former tout ce qu on veut pouvoir former! Dns un lngge de progrmmtion pr exemple, les mots réservés, blises, etc comme progrm, rel, <hed>, </hed>, sont dns l lphbet de symboles. Voyons mintennt comment ces symboles sont ssemblés. Dns l structure de l phrse, on peut distinguer : un groupe sujet un verbe un groupe complément d objet (CO) Les groupes sujet et CO sont eux-mêmes des groupes nominux : un groupe nominl est formé d'un rticle suivi d'un nom, lui-même précédé ou suivi d'djectifs. Voici un exemple de (petite) grmmire pouvnt produire notre phrse ; elle onze règles de grmmire (on dit ussi de production, ou de réécriture) : 1. <phrse> <groupe sujet> <verbe> <groupe CO> 2. <groupe sujet> <groupe nominl> 3. <groupe CO> <groupe nominl> 4. <groupe nominl> <rticle> <nom> 5. <groupe nominl> <rticle> <djectif> <nom> 6. <rticle> LE 7. <nom> CHAT 8. <nom> RAT 9. <djectif> VIEUX 10. <djectif> PETIT 11. <verbe> ATTRAPE - Le point de déprt s ppelle l'xiome. Dns notre exemple, c est <phrse>. - Les vribles sont les «ingrédients» qui peuvent encore être remplcés pr d utres (<phrse>, <rticle>, <groupe CO>, etc ). - Les règles 1 à 5 sont des règles syntxiques (l première règle concerne toujours l xiome). Les règles 6 à 11 sont des règles complètement terminles (ou : lexicles). - Le lngge engendré pr l grmmire est l'ensemble de toutes les phrses que l'on peut produire à prtir de l xiome en utilisnt des règles de grmmire, une phrse étnt une chîne de symboles. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 3

Voici mintennt quelques exemples de phrses «grmmticlement correctes», c'est-àdire des chînes de symboles que l'on peut produire à prtir de l'xiome, en utilisnt les règles précédentes : LE RAT ATTRAPE LE PETIT CHAT LE CHAT ATTRAPE LE VIEUX CHAT On peut ssocier à chque phrse insi produite un rbre de dérivtion où figurent les vribles uxquelles on ppliqué des règles de grmmire. Nous vons jouté ux nœuds de cet rbre de dérivtion, pour fciliter l compréhension, les numéros des règles qui ont été ppliquées ux vribles. Un rbre de dérivtion pour l phrse LE RAT ATTRAPE LE PETIT CHAT est représenté dns l figure suivnte. <phrse> 1 <groupe sujet> <verbe> <groupe CO> 2 11 3 <groupe nominl> <groupe nominl> 4 5 <rticle> <nom> <rticle> <djectif> <nom> 6 8 6 10 7 LE RAT ATTRAPE LE PETIT CHAT M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 4

LANGAGES LANGAGES REGULIERS 1. Définitions. L lphbet des symboles est un ensemble fini. On le noter en générl Σ, dns l suite du cours. Exemple 1. Σ = { LE, CHAT,..., VIEUX,...} cf. l introduction. Exemple 2. Σ ={0, l, 2,..., 9, +, *, -, /, (, ) }. Cet lphbet permet d'écrire les expressions rithmétiques sur les nombres entiers, vec les qutre opértions et les prenthèses. Anticipons un peu : le premier problème ser de pouvoir distinguer si une expression est «correctement écrite» ; pr exemple, 2*(31-6)+8 est correcte, mis 2(31-6)+8 ou encore (21+)*4 ne le sont ps. Le deuxième problème ser, pour une expression correctement écrite, de l clculer selon les règles de l rt, c'est-à-dire de respecter les priorités (donner l priorité à l multipliction sur l'ddition, clculer d'bord ce qui est entre prenthèses,...). Une chîne est une suite finie de symboles. L longueur d'une chîne est le nombre de ses symboles. Exemples. LE LE CHAT est une chîne de longueur 3 sur l lphbet de l exemple 1. Les expressions rithmétiques (correctes ou non!) sont des chînes sur l'lphbet de l exemple 2. L chîne vide, notée λ, ne contient ucun symbole ; s longueur est nulle. On verr qu'elle est prticulièrement utile! Σ n est l ensemble de toutes les chînes de longueur n. Σ 0 = { λ }, pr convention. Attention, cet ensemble Σ 0 n est ps vide : il contient l chîne vide. Σ* est l réunion des Σ n pour n 0. C'est donc l'ensemble de toutes les chînes, chîne vide comprise. Σ + est l réunion des Σ n pour n > 0. On peut concténer des chînes de symboles, c est-à-dire les «coller» les unes derrière les utres, de l même fçon que plusieurs textes peuvent être ssemblés les uns derrière les utres pour former un nouveu texte. Si u et v sont deux chînes de symboles, leur concténtion ser notée u.v ou plus simplement uv. Un lngge sur Σ est un sous-ensemble de Σ*. Exemples. Sur l lphbet Σ = {, b, c, d}, les ensembles suivnts sont des lngges : L 1 = {c, bbc} l ensemble L 2 de toutes les chînes qui commencent pr. L ensemble L 3 de toutes les chînes de longueur pire. Nottion. Afin de fciliter l lecture, nous dopterons en générl une nottion, b, c, pour des symboles de Σ et u, v, w, x, pour des chînes de symboles. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 5

2. Opértions sur les lngges. Un lphbet de symboles Σ étnt fixé, voyons les opértions que nous ppliquerons ux lngges sur Σ. Opértions ensemblistes usuelles (réunion, intersection, complémentire). Comme les lngges sur Σ ne sont rien d utre que des sous-ensembles de Σ*, les opértions hbituelles que l on connît sur les sous-ensembles s ppliquent à ces lngges. Concténtion de lngges. Comme nous svons concténer des chînes de symboles, nous pourrons églement concténer deux lngges, c'est-à-dire collecter dns un nouvel ensemble, noté L 1.L 2, toutes les chînes que l'on peut obtenir en concténnt une chîne de L 1 vec une chîne de L 2. Pr récursivité, nous pourrons concténer ussi un nombre fini de lngges. En prticulier, si L est un lngge, on noter L 0 = { λ } L 1 = L L 2 = L. L puis on définit de mnière récursive L n = L n-1. L (concténtion de n exemplires de L ) Etoile de Kleene d'un lngge. Pour un lngge L donné, l étoile de Kleene L* est le lngge obtenu en réunissnt tous les lngges L n (n 0 ) : L* = L 0 U L 1 U L 2 U. On note L + = L.L* = L 1 U L 2 U L 3. Convention de priorité pour ces opértions. On convient que l'étoile de Kleene est prioritire sur l concténtion, qui est elle-même prioritire sur les opértions ensemblistes ; pour modifier un ordre de priorité, on se sert de prenthèses. Formellement, ces règles sont donc nlogues à celles que l'on en rithmétique. Exemple. Sur l lphbet Σ ={0, l, 2,...,9}, le lngge {l, 2,..., 9}.Σ* U {0} est le lngge de tous les nombres entiers nturels, écrits en bse 10 et sns 0 inutiles à guche. 3. Lngges réguliers (Kleene, 1956). Définition. Un lngge L sur Σ est régulier si on peut l'obtenir pr récursivité : à prtir des seuls lngges " de bse " : - lngge vide : φ - lngge {λ} (le lngge ne contennt que l chîne vide) - lngges de l forme {}, vec Σ et à l'ide des seules opértions - réunion - concténtion - étoile de Kleene M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 6

«Pr récursivité» veut dire qu on pplique un nombre fini de fois de telles opértions, à prtir des lngges " de bse ". Exemple. Sur Σ = {, b, c}, le lngge L des chînes commençnt pr est régulier, puisqu'on peut en donner une expression régulière en l écrivnt sous l forme L = {}.({}U{b}U{c})* Nottion. Pr bus de nottion, on peut omettre les ccoldes pour lléger l écriture. Le point de concténtion n'est ps toujours écrit non plus, si cette omission peut se fire sns mbiguïté : L = ( U b U c)* Remrque. Attention! dns l définition, l intersection ne figure ps comme une opértion utorisée. En fit, on peut démontrer (mis c est difficile ) que l intersection de deux lngges réguliers est encore un lngge régulier : Proposition 1. 1) Tout lngge fini est régulier. 2) Si L est un lngge régulier, lors L* est régulier. 3) Si L 1 et L 2 sont des lngges réguliers, lors les lngges L 1 UL 2 et L 1.L 2 sont ussi réguliers. Proposition 2. Si L 1 et L 2 sont des lngges réguliers, lors L 1 L 2 est régulier. L proposition 1 découle directement de l définition. Qunt à l proposition 2, elle ne pourr être prouvée que bien plus trd, dns l suite du cours. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 7

GRAMMAIRES ALGEBRIQUES (dites ussi : «hors contexte») Le problème : un lngge L étnt fixé, comment svoir si une chîne w donnée pprtient à L? Une solution possible : décrire une grmmire déqute engendrnt L, grmmire qui pourrit permettre de produire toutes les chînes de L de tester une chîne, en renvoynt un messge d erreur si elle n est ps dns L. 1. Définition d une grmmire lgébrique. Définition. Une grmmire lgébrique se définit pr l donnée de : Σ : un ensemble fini de symboles terminux V : un ensemble fini de vribles S V : une vrible prticulière, ppelée xiome («Strt symbol») P : un ensemble fini de règles de production (ou : de réécriture). Ces règles doivent être de l forme A u, où A V et u (Σ U V)* En prtique, les vribles seront répertoriées sous l forme d une liste (elles seront donc ordonnées), mis l première de ces vribles est toujours l xiome. Les règles de production seront elles ussi ordonnées, en respectnt l ordre des vribles uxquelles elles s ppliquent. L première règle concerne donc toujours l'xiome. L ordre insi choisi ur une incidence sur le déroulement des lgorithmes qui s ppliqueront ux grmmires. Règle vide : règle de l forme A λ (rppelons que λ est l chîne vide). De telles règles sont très utiles cr elles utorisent certines possibilités sns y obliger. Pr exemple, un groupe nominl peut contenir des djectifs, mis ce n est ps une obligtion ; un progrmme peut contenir des procédures, etc Règle directement récursive : règle de l forme A vaw où v, w (Σ U V)* Autrement dit, l vrible A figure encore dns l chîne de réécriture de A. De telles règles permettent de multiplier des occurrences de symboles, et de rllonger indéfiniment des expressions. En effet, une telle règle permet d obtenir, à prtir de A, les chînes vaw, vvaww, vvvawww, Les prenthèses dns les expressions rithmétiques (x), ((x)), (((x))), en sont un exemple. De mnière plus générle, si on remplce une vrible d une expression rithmétique pr une (utre) expression rithmétique, on obtient une (nouvelle) expression rithmétique correctement écrite. Nottions. Dns l suite du cours, fin de rendre le texte plus lisible, les vribles d une grmmire seront en générl désignées pr des lettres mjuscules S, A, B, C, Pour les symboles terminux, nous urons les minuscules, b, c, suf cs prticuliers. Les nottions x, y, u, v, désigneront souvent des chînes de (Σ U V)*, formées de symboles terminux et/ou de vribles. Les «grmmires» seront toujours des grmmires lgébriques. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 8

Un exemple de grmmire. G : S bsa S λ A A A λ Ici, l ensemble des vribles est V = {S, A}, et l xiome est S. L ensemble Σ des symboles terminux est sous-entendu : Σ = {, b} L nottion plus synthétique que nous dopterons consiste à se servir d une brre verticle comme séprteur entre des règles pour une même vrible : G : S bsa λ A A λ Ces règles de grmmire seront supposées ordonnées (numérotées) : 1 2 3 4 2. Dérivtions. Lngge engendré. Dns ce qui suit, A est une vrible et x, y, u, v (Σ U V)*. En ppliqunt une règle A u à l vrible A qui figure dns une chîne v = xay, on produit l chîne w = xuy. Cette opértion est dite dérivtion, et est notée xay => xuy. On peut répéter ceci utnt de fois que l on veut en ppliqunt de nouveu une règle à l chîne insi produite. Définition. Une chîne w dérive d'une chîne v si, à prtir de v, on peut rriver à w pr un nombre fini d pplictions de règles de grmmire : v =>... => w, ce qu on noter églement v => w On peut préciser le nombre d pplictions de règles u-dessus de l double flèche, si cel s vère utile (pour certines preuves pr récurrence, pr exemple ) : n v ===> w (ici, on fit n pplictions de règles de grmmire). Définition. Le lngge engendré pr une grmmire G est l ensemble de toutes les chînes terminles (utrement dit, dns Σ*) qui dérivent de l xiome S. Il est noté L(G). Exemple 1. Soit G : S bsa λ A A λ Numérotons les règles de grmmire dns leur ordre de lecture. Voici une suite de dérivtions, qui prouve d illeurs que l chîne bb est dns L(G) : S => bsa => bs => bbsa => bbsa => bba => bb Σ* 1 4 1 3 2 4 Pour chque dérivtion, on mis en grs (l occurrence de) l vrible qui été réécrite et on indiqué sous l flèche le n de l règle ppliquée. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 9

Exemple 2. Le lngge engendré pr l grmmire du PASCAL est l ensemble de tous les progrmmes qui sont correctement écrits en code source PASCAL. Remrque. Deux grmmires différentes peuvent engendrer le même lngge. Cette remrque est même décisive pour l suite! En effet, on écrit une première grmmire compréhensible, «intuitive», engendrnt le lngge voulu, c est-à-dire dptée ux objectifs poursuivis (pr exemple du clcul scientifique vec une précision prmétrble ussi grnde que l on veut ; de l gestion bncire ; etc.). Puis il fut l trnsformer (à l ide d lgorithmes d hoc) fin d obtenir une utre grmmire engendrnt le même lngge, mis qui ur l vntge sur l première de permettre une compiltion efficce et rpide. 3. Arbre de dérivtion. Dérivtions à guche. On peut trcer un rbre de dérivtion ssocié à toute suite de dérivtions. Chque nœud représente un exemplire d une vrible réécrite, vec le numéro de l règle de grmmire ppliquée. Exemple. Reprenons l grmmire G : S bsa λ A A λ insi que l suite de dérivtions S => bsa => bs => bbsa => bbsa => bba 1 4 1 3 2 4 Voici l'rbre de dérivtion qui lui est ssocié => bb S b S A b S A λ λ Α λ En lisnt les symboles qui figurent ux extrémités des brnches, de guche à droite, on obtient l chîne bb Remrque 1. Des suites de dérivtions différentes peuvent être ssociées à un même rbre de dérivtion. En effet, il pprît clirement sur cet exemple que l ordre de certines des dérivtions peut être échngé sns que l rbre en soit modifié. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 10

Définition. Une dérivtion à guche est une dérivtion qui s'pplique à l première vrible rencontrée dns l chîne (c'est l vrible qui est le plus "à guche" possible). Théorème 1. Soit w une chîne de L(G). A toute suite de dérivtions S => w correspond une unique suite de dérivtions à guche ynt le même rbre de dérivtion. Preuve. On ssocie son rbre de dérivtion à l suite de dérivtions donnée. Il suffit de prcourir cet rbre de dérivtion en suivnt les brnches prioritirement le plus loin possible vers le bs, ensuite seulement de l guche vers l droite ; pendnt ce prcours, en repérnt le premier pssge à chque nœud de l'rbre de dérivtion, on obtient une suite de dérivtions à guche. Cette fçon de prcourir un rbre s'ppelle "en profondeur d'bord" : on descend toujours utnt que possible, en commençnt à guche ; on ne remonte que le minimum nécessire pour pouvoir redescendre sur une brnche située plus à droite. Un prcours "en lrgeur d'bord" se fit, lui, en llnt d'bord de guche à droite, ensuite de hut en bs. Exercice 1. Ecrire l suite de dérivtions à guche ssociée à l suite de dérivtions donnée dns l'exemple ci-dessus (vérifier le résultt : il fut obtenir le même rbre de dérivtion). Remrque 2. Des suites de dérivtions différentes peuvent produire l même chîne de L(G), tout en étnt ssociées à des rbres de dérivtion différents. Exercice 2. Toujours vec l grmmire G de l exemple, trouver une utre suite de dérivtions à guche pour l chîne bb. Elle correspondr donc nécessirement à un utre rbre de dérivtion ; trcer cet rbre de dérivtion et comprer u précédent. 4. Grmmires régulières. Définition. Une grmmire lgébrique est dite régulière si toutes ses règles sont de l'un des types suivnts : A B A où A, B V et Σ A λ Il en découle que les chînes qui dérivent de l xiome contiennent u plus une vrible, et cette vrible est nécessirement en fin de chîne (en «suffixe»). Plus précisément, ces chînes sont de l une des formes suivntes : 1 2 3 n A une seule vrible, précédée pr un "préfixe terminl" 1 2 3 n Σ + 1 2 3 n chîne terminle (obtenue près ppliction d une règle de type 2 ou 3) λ ce cs n'est possible que s il y, pour l xiome, l règle vide S λ Les rbres de dérivtion ssociés ux suites de dérivtion ont l spect d un «peigne» (symboles et vribles sont indiqués à titre d'exemple sur l figure suivnte) : M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 11

S A b B B A, ou λ Le théorème suivnt met en reltion les lngges réguliers (que nous vons vus u chpitre précédent) et les grmmires régulières. Il ser difficile à prouver : plus précisément, l démrche suivie ser surtout très longue (mis très belle ussi). Théorème 2. Tout lngge régulier peut être engendré pr une grmmire régulière. Réciproquement, si G une grmmire régulière, lors L(G) est un lngge régulier. Exercice 3. G : S bsa λ A A λ n'est ps une grmmire régulière. Mis 1) Prouver que L(G) = {λ}u (b) +.*. Vérifier ussi que L(G) est différent de (b)*.* Le lngge L(G) est donc un lngge régulier. D'près le théorème 2 précédent, il doit exister une grmmire régulière qui l engendre. 2) Trouver une grmmire régulière G 1 telle que L(G 1 ) = L(G). Une remrque sur l forme des règles d'une grmmire régulière. On vu (cf. l définition) que des règles du type A peuvent figurer dns une grmmire régulière. De telles règles peuvent être éliminées, à condition d'introduire une nouvelle vrible dns l grmmire : il suffit en effet de remplcer l règle A pr le groupe des deux règles suivntes A.A 1 (où A 1 désigne ici l nouvelle vrible introduite) A 1 λ Cette opértion est un exemple simple de trnsformtion d'une grmmire en une utre grmmire qui lui est équivlente : le lngge engendré reste inchngé. Nous vons insi étbli l proposition suivnte. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 12

Proposition. Toute grmmire régulière est équivlente à une grmmire régulière dont les règles sont du type A B ou A λ Exemple. L grmmire G : S ba b λ A A S est équivlente à G : S ba bz λ A A S Z Z λ ( Z est ici l troisième vrible de G ) Exercice 4. Décrire le lngge engendré pr ces grmmires, à l ide d une propriété crctérisnt ses chînes. 5. Ambiguïté. Grphe orienté d une grmmire lgébrique. Dns l suite du cours, suf mention du contrire, nous ne considérerons plus que des dérivtions à guche : en lisnt une chîne de guche à droite, c est toujours l première vrible rencontrée qui est réécrite. Nous vons vu en effet (cf. théorème 1) que toute chîne w de L(G) peut être obtenue à prtir de l xiome pr une suite de dérivtions à guche. Définition. Une grmmire G est dite mbiguë s il existe dns L(G) une chîne w que l on peut obtenir pr deux suites différentes de dérivtions à guche. Remrque. L mbiguïté est une propriété qui se rpporte à une grmmire, et non à un lngge. Il n'est ps difficile de trouver un exemple de lngge engendré pr une grmmire non mbiguë et pr une (utre) grmmire qui, elle, est mbiguë : il suffit de prtir d'une (petite) grmmire G dont on est certin qu'elle est non mbiguë, puis de l modifier en "doublnt" une vrible : G : S A G' : S A B A λ A λ B λ Exemple. L exercice 2 (cf. 3.) permet en fit de prouver que l grmmire G considérée est mbiguë. Définition. Une grmmire G étnt donnée, on peut lui ssocier un grphe orienté (il s git d un grphe infini, en générl) : les sommets de ce grphe sont toutes les chînes que l on obtient à prtir de l xiome pr des dérivtions à guche les flèches issues d un sommet donné sont les règles de grmmire pplicbles à l première vrible de l chîne correspondnt à ce sommet. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 13

Exemple. Soit G : S S A λ A Ab b Le grphe orienté de cette grmmire commence insi (il est infini, en fit) : S S A λ S A Ab b 3 S 3 A Sur cette prtie du grphe orienté, l mbiguïté de G est déjà mise en évidence puisque on y voit deux chemins différents qui mènent de S à l chîne, chîne qui est terminle et pprtient donc u lngge engendré. De mnière générle : Dns le grphe orienté de l grmmire, un rbre de dérivtion (cf. 3.) est représenté pr un chemin prtnt de l xiome et boutissnt à un élément de L(G). En effet, un rbre de dérivtion correspond à une (unique) suite de dérivtions à guche, cf. théorème 1. L grmmire est mbiguë si et seulement si son grphe orienté contient des chemins différents issus de l xiome et boutissnt à une même chîne de L(G). M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 14

LE LEMME DE L ETOILE (en nglis : «pumping lemm») Le problème : un lngge L étnt donné, comment svoir s il peut être engendré pr une grmmire régulière? Une réponse : le lemme de l Etoile donne une condition que les chînes de L doivent nécessirement stisfire s il y une telle grmmire. Cette condition nécessire ser ensuite exploitée pour prouver que, pour certins lngges, il n existe ps de grmmire régulière : il suffir de produire des chînes servnt de «contre-exemple», c est-à-dire des exemples de chînes du lngge qui ne vérifient ps l condition énoncée pr le lemme de l Etoile. 1. Le lemme de l Etoile pour les grmmires régulières. Rppelons que pour une grmmire G régulière, les règles sont de l'une des formes suivntes : A B où Σ et B V A où Σ A λ et si w est un élément du lngge engendré L(G), il y un rbre de dérivtion de l forme prticulière suivnte : S A b B B A, ou λ où w est l chîne formée pr les symboles figurnt ux extrémités des brnches (symboles et vribles sont indiqués à titre d'exemple). Fisons une remrque évidente, mis décisive pour l suite : si l longueur de l chîne w est strictement supérieure u nombre de vribles de l grmmire G, lors il y une vrible (u moins) qui figure deux fois dns l rbre de dérivtion. Exemple. L figure suivnte représente un rbre de dérivtion pour l chîne w = 1 2 3 4 5 6 de L(G), et cette chîne est supposée être de longueur strictement supérieure u nombre de vribles de G. L vrible A figure deux fois dns l rbre de dérivtion. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 15

Lors de l première occurrence de A, on ppliqué une certine règle de dérivtion, disons A 2 B ; puis une succession de règles diverses ; à l deuxième occurrence de l vrible A, on ppliqué une règle A 5 C ; puis encore diverses règles. S 1 A 2 B 3 C 4 A 5 C 6 Dns cette sitution, nous pouvons construire de nouvelles chînes qui devront certinement, elles ussi, pprtenir u lngge L(G), pour l bonne rison qu elles sont produites en se servnt uniquement de règles qui ont été utilisées pour produire w, donc des règles qui sont dns l grmmire G. L procédure est l suivnte : jusqu à l deuxième occurrence de l vrible répétée, on pplique les mêmes règles que celles qui ont servi pour produire w ; à ce moment-là, on réutilise l règle qui vit déjà été ppliquée lors de l première occurrence, et celles qui ont suivi. Sur notre exemple, u lieu d ppliquer A 5 C, on réutilise l règle A 2 B et celles qui suivent. Nous obtenons insi une nouvelle chîne w = 1 2 3 4 2 3 4 5 6 qui pprtient églement à L(G). S 1 A 2 B 3 C 4 A 2 B L prtie de l rbre entourée en pointillés été dupliquée 3 C 4 A 5 C 6 M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 16

Bien entendu, l dupliction de ce tronçon de l rbre de dérivtion peut être recommencée utnt de fois que l on veut : l chîne 1 2 3 4 2 3 4 2 3 4 5 6 et, plus générlement, toutes les chînes qui sont de l forme 1 ( 2 3 4 ) i. 5 6 pprtiennent nécessirement u lngge L(G). En outre, il est évident que si K désigne le nombre de vribles dns l grmmire, l répétition d une vrible se produir déjà prmi les K+1 premiers noeuds de l rbre (l rcine S est comptée comme le premier noeud). Nous obtenons insi le résultt suivnt : Proposition. Soit G une grmmire régulière. On note K le nombre de ses vribles et L(G) le lngge engendré. Alors, toute chîne w de L(G) dont l longueur est strictement supérieure à K peut s écrire sous l forme w = u.x.v où : x est une chîne non vide l longueur de l chîne u.x est inférieure ou égle à K l chîne u.x i.v pprtient à L(G) pour tout entier i. Rppelons le théorème 2 (que nous prouverons dns le chpitre sur les utomtes) : pour tout lngge régulier L, il existe une grmmire régulière G telle que L = L(G). De cette grmmire dont on ignore à peu près tout, nous svons u moins qu elle un nombre fini de vribles. Nous ignorons quel est ce nombre, mis nous pouvons mintennt ppliquer l proposition précédente ux chînes du lngge régulier considéré. Voici donc l version définitive du «critère de régulrité» qui découle des considértions et de l proposition précédentes : «Lemme de l Etoile» pour les lngges réguliers. Soit L un lngge régulier. Il existe une constnte K telle que toute chîne w de L dont l longueur est strictement supérieure à K peut s écrire sous l forme w = u.x.v où : x est une chîne non vide, l longueur de u.x est inférieure ou égle à K, l chîne u.x i.v pprtient u lngge L pour tout entier i. Voyons mintennt un exemple d utilistion de ce critère, pour prouver que certins lngges ne sont ps réguliers. 2. Un exemple d ppliction du lemme de l Etoile. Proposition. Soit l lphbet Σ = {, b}. Le lngge L = { n.b n : n 0 } n est ps un lngge régulier. Preuve de l proposition. On risonne pr l bsurde. Supposons que L est un lngge régulier. D près le Lemme de l Etoile, il doit exister une longueur K telle que toute M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 17

chîne w de L dont l longueur est supérieure à K contienne u moins une séquence x (non vide) qu on peut dupliquer dns l chîne sns sortir du lngge. Autrement dit, il est possible d écrire w sous l forme d une concténtion w = uxv ynt l propriété que l chîne uxxv est encore dns L. De plus, l séquence x se trouve prmi les K premiers symboles de w. Or, pour n importe quel nombre K, nous pouvons trouver une chîne w qui fit usge de «contre-exemple» : il nous suffit de considérer l chîne w = K.b K. S longueur est 2K, donc supérieure à K, et comme l séquence x doit se trouver prmi les K premiers symboles de w, elle est formée uniquement de, c est-à-dire qu elle est de l forme x = p (vec p 1) : w = p... b K u x v Mis lors l chîne uxxv = K+p.b K, et cette chîne n est ps dns le lngge. Le lemme de l Etoile est contredit. On en conclut que L n est ps un lngge régulier. Définition. Un plindrome sur un lphbet Σ donné est une chîne de symboles de Σ qui peut être lue indifféremment de guche à droite ou de droite à guche. Quelques exemples de plindromes, sur Σ = {, b} : b, bb, bbb,. Exercice. Prouver que le lngge des plindromes sur Σ = {, b} n est ps un lngge régulier. Note. Il existe une version «perfectionnée» de Lemme de l Etoile pour les lngges engendrés pr des grmmires lgébriques. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 18

ANALYSE SYNTAXIQUE (en nglis : «prsing») On se donne une grmmire lgébrique G. Le problème : décrire un lgorithme permettnt de déterminer si une chîne donnée w Σ* pprtient, ou non, à L(G). Deux strtégies sont possibles : vec une nlyse syntxique descendnte, on prt de l xiome, et on recherche l chîne w vec une nlyse syntxique scendnte, on prt u contrire de l chîne w, et on cherche à rejoindre l xiome. Nous verrons de mnière détillée l nlyse syntxique descendnte. Celle-ci peut se fire selon deux types de prcours : en lrgeur d bord en profondeur d bord 1. Test sur le préfixe terminl dns les nlyses syntxiques descendntes. Définition. Le préfixe terminl d une chîne u (ΣUV)* est l sous-chîne des symboles terminux qui précédent l première vrible figurnt dns u. Remrque. Lorsqu on procède à une dérivtion, le préfixe terminl se trouve soit inchngé soit prolongé. Cette remrque simple est à l bse du test qui se fer lors de l nlyse syntxique : si le préfixe terminl d une chîne u (ΣUV)* n est ps identique u début de l chîne nlysée w, il est impossible que w dérive de u. Le test : tester une chîne u consiste à comprer son préfixe terminl vec le début de l chîne nlysée w. Noter qu en informtique, l donnée d une chîne de symboles est toujours suivie d un signe de fin de chîne : espce, guillemet, ou tout utre crctère spécifique servnt à signifier l fin. Dns le cs où u est complètement terminle (utrement dit dns Σ*), on rrive u signe de fin de chîne (puisqu on n ps trouvé de vrible), et on teste donc l églité des chînes : u = w oui ou non. Remrque. Pr une dérivtion à guche, en ppliqunt une règle de grmmire qui commence pr un symbole terminl, on est certin que le préfixe terminl ser llongé ; le test ser donc plus efficce. Mieux : l complexité de l nlyse syntxique ser contrôlée si toutes les règles commencent pr un symbole terminl. C est pourquoi une étpe préliminire consiste à trnsformer dns ce but l grmmire donnée. Nous verrons comment procéder à ce type de trnsformtion dns un chpitre ultérieur. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 19

2. Anlyse syntxique descendnte en lrgeur d'bord. L'lgorithme d nlyse. LesMthémtiques.net Les règles de G sont ordonnées (c'est-à-dire numérotées, mises dns une liste). Le test sur les chînes : comprer leur préfixe terminl u début de l chîne w à nlyser. Une file ser créée, fin de mettre en ttente les chînes : - qui dérivent de l'xiome, - qui contiennent encore u moins une vrible - et qui restent susceptibles d'boutir à w pr dérivtion (cf. le test). Rppelons le principe d une file : " le premier entré est le premier sorti ". Les entrées : l grmmire (symboles, vribles, règles), et l chîne à nlyser. Crétion d une file Q : 1. Initiliser l file : Q = [ S ] 2. Soit q le 1 er élément de l file Q 2.1. sortir q de l file 2.2. ppliquer successivement chcune des règles pplicbles à l 1 ère vrible de q et tester chque chîne insi obtenue : si l chîne est non terminle et si le test est positif, l enfiler dns Q 2.3. retour à 2 3. Arrêt : qund le chîne w est trouvée ou qund l file Q est vide u retour à 2. Exemple. G : S bs S Numérottion de ces règles : 1 2 3 L chîne à nlyser est w = b. 1 Un rbre d'nlyse permet de représenter à l ide d un schém le déroulement de l nlyse : à prtir de chcune des chînes prélevées dns l file, des flèches pointent vers les chînes que l on obtient pr une dérivtion à guche. Si le test sur l chîne obtenue est négtif, l explortion suivnt cette brnche est rrêtée puisque l chîne n est ps mise dns l file. Remrquer qu'une même chîne (ci-dessous, bs pr exemple) peut figurer à plusieurs endroits de l'rbre d'nlyse : ceci signifie qu'elle été exminée à plusieurs reprises. Elle peut même figurer, à un moment donné, en plusieurs exemplires dns l file d'ttente Q. Une telle sitution, due à l forme de l grmmire, rlentit bien sûr l nlyse. 1 S 2 3 bs S 1 2 3 1 2 3 bbs bs b bs S 1 2 3 bbs bs b M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 20

Exercice. Pour cette nlyse syntxique, suivre sur l rbre l ordre dns lequel les chînes ont été exminées pr l lgorithme ; préciser le contenu de l file Q. Quelles sont les chînes qui restent encore dns l file, u moment où l nlyse s'rrête? 3. Anlyse syntxique descendnte en profondeur d'bord. L'lgorithme d nlyse. Les règles de G sont ordonnées (mises dns une liste). Le test sur les chînes : comprer leur préfixe terminl u début de l chîne w à nlyser. Une pile ser créée, fin de mettre en ttente les chînes : - qui dérivent de l'xiome, - qui contiennent encore u moins une vrible - et qui restent susceptibles d'boutir à w pr dérivtion (cf. le test). Rppelons le principe d une pile : " le dernier entré est le premier sorti ". On empiler une chîne q ccompgnée d'un n de règle pplicble à s première vrible. Lorsqu'on dépiler un élément [q, i], on chercher s'il y une règle suivnte pplicble à q (donc n i+1), et dns ce cs on empiler [q, i+1]. S'il n'y plus de règle suivnte pplicble à q, on dépiler un élément supplémentire. L'nlyse s'rrête si l pile est vide, ou si l chîne w est trouvée ; dns ce dernier cs, l pile contient lors un chemin de dérivtions à guche de S à w. Les entrées : l grmmire (symboles, vribles, règles), et l chîne à nlyser. Crétion d une pile d'nlyse P : (Rppel : on empile une chîne ccompgnée d un numéro de règle pplicble à s première vrible). 1. Initiliser l pile P : P = [S, 1]. Cette règle n 1 : S q produit l chîne q. 2. Tester l chîne q. Si le test sur q est positif, lors 2.1 - chercher l première règle pplicble à l première vrible dns q, disons q = uav (où u est le préfixe terminl), et n i : A - empiler [q, i] - ffecter q = uyv - retour u test, en 2. y sinon (cs où le test est négtif) 2.2 - dépiler l'élément en hut de l pile, disons [q', i'] - Si l règle suivnte (n i'+1) est encore pplicble à q', disons q'=u'a'v' et n i'+1 : A' lors - empiler [q', i'+1] - ffecter à q l chîne obtenue vec cette règle : q = u'zv' - retour à 2. sinon, retour à 2.2. 3. Arrêt : si w est trouvée, ou si l pile est vide u retour à 2.2. z M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 21

Là encore, on peut représenter le déroulement de l lgorithme à l'ide d'un rbre d nlyse : cette fois, il ser trcé prioritirement de hut en bs, ensuite seulement de l guche vers l droite. Les opértions d empilement et de dépilement se voient isément sur l rbre : il suffit de trcer un chemin qui «contourne» l rbre en suivnt toutes ses brnches : il prt de S (à guche de l rbre, sur le dessin suivnt) et s rrête à l chîne nlysée w si elle est trouvée. Si l nlyse ne trouve ps w, le chemin contourne entièrement l rbre et boutit à S. Exemple. G : S S A λ numérotées : 1 2 3 A ba b λ 4 5 6 L chîne à nlyser est w = bb S S 1 2 A 1 2 3 4 S A ba 4 bba 4 5 6 bbba bbb bb Au moment où cette nlyse s rrête (elle s rrête prce qu'on trouvé w ), le contenu de l pile P est : [bba, 6] [ba, 4] [A, 4] [S, 2] (le hut de l pile) On retrouve donc dns l pile un chemin joignnt S à w, c'est-à-dire toute une suite de dérivtions à guche : S => A => ba => bba => w Ceci est un spect intéressnt de l nlyse en profondeur. Remrque. L'nlyse syntxique peut être longue, ou même inopérnte, selon l forme des règles de grmmire. Les règles qui commencent pr une vrible, et prticulièrement celles qui sont de l forme A Au (où u est une chîne quelconque), dites directement récursives à guche, peuvent empêcher l'nlyse syntxique d'boutir. Mis nous verrons ultérieurement des lgorithmes qui permettent de trnsformer l grmmire en une grmmire équivlente pour lquelle toutes les règles (non vides) commencent pr un symbole terminl. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 22

4. Note sur les nlyses scendntes. Le principe est de prtir de l chîne w à nlyser et de chercher à remonter à S. Là encore, on peut fire l explortion en lrgeur d bord ou bien en profondeur d bord. Une règle A u donne des dérivtions de l forme paq => puq. Il fut donc pouvoir reconnître l séquence u dns une chîne, fin de pouvoir l remplcer pr l vrible A. Pour cel, on prtique le test de l mnière suivnte. Une chîne w * étnt donnée, on découpe w en deux chînes concténées w = y.z. Ce découpge est initilisé vec y = λ et z = w, puis il progresser vers l droite : on llonger y et rccourcir z d'un symbole à l fois. A chque fois, les règles de grmmire sont successivement comprées à l fin de l chîne y. S il y une règle A u telle que u soit un suffixe de y, disons y = y 1.u : 1) remplcer u pr A. On obtient insi l chîne y 1.A.z, qui est ffectée à w. 2) retour u découpge de w. Mis comme cette chîne w contient mintennt des vribles, le découpge se fit dorénvnt vec l condition supplémentire que z * ; utrement dit, le découpge est réinitilisé juste près l dernière vrible de w (ceci fin de ggner du temps de clcul). Noter qu'on obtient insi une suite de dérivtions à droite, qu'il suffit d illeurs d'voir grdées en mémoire dns une pile pour reconstituer une dérivtion (à droite) S => w. L'vntge de l méthode scendnte est l rpidité : l chîne est rccourcie à chque substitution, à condition toutefois qu il n y it ps de règles du type «enchînement de vribles» A B ; mis nous verrons comment éliminer ce type de pr une trnsformtion de l grmmire. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 23

AUTOMATES Soit L un lngge sur un lphbet de symboles Σ. Le problème : peut-on décrire une petite "mchine" qui ccepter ou rejetter une chîne w de Σ* selon qu'elle pprtient, ou non, u lngge L? Un modèle du genre est un utomte distributeur de cfé : si l'ppoint en monnie est correct, l mchine répond en versnt un cfé ; dns le cs contrire, elle reste en ttente (ou donne un messge d'erreur) Un utomte (théorique) ser décrit en précisnt : son lphbet de symboles (les pièces de monnie cceptées), ses étts initiux, ses étts finux (cfé, vec ou sns sucre, chocolt, ), les étts intermédiires dns lesquels il peut se trouver (pendnt qu'on fit l'ppoint, pr exemple), insi que les trnsitions, c'est-à-dire comment on psse d'un étt à un utre. 1. Définitions. Définition. Un utomte est défini pr un 5-uplet A = ( Σ, E, E o, F, δ ), où Σ est l ensemble fini des symboles E est un ensemble fini : l ensemble des étts E o E est le sous-ensemble des étts initiux F S est le sous-ensemble des étts finux δ est un ensemble fini de trnsitions : une trnsition est un triplet (i,, j ), où i et j sont des étts et est un symbole. Représenttion grphique d'un utomte. Une trnsition (i,, j ) se représente pr une flèche de i à j, munie d'une étiquette : i j Un utomte se représente donc à l'ide d'un grphe orienté, sur lequel il fut toutefois indiquer les étts prticuliers que sont les entrées et les sorties. Les étts initiux sont indiqués pr une double flèche entrnte ; pour les étts finux, une double flèche sortnte. Exemple. 1 2 b 3 b 4 Pour cet exemple, l ensemble des symboles est Σ = {, b}. L ensemble des étts est E = {1, 2, 3, 4} ; prmi ceux-ci, il y deux étts initiux et un étt finl : E o = {1, 2} et F = {4}. Les trnsitions sont décrites dns l ensemble δ = {(1,,2), (2,,3), (3,b,2), (3,b,4), (4,,4) } M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 24

Pour simplifier les dessins, on convient de représenter deux trnsitions entre les mêmes étts (i,,j) et (i,b,j) pr une seule flèche, munie des deux étiquettes. Il fut donc comprendre " ou b ", en lisnt l étiquette suivnte : i, b b j 2. Lngge reconnu pr un utomte. Définition. Une chîne w Σ* est reconnue pr un utomte A s'il y un cheminement, c est-à-dire une suite de trnsitions, prtnt d'un étt initil, boutissnt à un étt finl, et dont l suite des étiquettes est w. Définition. Le lngge reconnu pr un utomte A est l'ensemble de toutes les chînes reconnues. Il est noté L(A ). Exercice. 1) Prmi les chînes b, bb, bb, b, b, déterminer lesquelles sont reconnues pr l'utomte A représenté u 1. 2) Déterminer le lngge L(A) reconnu. Remrque. L utomte A représenté u 1 est «non-déterministe» : qund on est dns l étt 3 et que le symbole b est lu, il est possible d ller en 2 ou bien en 4 ; ce choix est fit u hsrd. De plus, il y le choix entre deux entrées possibles (les étts 1 et 2 ). 3. Automtes déterministes, utomtes déterministes complets. Définition. Un utomte déterministe (AD) est un utomte : vec un unique étt initil à prtir de chque étt, il y u plus une trnsition d étiquette donnée. Définition. Un utomte déterministe complet (ADC) est un utomte déterministe pour lequel il y, à prtir de chque étt, une et une seule trnsition pour chque étiquette possible de Σ. L intérêt d un ADC est qu en lisnt une chîne (quelconque) w de Σ*, il lui correspond un prcours bien défini à prtir de l étt initil, et l progression dns l utomte ne se trouve jmis bloquée : l chîne peut toujours être lue jusqu u bout. L chîne w est reconnue si et seulement si on boutit à l un des étts «de sortie», c est-àdire à un étt finl. Théorème 3. Tout utomte peut être trnsformé en un utomte déterministe reconnissnt le même lngge. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 25

Preuve du théorème 3. L idée est simple : il fut regrouper les étts uxquels on peut rriver en lisnt un même symbole. Exemple 1 2 Si on est à l étt 1 et lit le symbole, on v vers «1 ou 2 ou 3» On groupe donc tous les étts possibles d rrivée en un seul, ce qui crée un nouvel étt «1 ou 2 ou 3» : 3 1 {1,2,3} Bien entendu, cette construction doit se fire «de proche en proche», à prtir des étts initiux, qui sont les premiers étts qu il fut regrouper pour obtenir une entrée unique. C est donc une construction récursive, et lgorithmique. Soit A = ( Σ, E, E o, F, δ ) l utomte initil donné. Le nouvel utomte, déterministe, ser noté A = (Σ, E, {s o }, F, δ'). Les étts de ce nouvel utomte sont des groupes d étts de l ncien utomte, c est-à-dire des sousensembles de l ensemble E. L étt initil s o est unique. L lgorithme. - initiliser : s o = E o ( s o est l ensemble de tous les étts initiux de A. C est l étt initil de A ) E = {s o } (initilistion de l construction de l ensemble des étts E ) - répéter, jusqu à ce que l ensemble E soit sttionnire (c est-à-dire que plus ucun élément nouveu ne s y rjoute) : pour chque étt A E vennt d être construit, et pour chque symbole Σ, - considérer (dns A) toutes les trnsitions d étiquette issues d un étt A A, et regrouper leurs étts d rrivée - si ce groupe d étts n est ps encore un élément de E, on crée ce nouvel étt en le rjoutnt à l ensemble E - rjouter l trnsition d étiquette issue de A vers cet étt. - définir les étts finux de A : ce sont tous les étts qui contiennent u moins un étt finl de A. Exercice. Construire l AD à prtir de l utomte suivnt b 1 2 b b 3 M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 26

Réponse : {1} [1,2,3} b {2,3} b Note. On pourr omettre l écriture des ccoldes, pour lléger l nottion. Théorème 4. Tout utomte déterministe peut être trnsformé en un utomte déterministe complet reconnissnt le même lngge. Preuve du théorème 4. L opértion est élémentire : si l AD n est ps déjà complet, lui rjouter un nouvel étt («étt poubelle») rjouter les trnsitions d étiquettes mnquntes en les dirigent toutes vers cet étt poubelle P ; ne ps oublier les trnsitions de P lui-même vers P. Exercice. compléter l AD suivnt S b 1 2 c b c 3 Théorème 5. Soit L un lngge reconnu pr un utomte. Alors le lngge complémentire Σ* - L est ussi reconnu pr un utomte. Preuve du théorème 5. Prtir d un utomte A reconnissnt L ; le trnsformer en un AD, puis en un ADC. Rppelons qu vec l ADC, toutes les chînes peuvent être lues jusqu u bout : l lecture des chînes de L fit rriver à un étt finl, lors que celle des chînes n pprtennt ps à L fit boutir à un étt non finl. Sur l représenttion grphique, il suffit mintennt d ôter les sorties existntes, et de mettre des sorties ux étts qui n en vient ps uprvnt, pour obtenir un ADC reconnissnt le lngge complémentire du lngge L. 4. Automtes et grmmires régulières. Théorème 6. On peut ssocier à toute grmmire régulière G un utomte reconnissnt le lngge L(G). Donc ussi un ADC reconnissnt L(G). Réciproquement, on peut ssocier à tout utomte A ynt un unique étt initil une grmmire régulière qui produit le lngge reconnu pr A. Remrque. A prtir d un utomte quelconque, on sit obtenir un AD reconnissnt le même lngge ; or celui-ci bien un seul étt initil. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 27

Preuve du théorème 6. LesMthémtiques.net 1) L grmmire régulière G est, si nécessire, modifiée fin que toutes ses règles soient de l un des types suivnts (cf. Proposition, p.12 ) : A B (où Σ et A, B V ) A λ 2) L correspondnce se fit : - entre les vribles de l grmmire G et les étts de l utomte A - entre les règle de grmmire et les trnsitions de l utomte l xiome S de l grmmire : l (unique) étt initil de l utomte les vribles : les étts les règles : les trnsitions, ou les sorties : A B : A B A λ : A Exemple. G : S A A ba λ S b A Corollire. Les lngges reconnus pr les utomtes sont les lngges engendrés pr les grmmires régulières. 5. Les λ utomtes. Preuve du théorème 2. Il s git d une légère générlistion de l notion d utomte. Son intérêt est technique : elle nous permet de fire les «bricolges» à prtir d utomtes dont nous urons besoin pr l suite (jonction, réunion, ). Définition. Un λ utomte se définit de mnière nlogue à un utomte, nénmoins : on utorise des trnsitions d étiquette vide (l étiquette est lors notée λ ) on exige qu il n y it qu un seul étt initil Remrque. Si des trnsitions d étiquette vide sont permises, l deuxième condition n est plus du tout contrignnte! s il y plusieurs étts initiux, il suffit de bnliser ces étts et de rjouter un nouvel étt, qui devient l unique étt initil, vec des trnsitions d étiquette vide déqutes : 1 2 3 devient S λ λ 1 2 3 M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 28

L unicité de l étt initil est une condition indispensble si l on veut progresser vers l construction d une grmmire. Du point de vue des grmmires, d illeurs, une trnsition d étiquette vide corespond très exctement à une règle d «enchînement de vribles» (les étts A et B du λ utomte correspondent à des vribles A et B de l grmmire) : λ A B : Les grmmires nturellement ssociées ux λ utomtes ne sont donc ps les grmmires régulières : on utorise, de plus, des règles du type «enchînement de vribles». Nénmoins : A B Théorème 7. Tout λ utomte peut être trnsformé en un utomte, vec un étt initil unique et non récursif. L étt initil est dit non récursif si on n y psse qu une seule fois (à l entrée dns l utomte) ; utrement dit, il n y ps de cheminement qui y revient en boucle fermée. Preuve du théorème 7. Un λ utomte étnt donné, 1) on commence pr supprimer, si nécessire, l récursivité de l étt initil en rjoutnt un nouvel étt initil et bnlisnt l ncien, vec une trnsition d étiquette vide de l un à l utre : S 2 1 3 S λ S 2 1 3 2) il fut mintennt supprimer les trnsitions d étiquette vide, ce qui ne peut se fire qu en joutnt de nouvelles trnsitions fin de compenser ces suppressions (le lngge reconnu doit rester inchngé). Pour cel, il fut : - repérer tous les chemins qui sont constitués d une succession de trnsitions d étiquette vide, suivie d une trnsition d étiquette non vide. - remplcer chcun de ces chemins pr une nouvelle trnsition «court-circuitnt» l suite des trnsitions d étiquette vide ; elle est bien sûr étiquetée vec le même symbole que l dernière trnsition du chemin. Exemple : λ A B C D λ Nous vons ici deux chemins du type voulu qui sont issus de l étt A (l un boutit à D, l utre boutit à C près voir suivi l trnsition d étiquette b ) ; nous vons ussi deux chemins nlogues issus de l étt B. b M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 29

Nous obtenons les trnsitions suivntes : A B C b b b D - Attention à ne ps oublier les sorties : si des trnsitions d étiquettes vides boutissent à un étt finl, elles ne peuvent être supprimées que si leur étt de déprt devient un étt finl. λ λ devient A B C A B C Théorème 8. Sont reconnus pr un λ utomte les lngges suivnts : le lngge {λ} les lngges de l forme {}, vec Σ l réunion de deux lngges reconnus pr un λ utomte l concténtion de deux lngges reconnus pr un λ utomte l étoile de Kleene d un lngge reconnu pr un λ utomte. Donc, tout lngge régulier est reconnu pr un λ utomte. Soit L un lngge régulier. D près le théorème 8, il est reconnu pr un λ utomte, qui peut être trnsformé en un utomte (et même un ADC) à un seul étt initil, non récursif, d près le théorème 7 ; à cet utomte correspond une grmmire régulière (dont l xiome ser d illeurs non récursif), d près le théorème 6. Nous vons insi obtenu une preuve du théorème 2, que nous rppelons ici : Théorème 2 (p.12). Tout lngge régulier est engendré pr une grmmire régulière. Ce qui précède nous permet ussi de prouver l Proposition 2, déjà énoncée p.7 : Proposition 2 (p.7). Le complémentire d un lngge régulier est ussi un lngge régulier. L intersection de deux lngges réguliers est ussi un lngge régulier. Preuve de l Proposition 2. Nous vons vu vec le théorème 5 (p.27) comment modifier un ADC fin de reconnître le lngge complémentire. Pour ce qui est de l intersection de deux lngges réguliers, il suffit de remrquer que l intersection de deux ensembles est le complémentire de l réunion des complémentires! M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 30

Preuve du théorème 8. Il suffit d ssocier un λ utomte déqut à chcun des types de lngges énumérés : lngge {λ} : les lngges de l forme {} : 1 1 2 l réunion de deux lngges L 1 et L 2 reconnus pr des λ utomtes A1 et A2 : bnliser l étt initil de chcun, rjouter un nouvel étt initil relié à chcun pr une trnsition d étiquette vide. On peut insi entrer dns A1 ou dns A2 : une chîne ser reconnue si elle pprtient à L 1 ou à L 2 : S λ λ A1 A2 l concténtion L 1.L 2 de deux lngges L 1 et L 2 reconnus pr des λ utomtes A1 et A2 : bnliser les étts finux de A1 et l étt initil de A2, et jouter des trnsitions d étiquette vide des premiers vers le deuxième : A1 λ λ A2 l étoile de Kleene d un lngge L reconnu pr un λ utomte A : en veillnt à ce que le λ utomte A reconnissnt L it son étt initil non récursif (cf. théorème 7), rjouter des trnsitions d étiquette vide llnt des étts finux vers l étt initil. Si l chîne vide n est ps dns L, il fut encore jouter une sortie à l étt initil (cr λ est dns L* ). A λ λ Exercice. Expliquer pourquoi, dns cette dernière construction (pour l étoile de Kleene), il fut éviter de prtir d un λ utomte dont l étt initil est récursif. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 31

TRANSFORMATION DES GRAMMAIRES ALGEBRIQUES Note. Ce chpitre, plus technique que les précédents, est un complément à l présenttion des lgorithmes d nlyse syntxiques. Il est indépendnt du chpitre précédent qui, tritnt des utomtes est lié essentiellement ux grmmires régulières. Le problème : on vu que l'nlyse syntxique peut être longue, et même inopérnte, selon l forme des règles de grmmire. Les règles qui commencent pr une vrible, et prticulièrement celles de l forme A Au (où u est une chîne quelconque), dites directement récursives à guche, peuvent empêcher l'nlyse syntxique d'boutir. Une solution : décrire un lgorithme permettnt de modifier l grmmire G donnée de mnière à obtenir une grmmire équivlente (c'est-à-dire qui engendre le même lngge) dont toutes les règles non vides débutent pr un symbole terminl. De plus, pour ccélérer encore l'nlyse, on peut exiger que seul l'xiome peut voir une règle vide (dns le cs où l chîne vide pprtient u lngge L(G) ). L trnsformtion consiste en une suite d opértions successives, qui seront décrites à l ide d lgorithmes et donc progrmmbles. Résumons-en les étpes consécutives : 1. suppression de l récursivité de l xiome 2. suppression des règles vides 3. suppression des enchînements de vribles 4. suppression des vribles et symboles inutiles 5. mise sous forme normle de Chomsky 6. élimintion de l récursivité directe à guche 7. mise sous forme normle de Greibch 1. Suppression de l récursivité de l xiome. Le but est d éviter un retour à l xiome u cours des dérivtions, utrement dit d éviter les dérivtions de l forme S => usv. Pour cel, l xiome ne doit ps figurer dns les règles de grmmire (à droite de l flèche, bien entendu). Si l vrible xiome S est récursive, c est-à-dire s il existe une règle de l forme A usv : rjouter une nouvelle vrible, disons S, qui ser dorénvnt l xiome (l vrible S est de ce fit bnlisée) rjouter (en tête de liste) l règle de grmmire S S Exemple. G : S S A (l xiome est S ) A b λ L nouvelle grmmire est et on évidemment L(G) = L(G ). G : S S (l xiome est S ) S S A (S est une vrible bnle) A b λ M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 32

A T LesMthémtiques.net 2. Suppression des règles vides. L opértion précédente est supposée déjà fite. Pour une meilleure lisibilité, nous supposons ussi que les vribles ont été renommées de mnière à ce que l nottion S désigne de nouveu l xiome. L existence de vribles desquelles dérive l chîne vide rlentit l nlyse syntxique. Il s git donc d éviter les dérivtions de l forme A => λ, dns l mesure du possible : en effet, si l chîne vide pprtient u lngge engendré, nous vons nécessirement une dérivtion S => λ, et celle-ci devr être rester. Un lgorithme construir récursivement l ensemble des vribles concernées. De telles dérivtions ne peuvent exister que s il y des règles vides, utrement dit des règles de l forme A λ. On peut supprimer ces règles vides à condition de compenser l effet de cette suppression pr l jout de nouvelles règles déqutes. 2.1. Construction de l ensemble NUL des vribles dont dérive l chîne vide. Voici un lgorithme construisnt récursivement l ensemble NUL. 1. initiliser NUL = { A : vrible telle que A soit une règle de grmmire} 2. répéter pour chque règle A w telle que w (NUL)* et A non encore dns NUL, fire NUL = NUL U {A} tnt que l ensemble NUL n est ps sttionnire (c est-à-dire jusqu à ce qu un pssge en revue complet de toutes les règles lisse l ensemble NUL inchngé). Notons que L(G) si et seulement si S NUL à l fin de l construction. Exemple. G : S T (l xiome est S ) T T A A b λ Les étts successifs de l ensemble sont : NUL = { A } initilistion NUL = { A, T } cr règle T NUL = { A, T, S } cr règle S 2.2. Modifiction de l grmmire. 1. Pour chque règle A w de l grmmire : Repérer dns l chîne w toutes les occurrences de vribles collectées dns NUL. Sélectionner un nombre rbitrire de ces occurrences et les supprimer : si l chîne insi obtenue n est ps vide, jouter à l grmmire l nouvelle règle insi obtenue. Fire ceci pour tous les choix possibles. Plus précisément, si l chîne w contient n occurrences de vribles figurnt dns NUL, nous vons n! choix différents (y compris ussi zéro suppression) et donc, à priori, n! règles (y compris l règle A w ) ; toutefois, l une d elles peut être vide (c est le cs si w (NUL)*) et de plus, ces règles ne sont ps nécessirement distinctes ou nouvelles. On rjoute à l grmmire toutes les règles non vides insi obtenues, si elles n y figurent ps encore. 2. Supprimer toutes les règles vides. 3. Si S (l xiome) est dns NUL, rjouter l règle S. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 33

Exemple. G : S T T T AA A b bata On obtient NUL = { A, T, S }. Comme l xiome S NUL, l chîne vide pprtient à L(G) et nous devrons rjouter, «à l min», l règle vide pour l xiome. L nouvelle grmmire est G : S T T T AA A A b bata bta baa bat ba bt Exercice. Comment les différents sous-ensembles d occurrences de vribles NUL peuvent-ils être «pssés en revue», utrement dit ordonnés (de mnière lgorithmique)? 3. Suppression des enchînements de vribles. Les opértions précédentes sont supposées déjà fites. Les règles d enchînement de vribles sont de l forme A B (où B est une vrible). Elles rllongent l nlyse syntxique en lissnt le préfixe terminl inchngé ; on cherche donc à les éliminer. Ces règles pourront être supprimées à condition que cette suppression soit compensée pr l jout de nouvelles règles déqutes. On commence pr construire, pour chque vrible, l ensemble des vribles qu on tteint pr des règles d enchînement. 3.1. Construction de l ensemble CHAIN(A) pour chque vrible A. Pr définition, CHAIN(A) = { B : vrible telle qu il existe une dérivtion A => B } Voici un lgorithme construisnt récursivement cet ensemble. 1. initiliser CHAIN(A) = { A } 2. répéter s il y une règle B C vec B CHAIN(A) telle que C soit une vrible non encore dns CHAIN(A), fire CHAIN(A) = CHAIN(A) U { C } tnt que l ensemble CHAIN(A) n est ps sttionnire (c est-à-dire jusqu à ce qu un pssge en revue complet de toutes les règles lisse l ensemble inchngé). 3.2. Modifiction de l grmmire. 1. Pour chque vrible A, pour chque vrible B CHAIN(A) pour chque règle B w telle que w ne soit ps une vrible, rjouter l règle A w 2. Supprimer toutes les règles d enchînement de vribles. Exemple. G : S T T T AA A A b M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 34

Nous obtenons CHAIN(S) = {S, T, A} CHAIN(T) = {T, A} CHAIN(A) = {A} et l nouvelle grmmire est G : S T AA b T T AA b A b 4. Suppression des vribles et symboles inutiles. Les opértions précédentes sont supposées déjà fites. Un élément (vrible ou symbole) X V U est dit utile s il existe une dérivtion S => uxv => w * En prtnt de l xiome, il fut donc rriver à une chîne terminle en trnsitnt pr une chîne dns lquelle figure X. Le but de cette étpe est de «fire le ménge» prmi les vribles, près les suppressions de règles fites précédemment. On commence pr collecter dns un ensemble TERM les vribles dont dérivent des chînes terminles, puis on construit le sous-ensemble ATTEINT des vribles qu'on peut tteindre à prtir de l xiome. Les vribles qui ne sont ps dns ATTEINT seront supprimées, vec leurs règles de grmmire. Pr cette opértion, des symboles terminux peuvent ussi voir dispru, s ils ne figurent ps dns les règles restntes. 4.1. Construction de l ensemble des vribles dont dérivent des chînes terminles Soit l'ensemble des vribles dont dérivent des chînes terminles TERM = { A : vrible telle qu il existe une dérivtion A => w *} Il est obtenu récursivement pr l lgorithme suivnt. 1. initiliser TERM = { A : vrible telle qu il existe une règle A u vec u * } 2. répéter s il y une règle A u vec u ( U TERM )* et A non encore dns TERM, fire TERM = TERM U { A } tnt que l ensemble TERM n est ps sttionnire. 4.2. Modifiction de l grmmire. Elle est simplissime : on ne grde que les vribles collectées dns TERM, insi que les règles qui les concernent. 4.3. Construction de l ensemble des vribles qu on tteint à prtir de l xiome. L étpe TERM est supposée fite ; on peut donc obtenir une chîne terminle à prtir de chque vrible restnte de l grmmire. On définit l ensemble ATTEINT = { A : vrible telle qu il existe une dérivtion S => uav } Cet ensemble est construit récursivement de l mnière suivnte. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 35

1. initiliser ATTEINT = { S } 2. répéter pour chque une règle A u vec A ATTEINT, pour chque vrible B figurnt dns u fire ATTEINT = ATTEINT U { B } tnt que l ensemble ATTEINT n est ps sttionnire. 4.4. Modifiction de l grmmire. Comme uprvnt, on ne grde que les vribles collectées dns ATTEINT, et les règles qui les concernent. De ce fit, des symboles terminux peuvent éventuellement être supprimés : c est le cs pour ceux qui ne figurient que dns des règles concernnt des vribles supprimées. 5. Forme normle de Chomsky (1959). Définition. Une grmmire G est sous forme normle de Chomsky si toutes ses règles sont de l'un des types suivnts : A BC où B, C V {S} A où S où S est l xiome (cette règle est utilisée lorsque est dns le lngge). Théorème 9. Toute grmmire lgébrique est équivlente à une grmmire sous forme normle de Chomsky. Preuve du théorème 9. Fire, si nécessire, les trnsformtions précédentes 1, 2, 3 et 4. Il reste à modifier les règles non conformes A w où w ( U V)+. Comme les règles d enchînements de vribles ont déjà été supprimées, l chîne w est de longueur supérieure ou égle à deux. Tout d bord, on introduit des nouvelles vribles de mnière à pouvoir remplcer w pr une chîne de même longueur mis sns symboles terminux. Ensuite, les règles de longueur strictement supérieure à deux pourront être remplcées pr des règles plus courtes grâce à des vribles supplémentires introduites dns ce but. Exemple. Soit l règle A BAdC où, d et A, B, C V. 1) On introduit des vribles nouvelles pour chcun des symboles terminux figurnt dns l chîne. L règle précédente est insi remplcée pr le groupe de règles A A BAD C A D d 2) Il reste à modifier l règle de longueur supérieure à deux A A BAD C. En introduisnt encore de nouvelles vribles, cette règle peut être remplcée pr le groupe de règles suivntes, conformes u modèle de Chomsky M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 36

A A A 1 A 1 BA 2 A 2 AA 3 A 3 D C A B A D C 6. Forme normle de Greibch (1965). Définition. Une grmmire G est sous forme normle de Greibch si toutes ses règles sont de l'un des types suivnts : A où A A 1 A 2 A n où et A 1, A 2,, A n V {S} S où S est l xiome (cette règle est utilisée lorsque est dns le lngge). L intérêt de cette forme de grmmire est évident : le préfixe terminl des chînes est rllongé à chque utilistion d une règle de grmmire. Théorème 10. Toute grmmire lgébrique est équivlente à une grmmire sous forme normle de Greibch. 6.1. Le pln de l preuve du théorème 10. On fit, si nécessire, les trnsformtions précédentes 1, 2, 3, 4 et 5. A prtir d une grmmire sous forme normle de Chomsky, il reste donc à modifier les règles de l forme A BC. L idée est, bien entendu, de réécrire l première vrible vec toutes les règles qui l concernent, et ceci de mnière répétée jusqu à obtenir des règles commençnt pr un symbole terminl. Mlheureusement, on peut entrer insi dns une boucle sns fin ; pr exemple vec le groupe de règles A BC B AD on obtiendr A ADC puis A BCDC etc Dns cette sitution, il pprît u cours des réécritures successives des règles dites directement récursives à guche c est-àdire de l forme A Au. Dns une étpe préliminire un peu technique, nous llons voir comment il est possible de supprimer les règles directement récursives à guche à l ide d une nouvelle vrible (qui ser, elle, directement récursive à droite, ce qui ne présente ucun inconvénient). Après voir fixé un ordre pour les vribles, cette technique nous permettr de progresser vers une forme «presque Greibch» dns lquelle les règles de grmmire pour une vrible A donnée commencent soit pr un symbole terminl, soit pr une vrible dont le numéro d ordre est strictement supérieur à celui de A. Dns cette sitution, les réécritures des règles ne peuvent qu ugmenter encore le numéro de l vrible en préfixe, et boutir à un symbole terminl en préfixe, près un nombre fini d étpes. 6.2. L technique d élimintion de l récursivité directe à guche. Définition. Une règle directement récursive à guche est une règle de l forme A où u ( U V) +. Au M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 37

Nous vons vu que ce type de règle est prticulièrement gênnt pour l nlyse syntxique, et nous llons décrire une technique permettnt de remplcer l récursivité directe à guche pr de l récursivité directe à droite, qui ne présente ucun désvntge prticulier. Considérons l ensemble des règles pour une vrible A donnée. S il y une (ou plusieurs) règles directement récursives à guche, il y ussi d utres règles qui ne le sont ps, puisque A n ps été éliminée lors de l trnsformtion 4 (suppression des vribles inutiles). Une de ces utres règles est nécessirement utilisée à l suite d une séquence d pplictions de règles directement récursives à guche. En introduisnt une nouvelle vrible, il est possible d obtenir (vec une récursivité directe à droite sur cette vrible uxiliire) toutes les chînes qui dérivent de A pr les règles directement récursives à guche. Un exemple : A Au v w où v et w ne commencent ps pr A (ce sont les deux règles non récursives à guche). En ppliqunt l première règle n fois de suite (n 1), on produit l chîne Au n. On poursuit soit vec l deuxième règle, ce qui nous donne v.u n, soit vec l troisième, et nous obtenons insi w.u n. Il fut pouvoir obtenir ces chînes v.u n et w.u n d une utre mnière à prtir de A. Pour cel, il nous suffit de remplcer toutes les règles concernnt A pr le groupe de règles suivnt : A vz wz v w Z uz u ( Z est une nouvelle vrible introduite) On vérifie que l vrible uxiliire sert à produire toutes les chînes de l forme u n, et celles-ci sont ensuite concténées à u ou à v. Elle est directement récursive à droite. Ce petit exemple peut fcilement se générliser u cs où il y un nombre quelconque de règles : A Au 1 Au 2 Au p v 1 v 2 v q vec p règles directement récursives à guche, et q règles qui ne le sont ps. On obtient les nouvelles règles A Z v 1 Z v q Z v 1 v 2 v q u 1 Z u p Z u 1 u p Exemple. Voici un utre exemple, concret, sous forme normle de Chomsky, vec deux règles directement récursives à guche : A AB AC BA Les chînes dérivées de A en ppliqunt uniquement les règles directement récursives à guche sont A.{B, C} +. Il fut ensuite ppliquer vec l troisième ou l qutrième règle, ce qui nous donne.{b, C} + et BA.{B, C} +. On peut donc remplcer les règles pour A pr le groupe de règles A Z BAZ BA Z BZ CZ B C ( Z désigne l nouvelle vrible introduite) On peut remrquer à cette occsion que ces nouvelles règles ne sont plus sous forme de Chomsky : nous obtenons des chînes de vribles vec éventuellement un symbole terminl en préfixe ; de plus, des règles d enchînements de vribles sont insi répprues, mis uniquement pour l vrible uxiliire qui été introduite. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 38

6.3. De l forme de Chomsky à l forme «presque Greibch». Commençons pr choisir un ordre sur les vribles, l xiome étnt l première vrible. Définition. Une grmmire dont les vribles sont ordonnées est de l forme presque Greibch si les règles sont de l un des types suivnts : S A.u où et u V* A Bu où u V + et B est une vrible telle que n (B) > n (A). Notre but est d rriver à cette forme, à prtir d une forme de Chomsky. On procède récursivement, en suivnt l ordre des vribles. On commence donc pr l xiome : n (S)=1. Comme l xiome est non récursif (cf. trnsformtion 1), ses règles sont déjà de l forme «presque Greibch» voulue. Supposons que les i-1 premières vribles ont déjà été tritées et sont sous l forme «presque Greibch». Considérons les règles pour l i ème vrible. On réécrit celles qui commencent pr une vrible dont le n est strictement inférieur à i vec les règles déjà obtenues : ceci ugmente le n de l vrible figurnt en préfixe, ou donne un symbole terminl en préfixe. Cette opértion de réécriture est répétée jusqu à ce qu ucune règle ne commence plus pr une vrible dont le n est strictement inférieur à i. Pour notre i ème vrible, nous vons mintennt des règles qui sont directement récursives à guche (ce sont celles qui ont l i ème vrible en préfixe), ou qui sont déjà sous l forme «presque Greibch» voulue. On supprime l récursivité directe à guche pour l i ème vrible (cf. 6.2) en introduisnt une nouvelle vrible d hoc (plcée en fin de liste). Toutes les règles pour l i ème vrible sont mintennt de l forme souhitée. Le processus s rrête cr les nouvelles vribles introduites n uront ps de règle directement récursive à guche, puisque ces vribles ne figurent en préfixe d ucune règle pour les vribles précédentes. On n joute donc ps indéfiniment de nouvelles vribles 6.4. De l forme «presque Greibch» à l forme de Greibch. Pour chever l preuve du théorème 10, il suffit de prtir d une grmmire sous l forme presque Greibch. Seules les règles qui commencent pr une vrible doivent encore être modifiées. Leur réécriture vec les règles concernnt cette vrible en préfixe ne peut qu ugmenter le n de l vrible en préfixe, ou bien donner un symbole terminl en préfixe. Comme il n y qu un nombre fini de vribles et de règles, l trnsformtion est chevée près un nombre fini de telles réécritures.. M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 39

NETOGRAPHIE Une présenttion historique du FORTRAN http://community.computerhistory.org/scc/projects/fortran/ http://www.ibiblio.org/pub/lnguges/fortrn/ch1-1.html Une biogrphie et une présenttion historique des trvux de John W. Bckus http://www.thocp.net/biogrphies/bckus_john.htm http://www-groups.dcs.st-nd.c.uk/~history/mthemticins/bckus.html Une présenttion de l nottion BNF (BNF, "Bckus-Nur Form") pour les grmmires, introduite pour le lngge ALGOL58 et mise u point en 1960 pr John Bckus et Peter Nur : http://cui.unige.ch/db-reserch/enseignement/nlyseinfo/aboutbnf.html Un site pour voir de quoi l'ir une "vrie" grmmire : on y trouve une grmmire du PASCAL http://www.irietools.com/iriepscl/progref534.html#ppendix_h_grmmr et, plus générlement, des informtions sur l structure du lngge PASCAL : http://www.irietools.com/iriepscl/progref.html Pour un perçu historique plus générl («musée virtuel») de l'informtique : http://vmoc.museophile.org/ http://www.fh-jen.de/~kleine/history/ Une biogrphie du mthémticien S.C. Kleene http://www.onelng.com/encyclopedi/index.php/stephen_kleene et celle de Nom Chomsky, un personnge présenté dns toute s diversité et ses évolutions u fil des ns http://www.onelng.com/encyclopedi/index.php/nom_chomsky ------------------ Les références bibliogrphiques suivntes sont celles des publictions originelles des résultts fondmentux qui ont été mentionnés dns le cours. Introduction pr S. Kleene, en 1956, de l notion de lngge régulier : Kleene, S., Representtion of Events in Nerve Nets nd Finite Automt in Automt Studies (1956) eds. C. Shnnon nd J. McCrthy. Les trvux fondmentux de N. Chomsky sur l description et l clssifiction des lngges et grmmires : 1. Chomsky, N., Three models for the description of lnguge, IRE Trnsctions on Informtion Theory, 2 (1956), pges 113-124 2. Chomsky, N., On certin forml properties of grmmrs, Informtion nd Control, 1 (1959), pges 91-112 L'rticle de Sheil A. Greibch introduisnt, en 1965, l forme normle de Greibch, été l'une de ses premières publictions : Greibch, S., A New Norml-Form Theorem for Context-Free Phrse Structure Grmmrs, Journl of the ACM (JACM), Volume 12 Issue 1 (1965) M.P. Muller - LANGAGES - GRAMMAIRES - AUTOMATES pge 40