Grammaires - L`Université Paris Descartes

Transcription

Grammaires - L`Université Paris Descartes
Théorie des langages
Grammaires
Elise Bonzon
[email protected]
LIPADE - Université Paris Descartes
http://www.math-info.univ-paris5.fr/vbonzon/
1
Grammaires
1. Principe de base
2. Définitions
3. Arbres de dérivation
4. Caractérisation du langage généré par une grammaire
5. Types de grammaires
2
Principe de base
Principe de base
• Ensemble de règles pour générer les mots du langage
• Sous la forme de règles de réécriture
→ Remplacer une séquence de symboles par une autre séquence
• Mots générés = mots obtenus à partir d’un symbole spécial appelé
symbole de départ ou axiome
3
Exemple
• Considérons la phrase suivante :
La vieille dame regarde la petite fille
• Peut-on construire une grammaire qui permette de générer cette
phrase ?
4
Exemple
• Considérons la phrase suivante :
La vieille dame regarde la petite fille
• Peut-on construire une grammaire qui permette de générer cette
phrase ?
• Alphabet : Σ = { la, vieille, petite, dame, fille,
regarde}
4
Exemple
• Considérons la phrase suivante :
La vieille dame regarde la petite fille
• Peut-on construire une grammaire qui permette de générer cette
phrase ?
• Alphabet : Σ = { la, vieille, petite, dame, fille,
regarde}
• Structure de la phrase :
• Un groupe sujet (article, adjectif, nom)
• Un verbe
• Un groupe complément d’objet (article, adjectif, nom)
4
Exemple
Règles de production
1. hPhrasei → hSujetihVerbeihComplémenti
2. hSujeti → hGroupe Nominali
3. hComplémenti → hGroupe Nominali
4. hGroupe Nominali → hArticleihNomi
5. hGroupe Nominali → hArticleihAdjectifihNomi
6. hArticlei → la
7. hNomi → dame | fille
8. hAdjectifi → vieille | petite
9. hVerbei → regarde
5
Définitions
Grammaire
Grammaire
Une grammaire est définie par un quadruplet G = hV , Σ, P, Si où
• V est un alphabet
• Σ ⊆ V est l’ensemble des symboles terminaux
• V \ Σ est l’ensemble des symboles non terminaux
• S ∈ V \ Σ est le symbole de départ ou axiome
• P ⊆ (V + × V ∗ ) est l’ensemble (fini) de règles de production
6
Grammaire
Grammaire
Une grammaire est définie par un quadruplet G = hV , Σ, P, Si où
• V est un alphabet
• Σ ⊆ V est l’ensemble des symboles terminaux
• V \ Σ est l’ensemble des symboles non terminaux
• S ∈ V \ Σ est le symbole de départ ou axiome
• P ⊆ (V + × V ∗ ) est l’ensemble (fini) de règles de production
Notations :
• Σ : lettres minuscules
• V \ Σ : lettre majuscules
• Règles de production : α → β
• Signification intuitive : l’élément α ∈ V + peut être remplacé par
β ∈ V∗
6
Grammaire : exemple
Soit G1 = hV , Σ, P, Si avec
• Σ = {:=, a, b, c, +, ∗, ), (}
• V \ Σ = {S, I , E }
• Axiome S
• 8 règles de production :
S → I := E
I →b
E →E +E
E → (E )
I →a
I →c
E →E ∗E
E →I
7
Grammaire : exemple
Soit G1 = hV , Σ, P, Si avec
• Σ = {:=, a, b, c, +, ∗, ), (}
• V \ Σ = {S, I , E }
• Axiome S
• 8 règles de production :
S → I := E
I →b
E →E +E
E → (E )
I →a
I →c
E →E ∗E
E →I
On peut aussi écrire I → a|b|c.
7
Grammaire : exemple
Soit G2 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production :
• S → aSa
• S → SbS
• S →
8
Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production : S → aS|aSbS|
9
Grammaire hors contexte
Grammaire hors contexte
Soit G = hV , Σ, P, Si. G est dite hors contexte (context-free) si
toutes les règles sont de la forme
A→β
où A ∈ V \ Σ (symbole non terminal), et β ∈ V ∗
10
Dérivation
Dérivation en une étape
Soit G = hV , Σ, P, Si, u ∈ V + et v ∈ V ∗ . G permet de dériver v de u
en une étape, noté u −
→ v , si et seulement si
G
0
• u = xu y
• v = xv 0 y
• u 0 → v 0 est dans P
11
Dérivation
Dérivation en une étape
Soit G = hV , Σ, P, Si, u ∈ V + et v ∈ V ∗ . G permet de dériver v de u
en une étape, noté u −
→ v , si et seulement si
G
0
• u = xu y
• v = xv 0 y
• u 0 → v 0 est dans P
Dérivation en plusieurs étapes
∗
G permet de dériver v de u en plusieurs étapes, noté u −
→ v , si et
seulement si ∃k ≥ 0 et ∃v0 , . . . , vk ∈ V ∗ tels que
G
• u = v0
• v = vk
• vi −
→ vi+1 pour 0 ≤ i < k
G
11
Langage généré par une grammaire
Mots générés par une grammaire
Soit G = hV , Σ, P, Si.
Les mots générés par G sont les mots v ∈ Σ∗ (symboles terminaux)
∗
qui peuvent être dérivés à partir de l’axiome : S −
→ v.
G
12
Langage généré par une grammaire
Mots générés par une grammaire
Soit G = hV , Σ, P, Si.
Les mots générés par G sont les mots v ∈ Σ∗ (symboles terminaux)
∗
qui peuvent être dérivés à partir de l’axiome : S −
→ v.
G
Langage généré par une grammaire
Soit G = hV , Σ, P, Si.
Le langage généré par G , noté L(G ) est l’ensemble des mots générés
par G .
∗
L(G ) = {v ∈ Σ∗ |S −
→ v}
G
12
Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production : S → aS|aSbS|
13
Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production : S → aS|aSbS|
On veut montrer que aaba ∈ L(G )
13
Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production : S → aS|aSbS|
On veut montrer que aaba ∈ L(G )
S −→ aSbS −→ aSbaS −→ aSba −→ aaSba −→ aaba −→ aaba
G3
G3
G3
G3
G3
G3
13
Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
• Σ = {a, b}
• V \ Σ = {S}
• Axiome S
• 3 règles de production : S → aS|aSbS|
On veut montrer que aaba ∈ L(G )
S −→ aSbS −→ aSbaS −→ aSba −→ aaSba −→ aaba −→ aaba
G3
G3
G3
G3
G3
G3
Seconde dérivation possible :
S −→ aSbS −→ aaSbS −→ aabS −→ aaba −→ aaba
G3
G3
G3
G3
G3
13
Dérivation la plus à gauche
Dérivation la plus à gauche (LPG)
Soit G = hV , Σ, P, Si, et w ∈ Σ∗
∗
S−
→ w est une dérivation la plus à gauche (LPG) si, à chaque étape
G
de la dérivation, c’est la variable la plus à gauche qui est dérivée. Donc,
si ∃w1 , . . . , wn tels que
• S = w0 −
→ w1 −
→ ... −
→ wn −
→ wn+1 = w , et
G
G
G
G
• ∀i, 0 ≤ i ≤ n
• wi = ui Ai vi ,
• wi+1 = ui αi vi et
• Ai → αi
alors ui ∈ Σ∗ (ui est un symbole terminal, et ne contient donc pas de
variable).
14
Arbres de dérivation
Arbres de dérivation pour une grammaire hors contexte
Arbres de dérivation
Soit G = hV , Σ, P, Si une grammaire hors contexte. Un arbre D est un
arbre de dérivation pour un mot w à partir de l’axiome S si :
• La racine de D est étiquetée par S (l’axiome)
• Les feuilles de D sont étiquetées par des éléments de Σ ∪ (symboles terminaux)
• L’étiquette d’une feuille est le mot vide seulement si la feuille est fille
unique
• Les nœuds de D qui ne sont pas des feuilles sont étiquetés par un
symbole non terminal (V \ Σ)
• Pour tout nœud, si Y est l’étiquette du nœud, et si Z1 , . . . , Zn sont
les nœuds de ses fils, dans cet ordre, alors Y → Z1 . . . Zn est une
règle
• Le mot des feuilles de D, c’est-à-dire le mot obtenu en concaténant
les étiquettes des feuilles de la gauche vers la droite, est le mot w
15
Arbres de dérivation : exemple
a := a + b ∗ a ∈ L(G1 )
S
I
a
:=
E
E
+
E
I
E
∗
a
I
I
b
a
E
16
Arbres de dérivation : exemple
aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot.
S
a
S
a
S
b
S
a
S
a
S
S
a
S
b
S
a
S
17
Arbres de dérivation : exemple
aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot.
S
a
S
a
S
b
S
a
S
a
S
S
a
S
b
S
a
S
La grammaire est ambigüe.
17
Grammaires ambigües
Ambiguité
Une grammaire G est ambigüe s’il existe un mot de L(G ) qui a au
moins deux dérivations LPG à partir de S (et donc deux arbres de
dérivation).
Dans le cas contraire G est non ambigüe.
18
Grammaires ambigües
Ambiguité
Une grammaire G est ambigüe s’il existe un mot de L(G ) qui a au
moins deux dérivations LPG à partir de S (et donc deux arbres de
dérivation).
Dans le cas contraire G est non ambigüe.
G1 est ambigüe.
18
Grammaires ambigües
Théorème
∗
Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si et
G
seulement si il existe un arbre de dérivation qui génère w .
19
Grammaires ambigües
Théorème
∗
Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si et
G
seulement si il existe un arbre de dérivation qui génère w .
Langage ambigüe
Un langage est ambigüe de façon inhérente si toutes les grammaires
qui l’engendrent sont ambigües.
On dira qu’un langage est non ambigüe s’il n’est pas ambigüe de façon
inhérente.
19
Grammaires ambigües
Théorème
∗
Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si et
G
seulement si il existe un arbre de dérivation qui génère w .
Langage ambigüe
Un langage est ambigüe de façon inhérente si toutes les grammaires
qui l’engendrent sont ambigües.
On dira qu’un langage est non ambigüe s’il n’est pas ambigüe de façon
inhérente.
Lemme de Parikh
Il existe au moins un langage ambigüe de façon inhérente.
L = {ap bq c r |p = q ou q = r avec p, q, r ≥ 1}
19
Caractérisation du langage
généré par une grammaire
Caractérisation d’un langage
Problème
Soit une grammaire G qui génère le langage L(G ).
Soit L une caractérisation du langage généré.
On veut prouver que L = L(G ).
20
Caractérisation d’un langage
Problème
Soit une grammaire G qui génère le langage L(G ).
Soit L une caractérisation du langage généré.
On veut prouver que L = L(G ).
Grammaire G4
1. S → aSa
2. S → bSb
L : ensemble des palindromes de longueur paire sur l’alphabet {a, b}.
L = {w ∈ X ∗ |w = w̃ et |w | = 2n, n ∈ IN}
3. S → 20
Caractérisation d’un langage
Problème
Soit une grammaire G qui génère le langage L(G ).
Soit L une caractérisation du langage généré.
On veut prouver que L = L(G ).
Grammaire G4
1. S → aSa
2. S → bSb
L : ensemble des palindromes de longueur paire sur l’alphabet {a, b}.
L = {w ∈ X ∗ |w = w̃ et |w | = 2n, n ∈ IN}
3. S → On doit montrer l’égalité de ces deux langages, on procède par double
inclusion.
• L(G4 ) ⊆ L. Par récurrence sur la taille des mots
• L ⊆ L(G4 ). Séquence de dérivation pour obtenir un mot de L
20
Types de grammaires
Hiérarchie de CHOMSKY
Type 0 Pas de restriction
Type 1 Grammaires contextuelles (ou sensibles au contrôle)
(Context-sensitive)
α → β, |α| ≤ |β|, α ∈ V + , β ∈ V ∗
Type 2 Grammaires hors-contexte (Context-Free)
A → β, A ∈ V \ Σ, β ∈ V ∗
Type 3 Grammaires régulières (ou linéaires à droite)
A → wB
A→w
A, B ∈ V \ Σ non terminaux
w ∈ Σ∗
terminaux
21
Hiérarchie de CHOMSKY
T3
Réguliers
Automate fini
T2
Context Free
Automate à pile
T1
Context sensitive
Machine de Turing
T0
22