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