Vous êtes sur la page 1sur 52

Chapitre 3

Les Grammaires

1 Introduction 6 Dérivation, arbre et


ambiguı̈té
2 Présentation d’une
grammaire 7 Propriétés des langages
non contextuels
3 Types de grammaires
8 Formes normales des
grammaires
4 Grammaire régulière

9 Simplification des
5 Grammaires non
grammaires
contextuelles

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 1 / 51


Introduction

Introduction

Grammaire
Une grammaire est un formalisme permettant de définir
formellement une syntaxe d’un langage composé d’un ensemble
de mots définis sur un alphabet donné.
Le principe de base des grammaires est de donner un ensemble
de règles qui permettent de générer les mots d’un langage.
Ces règles doivent indiquer qu’une séquence de symboles peut
être remplacée par une autre.
Les mots générés par la grammaire sont obtenus en appliquant
ces règles à partir d’un symbole spécial appelé symbole de
départ.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 2 / 51


Présentation d’une grammaire

Présentation d’une grammaire

Définition d’une grammaire


Une grammaire est un quadruplet G = (VN , VT , R, S) où :
VN : ensemble de non terminaux noté par des lettres majuscules
A, B, S . . .
VT : ensemble de terminaux noté par des lettres minuscules
a, b, . . .
R : ensemble de règles de production de la forme α → β où α et β
sont dans (VN |VT )∗
S : symbole non terminal appelé axiome ou symbole de départ
(initial).

Exemple
G = ({S, A, B}, {a, b}, {S → A, S → B, B → bB, A → aA, A → ε, B → ε}, S).

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 3 / 51


Présentation d’une grammaire

Présentation d’une grammaire

Mot généré, dérivation


Soient G = (VN , VT , R, S), u et v dans (VN |VT )∗ .
La grammaire G permet de dériver v de u en une étape (notation
u ⇒ v ) ssi
u = xu 0 y (u peut être décomposé en trois parties : x, u 0 et y, les
parties x et y peuvent être vides)
v = xv 0 y (v peut être décomposé en trois parties : x, v 0 et y, les
parties x et y peuvent être vides)
u 0 → v 0 est une règle de production de R
La grammaire G permet de dériver v de u en plusieurs étapes
(notation u ⇒∗ v ) ssi il existe k ≥ 0 et v0 , . . . , vk tels que
u = v0 , v = vk , vi ⇒ vi+1 pour 0 ≤ i < k.
Exemple :
aaA ⇒ aaaA est une dérivation en une étape.
S ⇒ B ⇒ bB est une dérivation en deux étapes.
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 4 / 51
Présentation d’une grammaire

Présentation d’une grammaire

Langage généré par une grammaire


Le langage généré par la grammaire G noté L(G) est l’ensemble des
mots terminaux dérivés à partir de l’axiome de G.
L(G) = {ω ∈ VT∗ /S ⇒∗ ω où S est l’axiome de G}

Exemple
G = ({S, A, B}, {a, b}, {S → A, S → B, B → bB, A → aA, A → ε, B →
ε}, S).
L(G) = {ω ∈ {a, b}∗ /ω est composé uniquement de a ou uniquement
de b}
L(G) = {ω ∈ {a, b}∗ /ω = an ou ω = bn , n ≥ 0}

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 5 / 51


Présentation d’une grammaire

Définition d’une grammaire


Exercice 1
Soit le langage L = {an bn , n ≥ 0}
1 Construire une grammaire G qui génère L,
2 Vérifier que les mots ab et aabb sont générés par la grammaire G

Exercice 1 - Corrigé
1 G = (VN , VT , R, S) Où VN = {S} VT = {a, b} et
R = {S → ε, S → aSb}
2 Vérification de la génération des mots ab et aabb par la
grammaire G :
Le mot ab est généré par la grammaire G comme suit :
S ⇒ aSb ⇒ aεb = ab
Le mot aabb est généré par la grammaire G, en effet :
S ⇒ aSb ⇒ aaSbb ⇒ aaεbb = aabb
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 6 / 51
Présentation d’une grammaire

Définition d’une grammaire

Exercice 2
1 Construire une grammaire G qui génère le langage a+
2 Vérifier que les mots aa et a sont générés par la grammaire

Exercice 2 - Corrigé
1 Une grammaire qui génère {an , n > 0} = a+ , est
G = (VN , VT , R, S) Où VN = {A} VT = {a} et
R = {A → a, A → aA} et S = A
2 Le mot aa est généré par la grammaire G, en effet :
A ⇒ aA ⇒ aa
3 Le mot a est généré par la grammaire G, en effet :
A⇒a

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 7 / 51


Présentation d’une grammaire

Définition d’une grammaire

Exercice 3
Soit L l’ensemble des représentations décimales des entiers naturels
non nuls.
1 Donner une expression régulière qui représente le langage L.
2 Construire une grammaire G qui génère le langage L
3 Vérifier que le mot 0129 est généré par la grammaire G.
4 Construire un automate fini qui accepte le langage L

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 8 / 51


Présentation d’une grammaire

Définition d’une grammaire

Exercice 3 - Corrigé
1 L’expression régulière est :0∗ (1 + . . . + 9)(0 + 1 + . . . + 9)∗
2 La grammaire est G = (VN , VT , R, S) où
VN = {A, B}
VT = {0, 1, . . . , 9} et
R = {A → 0A|1B|2B| . . . |9B, B → 0B|1B| . . . |9B|ε} et S = A
3 Le mot 0129 est généré par la grammaire G comme suit :
A ⇒ 0A ⇒ 01B ⇒ 012B ⇒ 0129B ⇒ 0129ε = 0129
4

0 0,1,2,3,4,5,6,7,8,9

q0 q1
1,2,3,4,5,6,7,8,9

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 9 / 51


Présentation d’une grammaire

Définition d’une grammaire

Exercice 4
Construire une grammaire G qui génère le langage L suivant :
L = {an bm c n /m, n ∈ N}

Exercice 4 - Corrigé
La grammaire G est définie comme suit :
G = (VN , VT , R, S) où
VN = {S, B}
VT = {a, b, c} et
R = {S → aSc, S → B, B → ε|bB}

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 10 / 51


Types de grammaires

Types de grammaires

Les grammaires sont classifiées en 4 types suivant les restrictions sur


la forme de leurs règles.
Types de grammaires
Type 0 pas de restriction sur les règles de productions
Type 1 grammaires contextuelles (sensibles au contexte) les
règles de productions sont de la forme α → β avec
|α| ≤ |β|
Type 2 Grammaires non contextuelles (appelées aussi
algébrique ou hors-contexte) les règles de productions
sont de la forme A → β avec β ∈ (VN |VT )∗ et A ∈ VN .
Type 3 Grammaires régulières : les règles de productions sont
de la forme A → αB ou A → α ou A → ε avec α ∈ VT et
A → VN et B → VN .

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 11 / 51


Types de grammaires

Types de grammaires

Grammaires hors-contexte et grammaires sensibles au contexte


Grammaire hors-contexte est une grammaire dont les règles sont de
la forme : A → β qui sont dites ”hors-contexte” car elles
permettent de remplacer par exemple A par β
indépendamment du contexte dans lequel A apparait (
indépendamment de ce qui entoure A).
Grammaire sensible au contexte est une grammaire dont les règles
sont de la forme : aAb → aβb qui sont dites ”sensibles au
contexte” car elles ne permettent pas de remplacer, par
exemple, A par β que si A est entouré de a et b.
l’application de ce type de règles dépend du contexte où
elles apparaissent : sensibles au contexte.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 12 / 51


Types de grammaires

Types de grammaires

Comparaison des types des grammaires


La comparaison des types grammaires portera sur les ensembles de
langages pouvant être générés par les différents types de grammaires.

type3 ⊂ type2 ⊂ type1 ⊂ type0

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 13 / 51


Grammaire régulière

Grammaire régulière

Définition
Une grammaire régulière est une grammaire avec les restrictions
suivantes :
Le coté gauche de chaque production consiste en un seul
symbole non terminal.
Le coté droit est :
Soit un symbole terminal suivi d’un symbole non terminal
Soit un seul symbole terminal
Soit ε

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 14 / 51


Grammaire régulière

Langages réguliers et grammaires régulières

Théorème
Un langage est régulier ssi il est généré par une grammaire régulière.

Preuve (⇒)
Si un langage est régulier alors il est généré par une grammaire
régulière.
Si L est régulier alors il existe un automate d’états
finisM = (Q, X , δ, i, F ) tel que L = L(M). A l’aide de M on construit une
grammaire régulière G = (VN , VT , R, S) qui génère L. G est définie
par :
VT = X
VN = Q
S = q0
R = {p → xq/δ(p, x) = q} ∪ {q → ε/q ∈ F }

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 15 / 51


Grammaire régulière

Définition d’une grammaire

Exercice 5
Soit l’automate fini A = (Q, X , δ, q0 , F ) /Q = {A, B},
X = {a, b},
δ = {(A, a, A), (A, b, B), (B, b, B)},
q0 = A,
F = {A, B}
Construire une grammaire régulière G/L(G) = L(A)

Exercice 5-corrigé
G = (VN , VT , S, R) / VN = Q, VT = X ,
S = q0 ,
R = {A → aA, A → bB, B → bB, A → ε, B → ε}.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 16 / 51


Grammaire régulière

Langages réguliers et grammaires régulières

Preuve (⇐)
Si un langage est généré par une grammaire régulière alors il est
régulier.
Soit G = (VN , VT , R, S) la grammaire qui génère L. Un automate fini
non déterministe qui accepte L peut être défini comme suit :
Q = VN
X = VT
q0 = S
F = {A/(A → ε) ∈ R}
δ = {(A, a, B)/A → aB ∈ R, a ∈ VT }.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 17 / 51


Grammaire régulière

Langages réguliers et grammaires régulières

Exercice 6
Construire l’automate qui reconnaı̂t le même langage que L(G) où
G = ({A, B}, {a, b}, R, A) avec R = {A → aA|bB|ε, B → bB|ε}

Exercice 5 - corrigé
L’automate correspondant à G est M = (Q, X , δ, q0 , F ) avec :
Q = {A, B}, X = {a, b}, δ = {(A, a, A), (B, b, B), (A, b, B)}, q0 = A,
F = {A, B}

a b

A b B
M

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 18 / 51


Grammaires non contextuelles

Grammaires non contextuelles

Définition d’une grammaire non contextuelle


Une grammaire non contextuelle G est définie par G = (VN , VT , S, R)
Où :
VN est un alphabet non terminal
VT est un ensemble de terminaux
R est l’ensemble des règles de production de la forme
A → U/A ∈ VN et U ∈ (VN ∪ VT )∗
S est l’axiome de la grammaire (Symbole de départ) (S ∈ VN )
Exemple : G = ({S}, {a, b}, S, {S → aSb|ε})

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 19 / 51


Grammaires non contextuelles

Grammaires non contextuelles

Définition d’un langage non contextuel


Un langage est non contextuel s’il existe une grammaire non
contextuelle qui génère ce langage.

Exemples
1 Le langage ω.ω R est généré par la grammaire NC dont les
productions sont :
S → aSa
S → bSb
S→ε
2 Le langage an bn , n ≥ 0, est généré par la grammaire NC dont les
productions sont :
S → aSb
S→ε

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 20 / 51


Dérivation, arbre et ambiguı̈té

Dérivation gauche( resp.droite)

Définition
Une dérivation à gauche ( resp. à droite) consiste à remplacer le
non-terminal le plus à gauche (resp. le plus à droite) dans la dérivation.
∀i ≥ 0 , wi ⇒ wi+1 est une dérivation gauche ssi wi = ui Ai vi et
G
wi+1 = ui zi vi où Ai → zi ∈ R, ui ∈ VT∗ et vi ∈ (VT ∪ VN )∗ .
∀i ≥ 0 , wi ⇒ wi+1 est une dérivation droite ssi wi = ui Ai vi et
D
wi+1 = ui zi vi où Ai → zi ∈ R, ui ∈ (VT ∪ VN )∗ et vi ∈ VT∗ .

Proposition
Si ω est un mot de L(G) alors il existe une dérivation gauche
permettant de générer ω.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 21 / 51


Dérivation, arbre et ambiguı̈té

Dérivation gauche( resp.droite)

Exemple
Soit G = ({S}, {a, b}, {S → SS; S → aSa; S → bSb; S → ε}, S), G est
NC.
Montrons que aabb ∈ L(G)
S→SS S→aSa S→ε S→bSb S→ε
S =⇒ SS =⇒ aSaS =⇒ aaS =⇒ aabSb =⇒ aabb
G G G G G
Montrons que aabaab ∈ L(G).
S→SS S→aSa S→ε S→bSb S→aSa
S =⇒ SS =⇒ aSaS =⇒ aaS =⇒ aabSb =⇒
G G G G G
S→ε
aabaSab =⇒ aabaab
G

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 22 / 51


Dérivation, arbre et ambiguı̈té

Arbre de dérivation

Pour représenter une dérivation indépendamment de l’ordre


d’application des productions, il est utile de donner à la dérivation
une structure d’arbre.
Ce type d’arbre est appelé arbre de dérivation ou arbre
syntaxique ou arbre d’analyse.
Un arbre est associé à chaque dérivation.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 23 / 51


Dérivation, arbre et ambiguı̈té

Arbre de dérivation

Définition
Un arbre de dérivation pour une grammaire NC, G = (VN , VT , R, S),
est un arbre dont chaque nœud est étiqueté par un élément de
VN ∪ VT ∪ {ε} et qui satisfait les conditions suivantes :
La racine est étiquetée par le symbole de départ S.
Chaque nœud intérieur est étiqueté par un non-terminal A ∈ VN
Chaque feuille est étiquetée par un symbole terminal a ∈ VT ∪ {ε}.
Pour tout nœud intérieur, si son étiquette est le non-terminal A et
si ses descendants immédiats sont les nœuds n1 , n2 , . . . , nk ayant
respectivement pour étiquettes X1 X2 . . . Xk alors
A → X1 X2 . . . Xk
doit être une production de G.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 24 / 51


Dérivation, arbre et ambiguı̈té

Arbre de dérivation

Exemple
G = ({S}, {a, b}, {S → SS; S → aSa; S → bSb; S → ε}, S)
Arbre de dérivation du mot aabaab.

S S

a S a b S b

ε a S a

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 25 / 51


Dérivation, arbre et ambiguı̈té

Arbre de dérivation

Remarque
A chaque dérivation gauche (resp. droite) correspond un est un
seul arbre de dérivation.

Example
G : R = {S → AB, A → a, B → b}
S ⇒ AB ⇒ aB ⇒ ab (dérivation
gauche) S
S ⇒ AB ⇒ Ab ⇒ ab (dérivation
droite) A B

a b
Cet arbre est unique, il correspond aux deux arbres de dérivations
L(G) = {ab}

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 26 / 51


Dérivation, arbre et ambiguı̈té

Dérivation et ambiguı̈té

Définition
Le mot généré par un arbre de dérivation est celui obtenu par la
concaténation des feuilles de l’arbre en les parcourant de gauche à
droite.

Théorème
Étant donnée une grammaire NC, G, un mot ω est généré par

G (S ⇒ ω) ssi il existe un arbre de dérivation de la grammaire G qui
G
génère ω.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 27 / 51


Dérivation, arbre et ambiguı̈té

Dérivation et ambiguı̈té

Définition (Ambiguı̈té)
Une grammaire est dite ambiguë s’il existe ω ∈ VT∗ pour lequel on peut
construire deux dérivations gauches différentes. Si pour ω dans L(G) il
existe au moins deux arbres de dérivation différents alors G est
ambiguë.

Exemple
R = {S → aAb, S → a, S → abSb; A → bS} ; ω = abab
S ⇒ aAb ⇒ abSb ⇒ abab (dérivation gauche)
S ⇒ abSb ⇒ abab (dérivation gauche)
Donc la grammaire est ambiguë

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 28 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Théorème
Soit LNC, l’ensemble des langages non contextuels :
1 Si L1 ∈ LNC et L2 ∈ LNC alors
L1 + L2 ∈ LNC et
L1 .L2 ∈ LNC
2 Si L ∈ LNC alors
L∗ ∈ LNC,
L+ ∈ LNC et
LR ∈ LNC.
3 L’ensemble des langages non contextuels n’est pas fermé pour
l’intersection et la complémentation.
4 L’intersection d’un langage non contextuel et d’un langage régulier
est un langage non contextuel.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 29 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Preuve du théorème
Si L1 ∈ LNC et L2 ∈ LNC, G1 et G2 deux grammaires NC telles que
L(G1 ) = L1 et L(G2 ) = L2 . S1 est l’axiome de G1 et S2 est l’axiome de
G2 . R1 et R2 sont respectivement les règles de production de G1 et de
G2 .
L1 + L2 = L(G), G aura comme axiome S, et comme règles de production
R1 ∪ R2 ∪ {S → S1 |S2 }
L1 .L2 = L(G), G aura comme axiome S, et comme règles de production
R1 ∪ R2 ∪ {S → S1 .S2 }
L∗1 = L(G), G aura comme axiome S, et comme règles de production
R1 ∪ {S → S1 .S|ε}
L+
1 = L(G), G aura comme axiome S, et comme règles de production
R1 ∪ {S → S1 .S}
LR1 = L(G), G aura les règles de production A → αR pour chaque production
A → α de R1

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 30 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exercice 1
Soient les langages L1 et L2 générés respectivement par G1 et G2
L1 = {an bn /n ≥ 0}
L2 = {a2n bn /n ≥ 0}
G1 = ({S1 }, {a, b}, S1 , {S1 → ε|aS1 b})
G2 = ({S2 }, {a, b}, S2 , {S2 → ε|aaS2 b})

1 Construire une grammaire G/L(G) = L1 ∪ L2


2 Vérifier que le mot aab est généré par la grammaire G.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 31 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exercice 1 - Corrigé
1 G = ({S1 , S2 , S}, {a, b}, S, {S → S1 |S2 , S1 → ε|aS1 b, S2 →
ε|aaS2 b})

2 Le mot aab est généré par la grammaire G, en effet S ⇒ aab :
G
S→S2 S2 →aaS2 b S2 →ε
S ⇒ S2 ⇒ aaS2 b ⇒ aab, donc aab ∈ L(G)

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 32 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels


Exercice 2
Soient les langages L1 et L2 générés respectivement par G1 et G2
L1 = L+ , avec L = {a, b, . . . , z, A, B, . . . , Z }
L2 = (L ∪ C)+ avec C = {0, 1, 2, . . . , 9}
G1 = ({S1 }, L, S1 , R1 ) et G2 = ({S2 }, L ∪ C, S2 , R2 )
R1 = {S1 → a, S1 → b, . . . , S1 → z, S1 → A, S1 → B, . . . , S1 → Z ,
S1 → aS1 , S1 → bS1 , . . . , S1 → zS1 , S1 → AS1 , S1 → BS1 , . . . ,
S1 → ZS1 }
R2 = {S2 → a, S2 → b, . . . , S2 → z, S2 → A, . . . , S2 → Z ,
S2 → 0, S2 → 1, . . . , S2 → 9, S2 → aS2 , S2 → bS2 , . . . , S2 → zS2 ,
S2 → AS2 , S2 → BS2 , . . . , S2 → ZS2 , S2 → 0S2 , . . . , S2 → 9S2 }

1 Construire une grammaire G/L(G) = L1 .L2


2 Vérifier que le mot temp1 est généré par la grammaire G.
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 33 / 51
Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exercice 2- Corrigé
1 G/L(G) = L1 .L2 = L+ (L ∪ C)+ , avec :
G = ({S1 , S2 , S}, L ∪ C, S, R1 ∪ R2 ∪ {S → S1 .S2 })

2 Montrons que S ⇒ temp1 :
G
S→S1 .S2 S1 →tS1 S1 →eS1 S1 →mS1 S →p
S ⇒ S1 .S2 ⇒ tS1 S2 ⇒ teS1 S2 ⇒ temS1 S2 1⇒
S →1
tempS2 2⇒ temp1 donc temp1 ∈ L(G)

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 34 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exercice 3
Soit la grammaire G1 suivante qui génère le langage et L1 = {a, b} :
G1 = ({S1 }, {a, b}, S1 , {S1 → a|b}}

1 Construire une grammaire G/L(G) = L∗1


2 Vérifier que le mot aab est généré par la grammaire G.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 35 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exercice 3 - Corrigé
1 G = ({S1 , S}, {a, b}, S, {S → ε, S → S1 .S, S1 → a, S1 → b})
2 Le mot aab est généré par la grammaire G, en effet Mq :

S ⇒ aab :
G
S→S1 .S S→S1 .S S→S1 .S S →a
S ⇒ S1 .S ⇒ S1 .S1 .S ⇒ S1 .S1 .S1 .S 1⇒
S →a S →b S→ε
a.S1 .S1 .S 1⇒ aa.S1 .S 1⇒ aab.S ⇒ aab, donc aab ∈ L(G)

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 36 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Si L1 ∈ LNC et L2 ∈ LNC alors L1 ∩ L2 ∈


/ LNC
Contre exemple :
L1 = {ai bi c k /i ≥ 0, k ≥ 0} ∈ LNC
G1 = ({S, S1 , S2 }, {a, b, c}, S, {S → S1 S2 , S1 → ε|aS1 b, S2 →
ε|cS2 })
L2 = {ak bi c i /i ≥ 0, k ≥ 0} ∈ LNC
G2 = ({A, B, C}, {a, b, c}, C, {C → AB, A → ε|aA, B → ε|bBc})
L1 ∩ L2 = {ai bi c i /i ≥ 0} ∈
/ LNC car il n’existe aucune grammaire
NC qui le génère.

Théorème
Il n’existe pas de grammaire non contextuelle permettant de générer le
langage an bn c n /n ≥ 0

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 37 / 51


Propriétés des langages non contextuels

Propriétés des langages non contextuels

Exemple de Grammaire Contextuelle


Soit G une grammaire contextuelle générant le langage
an bn c n /n ≥ 0, avec :
G = ({S, B, C}, {a, b, c}, S, R) où
R = {S → aSBC, S → aBC, CB → BC, aB → ab, bB →
bb, bC → bc, cC → cc}
On peut générer le mot aabbcc comme suit :
S ⇒ aSBC ⇒ aaBCBC ⇒ aabCBC ⇒ aabBCC ⇒ aabbCC ⇒
aabbcC ⇒ aabbcc

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 38 / 51


Formes normales des grammaires

Formes normales des grammaires

Les formes normales des grammaires servent à donner une forme


standard à leurs règles de production dans le but de simplifier ces
grammaires et la génération des langages qui leur sont associés.
Nous distinguons deux formes normales :
la forme standard binaire ou grammaire de CHOMSKY et
la forme standard de GREIBACK

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 39 / 51


Formes normales des grammaires Forme standard binaire (Grammaire de CHOMSKY)

Formes normales des grammaires

Forme standard binaire (Grammaire de CHOMSKY)


Une grammaire est dite en forme standard binaire (grammaire de
CHOMSKY) si ses règles de production sont de la forme : A → BC ou
A → a avec A, B, C ∈ VN et a ∈ VT ∪ {ε}.

Exercice (Grammaire de CHOMSKY)


Soit la grammaire G suivante. Construire une grammaire G0 sous
forme de CHOMSKY qui génère L(G) (le langage généré par G)
G = ({S, A, B}, {a, b}, S, R)
R = {S → bA, S → aB,
A → a, B → b,
A → aS, B → bS,
A → bAA, B → aBB}

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 40 / 51


Formes normales des grammaires Forme standard binaire (Grammaire de CHOMSKY)

Formes normales des grammaires


Exercice-Corrigé (Grammaire de CHOMSKY)
G = ({S, A, B}, {a, b}, S, R)
R = {S → bA, S → aB,
A → a, B → b,
A → aS, B → bS,
A → bAA, B → aBB}
La forme standard binaire associée aux règles de production R de G
est :
R 0 = { S → C1 A, S → C2 B,
C1 → b, C2 → a,
A → a, B → b,
A → C2 S, B → C1 S,
A → C1 C3 , B → C2 C4 ,
C3 → AA, C4 → BB}
La mise en forme standard binaire de la grammaire G donne la
grammaire G0 où : G0 = ({S, A, B, C1 , C2 , C3 , C4 }, {a, b}, S, R 0 )
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 41 / 51
Formes normales des grammaires Forme standard binaire (Grammaire de CHOMSKY)

Formes normales des grammaires


Exercice-Corrigé (Grammaire de CHOMSKY)
G = ({S, A, B}, {a, b}, S, R)
R = {S → bA, S → aB,
A → a, B → b,
A → aS, B → bS,
A → bAA, B → aBB}
La forme standard binaire associée aux règles de production R de G
est :
R 0 = { S → C1 A, S → C2 B,
C1 → b, C2 → a,
A → a, B → b,
A → C2 S, B → C1 S,
A → C1 C3 , B → C2 C4 ,
C3 → AA, C4 → BB}
La mise en forme standard binaire de la grammaire G donne la
grammaire G0 où : G0 = ({S, A, B, C1 , C2 , C3 , C4 }, {a, b}, S, R 0 )
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 41 / 51
Formes normales des grammaires Forme standard de GREIBACK

Formes normales des grammaires

Forme standard de GREIBACK


Une grammaire est dite en forme standard GREIBACK si ses règles de
production sont de la forme : A → av avec A ∈ VN , a ∈ VT et v ∈ VT∗ .

Exercice (Forme standard GREIBACK)


Soit la grammaire G suivante. Construire une grammaire G0 sous
forme GREIBACK qui génère L(G)
G = ({A1 , A2 , A3 }, {a, b}, A1 , R)
R = {A1 → A2 A3 ,
A3 → A4 A3 ,
A2 → aA3 ,
A4 → b,
A3 → b}

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 42 / 51


Formes normales des grammaires Forme standard de GREIBACK

Formes normales des grammaires

Exercice - Corrigé (Forme standard GREIBACK)


R = {A1 → A2 A3 ,
A3 → A4 A3 ,
A2 → aA3 ,
A4 → b,
A3 → b}
La forme standard de GREIBACK associée est alors :
R 0 = {A1 → aA3 A3
A3 → bA3
A3 → b}
La mise en forme standard de GREIBACK de la grammaire G donne la
grammaire G0 , où :
G0 = ({A1, A3}, {a, b}, A1 , R 0 )

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 43 / 51


Formes normales des grammaires Forme standard de GREIBACK

Grammaires non contextuelles et forme normale de


GREIBACK

Lemme
Tout langage L hors-contexte tel que ε ∈
/ L peut être engendré par une
grammaire hors-contexte sous forme normale de GREIBACK

Exemple
Le langage an bm /n ≥ 0, m > 0 et m > n est généré par la grammaire
NC dont les règles de production sont :
S → aSS
S → bS
S→b

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 44 / 51


Simplification des grammaires

Simplification des grammaires

Définition 1
Soit G = (VN , VT , S, R)
1 Un symbole X de VN est dit inaccessible s’il n’existe pas de

dérivation de la forme S ⇒ αX β, avec α, β ∈ (VN ∪ VT )∗
2 Un symbole A de VN est dit improductif s’il n’existe pas une

dérivation de la forme A ⇒ U, avec U ∈ VT∗
3 Un symbole X de VN est dit inutile, s’il est improductif ou
inaccessible : s’il n’y a pas une dérivation de la forme
∗ ∗
S ⇒ U1 XU2 ⇒ U1 V1 U2 , avec U1 , V1 , U2 ∈ VT∗

Définition 2
Une grammaire non contextuelle est dite sans cycle (cycle free) s’il
+
n’y a pas de dérivation de la forme A ⇒ A

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 45 / 51


Simplification des grammaires

Simplification des grammaires


Définition 3
Une grammaire non contextuelle G = (VN , VT , S, R) est ε-libre si :
1 R n’a pas de ε-productions
2 ou il existe exactement une ε-production (S → ε) et S n’est facteur
d’aucun membre droit d’une ou plusieurs règles de production.

Définition 4
Une grammaire est dite propre si :
1 elle est sans cycle
2 elle est ε-libre
3 elle n’a pas de symbole inutile

Théorème
Si G non contextuelle alors il existe G0 une grammaire non contextuelle
telle que G0 est propre et L(G) = L(G0 ).
Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 46 / 51
Simplification des grammaires

Simplification des grammaires

Algorithmes de simplification
Ces algorithmes permettent de transformer une grammaire non
contextuelle en une grammaire équivalente plus simple.
1 Élimination des symboles inutiles.
2 Suppression des ε−productions
3 Élimination des productions unitaires
4 Forme normale de Chomsky
On va s’intéresser aux algorithmes 1 et 2 de cette liste.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 47 / 51


Simplification des grammaires Élimination des symboles inutiles

Simplification des grammaires

L’élimination des symboles inutiles se fait en appliquant l’algorithme


n◦ 1 puis l’algorithme n◦ 2. L’ordre est impératif.
Algorithmes d’élimination des symboles inutiles
Étape 1( Algo 1) Éliminer les Non-Terminaux d’où ne dérive aucun mot en
symboles terminaux en appliquant récursivement :
1 Les Non-Terminaux, dont une production au moins ne
contient que des terminaux, sont utiles.
2 Les Non-Terminaux, dont une production au moins ne
contient que des terminaux et des symboles utiles, sont
utiles.
3 Cet algorithme se termine lorsqu’il n’y a aucun symbole à
retenir.Enlever, alors, de la grammaire les symboles
inutiles
La grammaire ainsi obtenue est équivalente à la grammaire de départ.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 48 / 51


Simplification des grammaires Élimination des symboles inutiles

Simplification des grammaires

Algorithmes d’élimination des symboles inutiles


Étape 2 : Algo 2 Éliminer tous les symboles (terminaux ou non)
n’appartenant à aucun mot dérivé de l’axiome en appliquant
récursivement :
1 L’axiome est utile
2 Les symboles apparaissant dans les productions de
symboles utiles sont utiles.
3 Les symboles non retenus sont inutiles, on les enlève de
la grammaire
La grammaire ainsi obtenue est équivalente à la grammaire de départ.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 49 / 51


Simplification des grammaires Élimination des symboles inutiles

Simplification des grammaires

Illustration
Soit la grammaire G avec les règles de production suivantes :
S → AB|CA A → a B → AB|EA
C → aB|b D → aC E → BA.
1 L’algorithme 1 conserve A et C, puis S et D. Il reste, donc, des règles :
S → CA A → a
C → b D → aC.
2 L’algorithme 2 élimine D, il reste finalement :
S → CA
A→a
C → b.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 50 / 51


Simplification des grammaires Forme normale de Chomsky

Forme normale de Chomsky

Principe
1 On limite la forme des productions : seules sont admises les
formes A → BC et A → a.
2 Une telle grammaire est une grammaire normale de Chomsky.
La forme normale de Chomsky a un intérêt essentiellement théorique.

Yousra Hlaoui (FST-IF4) Les Grammaires 2017-2018 51 / 51

Vous aimerez peut-être aussi