3. Grammaires : Backus-Naur Form Au départ : Backus-Naur Form : Métalangage introduit par ALGOL60 Basée sur la définition inductive. Moyen simple et élégant de décrire toutes les phrases permises d un langage (de programmation) Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 1/30
3.1. Backus-Naur Form Exemple (en langage naturel) : <phrase > : := <sujet ><verbe ><objet > <sujet > : := <déterminant ><nom > <objet > : := <déterminant ><nom > <verbe > : := mangent voient <déterminant > : := les des <nom > : := chats lions souris jambons Exemple de phrase permise : les jambons mangent des lions <phrase > : := <sujet > <verbe ><objet > <déterminant ><nom ><verbe > <objet > les ><nom ><verbe ><objet >... Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 2/30
3.1. Backus-Naur Form On représentera une phrase par un arbre syntaxique. Cet arbre constitue une preuve que la phrase appartient bien au langage. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 3/30
3.1. Backus-Naur Form Notation moderne : la forme est diffférente : au lieu de : := Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 4/30
3.1. Backus-Naur Form Phrase Sujet Verbe Objet Sujet Déterminant Nom Objet Déterminant Nom Verbe mangent voient Déterminant les des Nom chats lions souris jambons Ou, plus simplement : P SVO S DN O DN V mangent voient D les des N chats lions souris jambons Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 5/30
3.1. Backus-Naur Form Règles de grammaire : P SVO S DN O DN V mangent voient D les des N chats lions souris jambons Dérivation d une phrase ( mot du langage) : les jambons mangent des lions P SVO DNVO les NVO les jambons VO les jambons mangent O les jambons mangent DN les jambons mangent des N les jambons mangent des lions Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 6/30
3.1. Backus-Naur Form Exemple 2 : le langage des expressions artithmétiques simplissimes Start Exp Exp Exp + Exp Exp (Exp) Exp un nombre Exemple de construction possible : Start Exp (Exp) (Exp + Exp) (24 + Exp) (24+32) On a montré que l expression (24+32) appartient bien au langage défini par la grammaire Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 7/30
3.2. Définition formelle des grammaires Définition Une grammaire est un quadruplet G = (N, T, P, S) où : N est l ensemble des symboles non terminaux T est l ensemble des symboles terminaux : caractères de l alphabet P est un ensemble de règles de production, de la forme α β, avec α (N T ) +, β (N T ) S = symbole de départ appelé l axiome Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 8/30
3.2. Définition formelle des grammaires Notations et remarques Pour caractères de N : on utilisera (habituellement) des majuscules. Pour caractères de T : on utilisera (habituellement) des minuscules. Pour les règles de P, nos règles seront de la forme X β, avec X N et β (N T ). L axiome, noté S (habituellement), est la base de la définition inductive, et c est la racine de tout arbre de dérivation valide Souvent, on décrit une grammaire seulement par ses règles! Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 9/30
3.2. Définition formelle des grammaires On peut avoir des règles de production dont la partie droite est réduite à ɛ ; on appelera ces règles des ɛ-productions. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 10/30
3.2. Langage engendré par une grammaire Définition Pour une grammaire G, on note L(G) le langage engendré par G : c est l ensemble des mots que l on peut définir à partir de l axiome de G en appliquant un nombre fini de fois des règles de G. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 11/30
3.2. Définition formelle des grammaires Exemple : Grammaire G 1 : S as S bs S a S b S ɛ Quel langage décrit cette grammaire? Comment pourrait-on simplifier cette grammaire? Que se passe-t-il si on retire l ɛ production? Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 12/30
3.2. Définition formelle des grammaires Exemple 2 : On veut traduire le langage sur Σ = {a,b} où tous les mots sont de la forme ω = α aa β Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 13/30
3.2. Définition formelle des grammaires On va utiliser la grammaire G 2 : S AaaB A aa ba ɛ B ab bb ɛ Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 14/30
3.2. Définition formelle des grammaires Pour le mot : ω = abbaabb S AaaB A aa A ba A ɛ B ab B bb B ɛ S A a a B a A b B b A b B b A ε Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 15/30
3.2. Définition formelle des grammaires Grammaire sous forme factorisée S AaaB A aa A ba A ɛ B ab B bb B ɛ devient : S AaaB A aa ba ɛ B ab bb ɛ Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 16/30
3.2. Définition formelle des grammaires Les règles de production ont une numérotation implicite (de 1 à 7 ici). S AaaB A aa ba ɛ B ab bb ɛ S AaaB (1) A aa (2) ba(3) ɛ(4) B ab(5) bb(6) ɛ(7) Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 17/30
Arbre syntaxique Définition Un arbre syntaxique est un arbre dont la racine est l axiome (S), dont les noeuds internes sont étiquetés par des symboles de N, et dont les feuilles sont étiquetées par des symboles de T ou par le mot vide ɛ. Chaque noeud interne correspond à une règle de production. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 18/30
Exemple avec G 1 : S as bs a b ɛ mot ω = abab arbre syntaxique : S (1) a S (2) b S (1) a S (4) b Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 19/30
3.2. Définition formelle des grammaires Pour un langage donné, il n y a pas de grammaire unique!!!! Exemple : les deux grammaires suivantes décrivent le même langage : G 1 : S as bs a b ɛ G 2 : S as bs ɛ Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 20/30
3.2. Définition formelle des grammaires Définition On dit que deux grammaires G 1 et G 2 sont équivalentes, noté G 1 G 2, si elles engendrent le même langage, i.e. si L(G 1 ) = L(G 2 ). Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 21/30
3.3. Dérivations Si α β est une production de P, on note γ 1 αγ 2 γ 1 βγ 2. On dit qu on a procédé à une dérivation. On dit que γ 1 βγ 2 se dérive de γ 1 αγ 2. Exemple : S AaaA et AaaA aaaaa sont des dérivations pour la grammaire G 2 (S AaaA ; A aa ba ɛ). On peut étiqueter la dérivation par le numéro de la règle de production utilisée. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 22/30
3.3. Dérivations Pour un nombre fini de dérivations successives γ 1 αγ 2 γ 1 βγ 2 ω, on écrit γ 1 αγ 2 ω. Exemple : S AaaA aaaaa ou S aaaaa S abbaabb Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 23/30
3.3. Dérivations Définition On appelle dérivation gauche une suite de dérivations obtenues en choisissant à chaque étape le symbole non terminal le plus à gauche. On définit de façon similaire la dérivation droite. Exemple de dérivation gauche avec G 2 : S AaaB ; A aa ba ɛ ; B ab bb ɛ : S (1) AaaB (2) aaaab (4) aaab (6) aaabb (7) aaab Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 24/30
3.3. Dérivations Définition On appelle langage engendré par une grammaire G = (N, T, P, S) l ensemble des mots ω de T tels que S ω. On le note L(G). On dit qu un mot ω est engendré par une grammaire G si ω L(G). Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 25/30
3.4. Grammaires ambigües Définition Une grammaire G est dite ambiguë s il existe un mot ω de L(G) qui admet au moins deux arbres syntaxiques différents. Exemple : G 1 : G 1 : S as bs a b ɛ Le mot ω = ab admet deux arbres syntaxiques différents : S a b (1) S (2) S (5) a S (1) S (4) ε ε Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 26/30
3.4. Grammaires ambigües Définition Un langage est dit ambigü si toutes les grammaires qui l engendrent sont ambiguës. Exemple : G 1 : S as bs a b ɛ G 2 : S as bs ɛ L(G 1 ) = L(G 2 ) ; G 1 est ambiguë mais G 2 n est pas ambiguë, donc L(G 1 ) = L(G 2 ) n est pas un langage ambigü. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 27/30
3.5. Grammaires régulières Définition Une grammaire G est dite régulière si toutes ses règles de production sont de la forme : A αb, avec : A N, α T, B N ou B = ɛ Exemple : G 1 : S as bs a b ɛ Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 28/30
3.6. Décidabilité Définition Un problème est dit indécidable si il n existe pas (et il ne peut pas exister) d algorithme générique pour le résoudre. Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 29/30
3.6. Décidabilité Les problèmes suivants sur les grammaires sont indécidables : Deux grammaires G 1 et G 2 sont-elles équivalentes? Deux grammaires engendrent-elles des langages ayant un mot en commun? Y a-t-il des mots qu une grammaire n engendre pas? Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 30/30
3.7. Hiérarchie de Chomsky sur les grammaires Type Nom Type de production 0 Langages récursivement X Y énumérables 1 Langages contextuels X Y 2 Langages context-free ou algébriques 3 Langages rationnels (réguliers) X N +, Y (N T ) X N +, Y (N T)*, Y X X Y X N, Y (N T)* X Y A αb, avec : A N, α T, B N ou B = ɛ Anne Berry, Cours de Théorie des Langages Partie 1 : 3. Grammaires 31/30