Vous êtes sur la page 1sur 42

Théorie des langages

Grammaires
Elise Bonzon
http://web.mi.parisdescartes.fr/vbonzon/
elise.bonzon@parisdescartes.fr

Théorie des langages


1 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


2 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


3 / 27
N
Grammaires

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

Théorie des langages


4 / 27
N
Grammaires

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)

Théorie des langages


5 / 27
N
Grammaires

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)

Théorie des langages


5 / 27
N
Grammaires

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)

Théorie des langages


5 / 27
N
Grammaires

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

Théorie des langages


6 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


7 / 27
N
Grammaires

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

Théorie des langages


8 / 27
N
Grammaires

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 ∗

Théorie des langages


8 / 27
N
Grammaires

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 →a
I →b I →c
E →E +E E →E ∗E
E → (E ) E →I

Théorie des langages


9 / 27
N
Grammaires

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 →a
I →b I →c
E →E +E E →E ∗E
E → (E ) E →I
On peut aussi écrire I → a|b|c.

Théorie des langages


9 / 27
N
Grammaires

Grammaire : exemple

Soit G2 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aSa
S → SbS
S→

Théorie des langages


10 / 27
N
Grammaires

Grammaire : exemple

Soit G3 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aS
S → aSbS
S→

Théorie des langages


11 / 27
N
Grammaires

Grammaire hors contexte

Grammaire hors contexte


Soit G = hV , Σ, P, Si. G est dite hors contexte (context-free) si tous
les règles sont de la forme
A→β
où A ∈ V \ Σ (symbole non terminal), et β ∈ V ∗

Théorie des langages


12 / 27
N
Grammaires

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
u = xu 0 y
v = xv 0 y
u 0 → v 0 est dans P

Théorie des langages


13 / 27
N
Grammaires

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
u = xu 0 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
G
seulement si ∃k ≥ 0 et ∃v0 , . . . , vk ∈ V ∗ tels que
u = v0
v = vk
vi −
→ vi+1 pour 0 ≤ i < k
G
Théorie des langages
13 / 27
N
Grammaires

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

Théorie des langages


14 / 27
N
Grammaires

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

Théorie des langages


14 / 27
N
Grammaires

Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aS
S → aSbS
S→

Théorie des langages


15 / 27
N
Grammaires

Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aS
S → aSbS
S→
On veut montrer que aaba ∈ L(G )

Théorie des langages


15 / 27
N
Grammaires

Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aS
S → aSbS
S→
On veut montrer que aaba ∈ L(G )

S −→ aSbS −→ aSbaS −→ aSba −→ aaSba −→ aaba −→ aaba


G3 G3 G3 G3 G3 G3

Théorie des langages


15 / 27
N
Grammaires

Grammaire : exemple
Soit G3 = hV , Σ, P, Si avec
Σ = {a, b}
V \ Σ = {S}
Axiome S
3 règles de production :
S → aS
S → aSbS
S→
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

Théorie des langages


15 / 27
N
Grammaires

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
G
étape 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).

Théorie des langages


16 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


17 / 27
N
Grammaires

Arbres de dérivation pour une gram-


maire 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
Théorie des langages
18 / 27
N
Grammaires

Arbres de dérivation : exemple


a := a + b ∗ a ∈ L(G1 )

I := E

a E + E

I E ∗ E

a I I

b a
Théorie des langages
19 / 27
N
Grammaires

Arbres de dérivation : exemple


aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot.

S S

a S b S a S

a S a S a S b S

   a S

Théorie des langages


20 / 27
N
Grammaires

Arbres de dérivation : exemple


aaba ∈ L(G3 ). Il existe deux arbres de dérivation différents pour ce mot.

S S

a S b S a S

a S a S a S b S

   a S

La grammaire est ambigüe.


Théorie des langages
20 / 27
N
Grammaires

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.

Théorie des langages


21 / 27
N
Grammaires

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.

Théorie des langages


21 / 27
N
Grammaires

Grammaires ambigües
Théorème

Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si
G
et seulement si il existe un arbre de dérivation qui génère w .

Théorie des langages


22 / 27
N
Grammaires

Grammaires ambigües
Théorème

Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si
G
et 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.

Théorie des langages


22 / 27
N
Grammaires

Grammaires ambigües
Théorème

Etant donné une grammaire G , un mot est généré par G (S −
→ w ) si
G
et 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 un langage ambigüe de façon inhérente.

L = {ap bq c r |p = q ou q = r avec p, q, r ≥ 1}

Théorie des langages


22 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


23 / 27
N
Grammaires

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 ).

Théorie des langages


24 / 27
N
Grammaires

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 G3
1. S → aS
L = {w ∈ X ∗ |∀w 0 préfixe de w alors |w 0 |a ≥ |w 0 |b }
2. S → aSbS
3. S → 

Théorie des langages


24 / 27
N
Grammaires

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 G3
1. S → aS
L = {w ∈ X ∗ |∀w 0 préfixe de w alors |w 0 |a ≥ |w 0 |b }
2. S → aSbS
3. S → 
On doit montrer l’égalité de ces deux langages, on procède par double
inclusion.
L(G3 ) ⊆ L. On procède par induction sur le nombre d’utilisation des
règles 1. et 2.
L ⊆ L(G3 ). On procède par induction sur la longueur des mots de L.
Théorie des langages
24 / 27
N
Grammaires

Grammaires

Principe de base
Définitions
Arbres de dérivation
Caractérisation du langage généré par une grammaire
Types de grammaires

Théorie des langages


25 / 27
N
Grammaires

Types de grammaires

Type 0 Pas de restriction


Type 1 Grammaires contextuelles (ou sensibles au contrôle)
(Context-sensitive)

α → β, |α| ≤ |β|, α ∈ V +

Type 2 Grammaires hors-contexte (Context-Free)

A→β

Type 3 Grammaires régulières (ou linéaires à droite)

A → wB A, B ∈ V \ Σ non terminaux
A→w w ∈ Σ∗ terminaux

Théorie des langages


26 / 27
N
Grammaires

Types de grammaires

T3
Réguliers
Automate fini
T2
Context Free
Automate à pile

T1
Context sensitive
Machine de Turing

T0
Théorie des langages
27 / 27
N