Cours de Théorie des Langages Partie 1 : 3. Grammaires
Transcription
Cours de Théorie des Langages Partie 1 : 3. Grammaires
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 G1 : 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 G2 : 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→ A a S a A b b A a B b 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 G1 : S → aS|bS|a|b| mot ω = abab arbre syntaxique : S (1) a S (2) S b (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 : G1 : S → aS|bS|a|b| G2 : 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 G1 et G2 sont équivalentes, noté G1 ∼ G2 , si elles engendrent le même langage, i.e. si L(G1 ) = L(G2 ). 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 G2 (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 G2 : S → AaaB ; A → aA|bA| ; B → aB|bB| : (1) (2) (4) (6) (7) S ⇒ AaaB ⇒ aAaaB ⇒ aaaB ⇒ aaabB ⇒ 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 : G1 : G1 : S → aS|bS|a|b| Le mot ω = ab admet deux arbres syntaxiques différents : S (1) a S (1) S (2) a b S S (4) (5) ε 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 : G1 : S → aS|bS|a|b| G2 : S → aS|bS| L(G1 ) = L(G2 ) ; G1 est ambiguë mais G2 n’est pas ambiguë, donc L(G1 ) = L(G2 ) 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 : G1 : 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 G1 et G2 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 0 Langages récursivement énumérables 1 Langages contextuels 2 Langages context-free ou algébriques Type de production X →Y X ∈ N+ , Y ∈ (N ∪ T )∗ X→Y X ∈ N+ , Y∈(N∪T)* , |Y|≥|X| X→Y X ∈ N , Y∈(N∪T)* X→Y 3 Anne Berry, Langages (réguliers) rationnels A → αB, avec : A ∈ N, α ∈ T ∗ , B ∈ N Cours de Théorie des Langages Partie 1 : 3. Grammaires ou B = 31/30