Vous êtes sur la page 1sur 91

Chapitre 4 Enicarthage

2 éme ing Infotronique

LES
GRAMMAIRES

HAYKEL BEN SALEM 1


 Un automate peut être vu comme une machine permettant
de reconnaître des mots. On “entre” un mot dans la machine, et en
résultat, on a comme réponse “le mot appartient au langage” ou “le
mot n’appartient pas au langage”.
INTRODUCTION
 Avec une grammaire, on s’intéresse plus à la structure des mots du
langage pour expliquer comment ils se fabriquent. Une fois qu’on a
les “règles de fabrication” (appelées "règles de production"), on peut
engendrer tel ou tel mot.

HAYKEL BEN SALEM 2


DÉFINITION

 UNE GRAMMAIRE EST UN ENSEMBLE


DE RÈGLES DE PRODUCTION QUI SONT UTILISÉES POUR ENGENDRER UN LANGAGE

HAYKEL BEN SALEM 3


Exemple
Dans la grammaire de la langue française on peut formuler une phrase en respectant la séquence suivante
"Sujet", "Verbe", "COD". On peut formuler un nombre bien défini des phrases en respectant les règles de
production suivantes :

PHRASE -------------> SUJET VERBE COD NOM


SUJET -------------> je | il
VERBE --------------> lis | conduit
COD --------------> DETERMINANT
DETERMINANT -------> un | la
NOM -------------> livre | voiture

HAYKEL BEN SALEM 4


A partir de ces règles on peut des phrases syntaxiquement correctes mais pas forcément
sémantiquement correct.

PHRASE ------> je lis un livre


PHRASE ------> il conduit la voiture

PHRASE ------> il conduit un livre (Cette phrase est syntaxiquement correcte mais
sémantiquement incorrect)

HAYKEL BEN SALEM 5


Définition formelle

Une grammaire G est un quadriplet (N, T, P, S) tels que:

N : Ensemble fini de symboles non terminaux.


T : Ensemble fini de symboles terminaux . (Les symboles de l'alphabet)
N∩T=Ø
S : Axiome : Symbole terminal de départ.
P : Ensemble fini de règles de production de la forme :

α β tel que α ∈ (N ∪ T) + - T+ et β α ∈ (N ∪ T) *
(α ne peut pas avoir seulement des terminaux)
Exemple
Dans l'exemple précident, la grammaire est définie comme suit :
N = {PHRASE, SUJET, VERBE, COD, DETERMIANT}
T = {je, il, lire, conduit, un, la, livre, voiture}
S = {PHRASE}
P = {PHRASE->SUJET VERBE COD, COD->DETERMINANT NOM, SUJET ->je | il, VERBE ->ils | conduit,
DETERMINANT ->un | la, NOM ->livre | voiture
HAYKEL BEN SALEM 6
Convention

On écrit les terminaux en lettres Minuscules.


On écrit les non terminaux en lettres Majuscules.

HAYKEL BEN SALEM 7


Dérivation
Dérivation directe
Un mot w' dérive directement d'un mot w qu'on note w => w' si une règle de G (grammaire) est appliquée une fois
pour passer de w à w'.
C’est-à-dire : il existe une règle α -> β dans P telle que : w = uαv et w' = uβv avec u, v ∈ (N ∪ T)*.

Exemple
Soit la grammaire : G =({S}, {a, b}, {S -> aSb, S-> ε}, S), nous avons :
X = {a, b} l'alphabet
N = {S}, T = {a, b}, S = {S}, P = {S -> aSb, S-> ε}

1. aSb dérive directement de S et on écrit : S => aSb car il existe une règle S -> aSb ∈ P telle que :
w= S et w' = aSb.
2. ab dérive directement de aSb et on écrit
aSb => ab car il existe une règle S -> ε telle que :
w = aSb et w' = ab avec u = a et v = b

L(G) = {ε, ab, aabb, aaabbb, …...anbn}


Les mots sont générés par application des règles de la grammaire

8
Dérivation au sens général

Un mot w dérive directement d'un mot w qu'on note w -> w', si on applique n fois les règles de G pour passer
de w vers w' tel que n ≥ 0 :

C’est-à-dire : il existe une séquence de chaîne w 1, w2, …..wn telle que :


w = w1, w' = wn et wi => wi+1 pour ∀ 1 ≤ i < n

Exemple

Soit la grammaire : G =({S}, {a, b}, {S -> aSb, S-> ε}, S), nous avons :

S => aSb => ab, c'est une dérivation de longueur 2.

HAYKEL BEN SALEM 9


k
On note α ⇒ β pour indiquer que β se dérive de α en k étapes.
+ *
On définit aussi les deux notations ⇒ et ⇒ de la façon suivante :
+ k
α ⇒ β α ⇒ β avec k > 0
* k
α ⇒ β α ⇒ β avec k ≥ 0

Sens de dérivation

Soit la grammaire G suivante


G = ({ E, T, F } , {+ , ∗ , a } , { E → T + E | T, T → F ∗ T | F, F → a } , E )
• Dérivation droite : on réécrit le non terminal le plus à droite :
E ⇒ T + E ⇒ T + T ⇒ T + F ∗ T ⇒ T + F ∗ F ⇒ T + F ∗ a ⇒T + a ∗ a ⇒ F + a ∗ a ⇒ a + a ∗ a
• Dérivation gauche : on réécrit le non terminal le plus à gauche :
E⇒T+E⇒F+E⇒a+E⇒a+T⇒a+F∗T⇒a+a∗T⇒a+a∗F⇒a+a∗a

HAYKEL BEN SALEM 10


Arbre de dérivation

Un arbre de dérivation pour G (N, Σ, P, S ) est un arbre ordonné et étiqueté dont les étiquettes
appartiennent à l’ensemble N ∪ Σ ∪ { ε } . Si un nœud de l’arbre est étiqueté par le non terminal A
et ses fils sont étiquetés X 1 , X 2 , ..., X n alors la règle A → X 1 , X 2 , ..., X n appartient à P.

Ici Σ pour les terminaux (alphabet)

HAYKEL BEN SALEM 11


S

ε aSb

ab aaSbb

aabb aaaSbbb

Arbre de dérivation pour G =({S}, {a, b}, {S -> aSb, S -> ε}, S)

HAYKEL BEN SALEM 12


Ambiguı̈té

Une grammaire G est ambiguë s’il existe au moins un mot m dans L( G ) auquel correspond plus d’un arbre de
dérivation.

Exemple : E → E + E | E ∗ E | a

HAYKEL BEN SALEM 13


Langage engendré par une grammaire

Un langage engendré par une grammaire G = (N, T, P, S) est l'ensemble des mots obtenus en appliquant des
séquences de dérivations à partir de l'axiome S. On note :
L(G) = { w ∈ T* / S =>*G w}

Exemples
1. Pour la grammaire G = ({S}, {a, b}, {S -> aSb, S -> ε}, S}, nous avons :
• Mot minimal : ε
• La forme générale : L(G) = { anbn/ n≥ 0}

Remarque
Une grammaire définit un seul langage par contre un même langage peut être engendré par plusieurs
grammaires différentes.

GRAMMAIRES HAYKEL BEN SALEM 14


Grammaires équivalentes

Deux grammaires sont équivalentes si elles engendrent le même langage.


G équivalente à G' <=> L(G) = L(G')

Exemple
1. G = ({S, A, B), {a, b}, {S -> aS| ABb, A -> Aa| a, B -> b}, S)
S -> aS -> aABb ->aaBb -> aabb
S -> ABb -> AaBb -> AaaBb -> aaaBb -> aaabb

2. G '= ({S, A, B), {a, b}, {S -> aS| aA, A -> aA| bB, B -> b}, S)
S-> aS-> aaS-> aaaS->aaaaA->aaaabB-> aaaabb
S-> aS->aaA->aabB->aabb
On trouve que L(G) = L(G') = {a kb2 / k ≥ 1}

HAYKEL BEN SALEM 15


Classification des grammaires

Hiérarchie de Chomsky
Selon la classification de Chomsky, les grammaires sont regroupées en quatre types en fonction de la forme
de leurs règles de production.

Soit une grammaire G = (N, T, P, S)

• Grammaire Générale – Type 0.


• Grammaire contextuelle – Type 1.
• Grammaire hors contexte – Type 2.
• Grammaire Régulière – Type 3.

HAYKEL BEN SALEM 16


Classification des grammaires

Grammaire Générale – Type 0

G est dite grammaire de Type 0 dite aussi grammaire sans restriction (grammaire générale) : si toutes ses
règles sont de la forme suivante :
α β avec α ∈ (N ∪ T) + - T+ et β ∈ (N ∪ T)*

(α peut appartenir a (N ∪ T)+ mais pas à T+ seulement c’est-à-dire la règle de gauche ne peut jamais être
un terminal.) (+ , car on ne peut pas avoir Ɛ à gauche aussi)

Exemple

G = { {S}, {a, b, c}, {s-> aS| Sb| c, aSb ->Sa| bS}, S}

Remarque : La grammaire est dite sans restriction, parce que il n y a pas de règles sur les règles de
productions.

HAYKEL BEN SALEM 17


Classification des grammaires

Grammaire Contextuelle – Type 1

G dite grammaire de Type 1 dite aussi grammaire contextuelle si toutes ses règles sont de la forme :

α β avec |α| ≤ |β| tel que α ∈ (N ∪ T) + - T+ et β ∈ (N ∪ T)*

Exception : axiome Ɛ peut appartenir à P.

Exemple

G =({S, R, T}, {a, b, c}, {S -> Ɛ| aRbc| abc, R-> aRTb| aTb, Tb->bT, Tc->cc}, S)

HAYKEL BEN SALEM 18


Classification des grammaires

Grammaire Algébrique (hors contexte) – Type 2

G est dite grammaire de Type 2 dite aussi grammaire Algébrique (hors contexte) : si toutes ses règles sont de la
forme :

A β avec A ∈ N et β ∈ (N ∪ T)*

Dans cette grammaire la partie gauche de la règle ne doit jamais avoir un terminal.
Exemple
1- G = ({S}, (a, b}, {S -> aSb| Ɛ }, S)
Mots : Ɛ, ab, aabb,aaabbb,…............,anbn
2- G = ({S}, {0, 1}, {S-> 0S0| 1S1| Ɛ| 0| 1} ,S)
Mots : 00, 11, 010, 000, 111, 101101,…...

C'est la grammaire des Palindromes.


Grammaire Algébrique (hors contexte) – Type 2

Arbre de dérivation - Arbre Syntaxique


Définition :
Dans le cas d'une grammaire hors-contexte G, on peut représenter la dérivation d'une phrase de L(G) à
partir de l'axiome à l'aide d'un arbre syntaxique (un arbre d'analyse ou arbre de dérivation). Cette
représentation fait abstraction de l'ordre d'application des règles de la grammaire et aide à la
compréhension de la syntaxe de la phrase considérée. On appelle arbre de dérivation (ou arbre
syntaxique), tout arbre tel que :

• La racine est le symbole de départ.


• Les feuilles sont des symboles terminaux ou Ɛ.
• Les nœuds sont des symboles non-terminaux.
• Les fils d'un nœud X sont Y0,Y1,….....Yn si et seulement si X—>Y0Y1..Yn avec les Yi ∈ T∪V (les terminaux)

Pour déterminer si une chaine terminale appartient au langage engendré par une grammaire, on établit un
arbre de dérivation dont la racine est l'axiome, les feuilles sont des terminaux formant la chaine donnée et
les nœuds sont des variables décrivant les règles utilisées.

HAYKEL BEN SALEM 20


Expression : a * (a + b00)

E -> E * E
-> I * E
-> a * (E)
-> a * (E + E) a
-> a * (I + E) *
-> a * (a + E) (
-> a * (a + I) a
-> a * (a + I0) +
-> a * (a + I00) b
-> a * (a + b00) 0
0
)
On commence à faire une dérivation à gauche
.
seulement, jusqu'à rencontrer un symbole terminal

Arbre de dérivation de
a* (a+b00)
HAYKEL BEN SALEM 22
• Dérivation la plus à gauche de : a*(b+a0)

E=>E*E=>I*E=>a*E=>a*( E )=> a*(E+E)=>a*(b+E)=>a*(b+I)=>a*(b+I0)=>a*(b+a0)

• Dérivation la plus à droite de : a*(b+a0)

E=> E*E=> E*(E+E)=> E*(E+I)=> E*(E+I0)=> E*(E+a0)=> E*(I+a0)=> E*(b+a0)=>


I*(b+a0)=>a*(b+a0)

HAYKEL BEN SALEM 23


Classification des grammaires

Grammaire Régulière - Type 3

G est dite grammaire de type 3 dite aussi grammaire régulière : si elle est régulière à gauche ou bien à droite.(pas
régulière à gauche et à droite à la fois)

• Une grammaire G est dite régulière à gauche si toutes ses règles sont de la forme :

A Bw ou A w avec A, B ∈ N et w ∈ T* (ɛ fait partit du mot w)

• Une grammaire G est dite régulière à droite si toutes ses règles sont de la forme :

A wB ou A w avec A, B ∈ N et w ∈ T* (ɛ fait partit du mot w)

Remarque : La grammaire de Type 3 est inclus dans la grammaire de Type 2

HAYKEL BEN SALEM 24


Classification des grammaires

Grammaire Régulière - Type 3

Exemple :

• G1 = ({S, A}, {a, b}, {S->Sb| Ab, A->Aa|a}, S) grammaire régulière à gauche. (symboles non terminaux se
trouvent à gauche)

• G2 = ({S, A}, {a, b}, {S->aS| aA, A->bA|b}, S) grammaire régulière à droite. (symboles non terminaux se
trouvent à droite)

• G3 = ({S, A}, {a, b}, {S->aS| aA, A->Ab| b}, S) grammaire n'est pas régulière, puisque n'est ni régulière à
gauche ni régulière à droite. (symboles terminaux se trouvent à gauche et à droite)

HAYKEL BEN SALEM 25


Classification des grammaires

Remarques
1- On peut trouver que G1 et G2 engendrent le même langage. G1 génère les mots de ce langage de la droite
vers la gauche mais G2 génère les mots de ce langage de la gauche vers la droite.

2- Il y a une relation d'inclusion stricte entre les 4 types des grammaires c’est-à-dire :
Une grammaire de type i est aussi de type inférieur à i (1≤i≤3)
Type 3 ⊂ Type 2 ⊂ Type 1 ⊂ Type 0

3- Le type retenu pour une grammaire est le type maximum de la grammaire qui vérifie ses règles.

HAYKEL BEN SALEM 26


Classification des grammaires

HAYKEL BEN SALEM 27


Classification des grammaires

La classification des grammaires va permettre de classer les langages selon le type maximum de la
grammaire qui l'engendre (puisqu'un langage peut être engendré par plusieurs grammaires de types
différents). Il y a une relation d'inclusion stricte entre les 4 types des langages.

On dit qu'un langage est de type i s'il est engendré par une grammaire de type i et pas par une
grammaire d'un type supérieur.

HAYKEL BEN SALEM 28


A chaque type de grammaire est associé un type de langage :

– les grammaires de type 3 génèrent les langages réguliers,

– les grammaires de type 2 génèrent les langages hors-contexte,

– les grammaires de type 1 génèrent les langages contextuels,

– les grammaires de type 0 permettent de générer tous les langages “décidables”, autrement dit, tous les
langages qui peuvent être reconnus en un temps fini par une machine.

HAYKEL BEN SALEM 29


Classification des grammaires

Exemples

• Langage de - Type 0 : (engendré par une grammaire de type 0)

L = {ac, acb, ca...}


G = ({S}, {a, b, c}, {S->aS| Sb |c , aSb -> Sa | bS}, S)

• Langage contextuel - Type 1 : (engendré par une grammaire de type 1)

L = {anbncn | n≥0}
G = ({S, B, W, X}, {a, b, c}, {S-> abc, S -> aSBc, cB->WB, WB-> WX, WX-> BX, BX-> BC, bB->bb}, S}

HAYKEL BEN SALEM 30


• Langage hors Contexte - Type 2 :

L = { anbn | n ≥0}
G =({S}, {a, b}, {S -> aSb| ε}, S)

• Langage régulier - Type 3 :

L = { m ∈ {a, b}*}
G =({S}, {a, b}, {S -> aS | bS| ε}, S)

Remarque :

Si un langage peut être généré par une grammaire de type x et pas par une grammaire d’un type supérieur
dans la hiérarchie, est appelé un langage de type x.

HAYKEL BEN SALEM 31


Grammaire versus Reconnaisseur

• Une grammaire d’un langage L permet de générer tous les mots appartenant à L.
• Un reconnaisseur pour un langage L est un programme qui prend en entrée un mot m et
répond oui si m, appartient à L et non sinon.
• Pour chaque classe de grammaire, il existe une classe de reconnaisseurs qui définit la même
classe de langages.

Type de Grammaire Type de reconnaiseur


régulière Automate fini
Hors Contexte Automate à pile
Contextuelle Automate linéairement borné
Général (sans restriction) Machine de Turing

HAYKEL BEN SALEM 32


Grammaire régulière - Type 3

Définition
Une grammaire régulière, rationnelle ou à états finis est une grammaire qui décrit un langage régulier. Les
grammaires régulières donnent donc une autre possibilité que les expressions rationnelles et les automates
finis pour décrire un langage régulier.

Une grammaire régulière peut être « à gauche » ou « à droite ».


L'ensemble des grammaires régulières est inclus dans l'ensemble des grammaires hors-contexte. Aussi les
règles de production ne doivent comporter aucun symbole terminal dans leur partie gauche.
De plus, les règles de production doivent être de l'une des 2 formes suivantes:
• grammaire régulière à droite
X → aY
X→a
X→Ɛ
• grammaire régulière à gauche
X →Ya
X→a
X→Ɛ

HAYKEL BEN SALEM 33


A la vue des règles de production, on peut en déduire que le principe d'une grammaire régulière est de
reconnaitre un mot en partant d'une de ses extrémités et de progresser vers l'autre bout du mot en
reconnaissant un seul caractère à la fois

HAYKEL BEN SALEM 34


Grammaires régulières versus automates finis

Pour un langage L, on a équivalence entre


L est reconnaissable par automate fini.
L est reconnaissable par une grammaire régulière droite.
L est reconnaissable par une grammaire régulière gauche.

conversion automate vers grammaire


Σ = {a, b} et N = {X0, X1, X2} un pour chaque état
Axiome : X0 (état initial)
Règles : Xp → αXq (pour (p,α, q) transitions)
X0 → aX1
X1 → aX2| bX0| Ɛ et Xp → Ɛ pour p final
X2 → aX0 | bX2

35
Grammaires régulières versus automates finis

conversion grammaire vers automate

Axiome : S
Règles :

S → aS | aaT | bb
T → a | bT | S | bS | Ɛ

Il faut rajouter un état final F → Ɛ et pour toutes les productions quand une partie droite n'a pas de non
terminal on ajout F à la suite. Donc on aura :

S → aS | aaT | bbF
T → aF | bT | S | bS | ƐF
F→Ɛ
Cette grammaire reconnait le même langage que celle d'avant, parce que on a ajouté que F qui prend Ɛ

HAYKEL BEN SALEM 36


On met autant d'état que des symboles non terminaux (S, F, T) avec axiome : S et F état final

T→ S n'a
pas de lettre terminale
donc on met Ɛ Pour cette
transition. Même chose pour
T→F

Il faut transformer cet automate en automate classique, quand on a plusieurs lettres il faut ajouter des
états.

HAYKEL BEN SALEM 37


38
Grammaire hors contexte Type 2

Définition (Rappel)

Une grammaire hors contexte dite aussi à contexte libre ou non contextuelle, ou
algébrique, est une grammaire qui ne dépend pas du contexte.

• Chacune de ses règles de production est de la forme : A → α où A est non


terminal et α est une séquence de terminaux et non terminaux.
A ∈ N et α ∈ (N ∪ T)*
• S ∈ N : axiome
• La forme Backus-Naur (BNF) est la notation la plus communément utilisée pour
décrire une grammaire non contextuelle.
• Les grammaires hors contexte sont reconnues par des automates à pile.

HAYKEL BEN SALEM 39


Grammaires hors contexte

Grammaire propre

Une grammaire propre :


• Si elle n'a pas de variables non productives (improductives).
A est improductive s'il n'y a pas de m ∈T*/ A →* m
• Si elle n'a pas de variables inaccessibles.
A est inaccessible s'il n'y a pas de α et β / S →* αAβ
• Elle n'a pas de production epsilon.
Une Ɛ -production est une dérivation / A →*Ɛ
• Elle n'a pas de cycles.

Pour rendre une grammaire propre on élimine chacun de ces problèmes.

40
Calcul des improductifs

Définition d'un improductif


Un non-terminal X ∈ N est improductif s'il n'existe pas de mot u ∈ T* tel que
X →* u (le langage engendré par X est vide). Il est productif sinon.

Calcul des improductifs


1. On calcule les productifs
2. Par complémentaire on a les improductifs

Ensuite on répare la grammaire pour que les improductifs ne le soient plus.

Remarque : On obtiendrait une grammaire équivalente à celle de départ en supprimant toutes les
productions contenant un improductif en partie gauche ou droite.

HAYKEL BEN SALEM 41


Calcul des improductifs (suite)

Calcul des productifs : idée

X est productif :

• S'il existe une production X → u avec u ∈ T*;

• Ou s'il existe une production X → α avec α ∈ (N ∪ T)* tel que tous les non-
terminaux apparaissant dans α sont productifs.

HAYKEL BEN SALEM 42


Calcul des improductifs (suite)

Procédures de dérivations

Etape 1 : Inclure tous les symboles non terminaux W1 qui dérivent les terminaux et
initialiser i = 1.

Etape 2 : Inclure les terminaux Wi+1 qui dérivent Wi.

Etape 3 : incrémenter i et répéter l'étape 2 jusqu'à obtenir Wi+1 = Wi.

Etape 4 : Inclure toutes les règles de productions des symboles de Wi.

HAYKEL BEN SALEM 43


Exemple
Soit la grammaire G suivante, éliminer les improductifs.
S → AC|B , A → a, C →c |BC, E → aA|e

T = {a, c, e} Ensemble des terminaux.


W1 = {A, C, E} les symboles qui dérivent les terminaux de l'ensemble T.
W2 = {A, C, E, S} les symboles qui dérivent l'ensemble W1 .
W3 = {A, C, E, S}

W2 = W3 on arrête et on réécrire la nouvelle grammaire G' équivalente à G.


B est improductif, on élimine toutes les règles qui contiennent B.
G' = {(A, C, E, S), {a, c, e}, P, (S)}
S → AC, A → a, C →c, E → aA|e

HAYKEL BEN SALEM 44


Calcul des improductifs(suite)

Algorithme naïf pour calculer un plus petit point fixe par itérations successives :

• On part d'un ensemble initial;


• On le fait grossir itérativement;
• Jusqu'à stabilisation.

HAYKEL BEN SALEM 45


Calcul des improductifs (suite)

Entrée : une grammaire algébrique G


Sortie : ensemble des Prod de ses non-terminaux productifs.
//Init
Prod = Ø
Pour toute production X → u , u ∊ T*
Faire Prod = Prod ∪ {X}
Fin faire
//Itération
Faire jusqu'à stabilisation de Prod
New = ∅ //les productifs découverts pendant l'itération

46
Pour toute production X = u1X1u2.......Xnun
Tant que X ∉ Prod // X pas encore traité
Et {X1, ….Xn} ⊆ Prod //X Productif
Faire New = New ∪ {X}
Fin Faire
Prod = Prod ∪ New
Fin faire

HAYKEL BEN SALEM 47


Exemple

Soit la grammaire G1 telle que N ={S, X, Y, Z, W}, T = {a, b, d}, Axiome = S


1. S → aX
2. S → dW
3. X → bS
4. X → aYbY
5. Y → ba
6. Y → aZ
7. W → aS

HAYKEL BEN SALEM 48


Solution

On trouve Prod ={Y, X, S, W} donc Z est improductif .

En supprimant Z partout on obtient la grammaire équivalente à G


G'1 tel que N = {Y, X,S, W}
1. S → aX
2. S → dW
3. X → bS
4. X → aYbY
5. Y → ba
7. W → aS

HAYKEL BEN SALEM 49


Calcul des non terminaux inaccessibles

Définition

Soit G une grammaire hors contexte d'axiome S. Un non terminal X ∊ N est


inaccessible s'il n'existe pas des mots α, β ∊ (N ∪ T)* tel que S →* αXβ. Il est
accessible sinon.

HAYKEL BEN SALEM 50


Calcul des non terminaux inaccessibles

On calcule les accessibles.


On a par complémentaire les inaccessibles.
Ensuite on répare la grammaire pour que les inaccessibles ne le soient plus.

Idée
X est accessible si :
C'est l'axiome.
Ou il existe une production Y → αXβ telle que Y est accessible.

Même principe d’itération de point fixe que pour les accessibles mais on cherche
les candidats en partie droite de production.

HAYKEL BEN SALEM 51


Calcul des non terminaux inaccessibles

Etapes de calcul des inaccessibles:

Etape 1 : inclure le symbole de départ de la grammaire (Axiome) dans Y1 et


initialiser i = 1.

Etape 2 : inclure dans l'ensemble Yi+1 tous les symboles qui peuvent êtres dérivés
de Yi.

Etape 3 : incrémenter i, répéter l'étape 2 jusqu'à Yi+1 = Yi.

HAYKEL BEN SALEM 52


Calcul des non terminaux inaccessibles
Exemple :
Soit la grammaire G' suivante de l'exemple précédent, éliminer les terminaux
inaccessibles.
P : S → AC , A → a, C → c, E → aA | e
Etape 1 : Y1 = {S}
Etape 2 : Y2 = {S, A, C} Ensemble de symboles qui se dérive de l'ensemble Y1
Etape 3 : Y3 = {S, A, C, a, c}
Etape 4 : Y4 = {S, A, C, a, c}

Y4 = Y3, on arrête et on écrit la grammaire G". E est inaccessible.


G" = {(S, A, C), {a, c}, P, {S}}
P : S → AC, A → a, C → c

HAYKEL BEN SALEM 53


Exemple

Soit G2 telle que N = {S, Y, U, V, X , Z } Axiome = S, T = {a, b, d, e} et

1. S→Y
2. Y→YZ
3. Y→Ya
4. Y→b
5. U→V
6. X→e
7. V→Vd
8. V→d
9. Z→ZX

HAYKEL BEN SALEM 54


Solution

Acc = {S, Y , Z , X }
En supprimant U et V partout on obtient la grammaire équivalente à G :
G'2 telle que :

1. S → Y
2. Y → YZ
3. Y → Ya
4. Y → b
6. X → e
9. Z → ZX

HAYKEL BEN SALEM 55


Attention

Si on veut calculer une grammaire propre il faut :


Supprimer tout d'abord les improductifs puis les inaccessibles.

HAYKEL BEN SALEM 56


Élimination des ϵ-productions

Dans une grammaire non contextuelle, un symbole non terminal est annullable,
s'il a une production A → ϵ, ou il y a une dérivation qui commence par A et arrive
à ϵ. (A → …......→ ϵ)

Procédure d'élimination :
Pour éliminer A → ϵ il faut voir toutes les productions qui ont un A dans la partie
droite.
Remplacer chaque occurrence de 'A' dans toutes les règles par ϵ.
Ajouter les nouvelles productions à la grammaire.

HAYKEL BEN SALEM 57


Exemple

Retirer toutes les ϵ-productions de la grammaire suivant :


S → ABAC, A → Aa| ϵ , B → bB| ϵ, C → c
Solution
On a les ϵ-productions suivantes A → ϵ et B → ϵ
1- Pour éliminer A → ϵ

S → ABAC On obtient donc de nouvelles productions :


S → ABC | BAC | BC S → ABAC| ABC | BAC | BC
____________________ A→ Aa| a
A → Aa B → bB| ϵ, C → c
A→a

HAYKEL BEN SALEM 58


1- Pour éliminer B → ϵ
On part de la nouvelle grammaire, on a :
S → ABAC| ABC | BAC | BC et B → bB
Donc après élimination de B → ϵ
S → AAC| AC | C
B→b

On obtient de nouvelles productions :


S → ABAC| ABC | BAC | BC | AAC| AC| C
A→ Aa| a
B → bB| b
C→c

HAYKEL BEN SALEM 59


Élimination des ϵ-productions
**Calcul des symboles annulables :
• Soit U0 = ∅ et i = 1
• Soit U1 = {A ∈ N, A → ϵ ∈ R}
• Tant que Pi ≠ Pi-1
Ui+1 = Ui ∪ { A ∈ N, ∃ α ∈ (Ui)* , A → α ∈ R}
i=i+1
⇒ les symboles U sont annulables.
**Modification de la grammaire :
• Remplacer les règles A → αXβ où X ∈ U par A → αXβ|αβ
(avec combinaison possible de X dans les règles)
• Supprimer toutes les règles A → ϵ (sauf pour S)
• Supprimer toutes les règles A → A
⇒ Grammaire équivalente à ϵ près

HAYKEL BEN SALEM 60


Elimination des cycles de variables

Algorithme d’élimination des cycles de variables

Pour tout cycle de variables X1, ..., Xk :


Remplacer partout X2, ...,Xk par X1.
Supprimer les symboles X2, ...,Xk .

Exemple
Soit la grammaire définie par : S → AB | aS | A | B | a
A → Ab | b
B → AS | A | S

HAYKEL BEN SALEM 61


Elimination des cycles de variables

On a un cycle de variables S, B.
On remplace B par S, puis on supprime B :

S → AS | aS | A | S | a,
A → Ab | b

HAYKEL BEN SALEM 62


Équivalences et productions simples
Productions simples, dérivations et classes d’équivalences
• Production simple : toute règle A → B avec B ∈ N
• Soit la relation ≥ telle que A ≥ B si A →* B
• Soit la relation ≈ telle que A ≈ B si A ≥ B et B ≥ A
Classes d’équivalences
Si A ≈ B, tout ce qui est dérivé de A peut l’être de B
Modification de la grammaire
On conserve les productions non-simples
Pour chaque classe d’équivalence ⇒ Choisir un symbole qui remplace tous les
autres.
Pour chaque dérivation A →* B
Pour chaque B → β , ajouter A → β

HAYKEL BEN SALEM 63


Exemple : simplification de grammaire

Grammaire :
1. S →T| U
2. U → aYb| V
3. V → W
4. X → Wa
5. Y → Z
6. Z → c| ϵ
Etapes
• Symboles productifs :
• Symboles accessibles :
• ϵ-productions :
• Productions simples :

HAYKEL BEN SALEM 64


Exemple : simplification de grammaire

Grammaire :
1. S →T| U
2. U → aYb| V
3. V → W
4. X → Wa
5. Y → Z
6. Z → c| ϵ
Etapes
• Symboles productifs : {X; Z; Y; U; S} ⇒ retirer T, V et W
• Symboles accessibles :
• ϵ-productions :
• Productions simples :

HAYKEL BEN SALEM 65


Exemple : simplification de grammaire

Grammaire :
1. S →U
2. U → aYb
4. X → a
5. Y → Z
6. Z → c| ϵ
Etapes
• Symboles productifs : {X, Z, Y, U, S} ⇒ retirer T, V et W
• Symboles accessibles : {Z, Y, U, S} ⇒ retirer X
• ϵ-productions :
• Productions simples :

HAYKEL BEN SALEM 66


Exemple : simplification de grammaire

Grammaire :
1. S →U
2. U → aYb
5. Y → Z
6. Z → c| ϵ
Etapes
• Symboles productifs : {X, Z, Y, U, S} ⇒ retirer T, V et W
• Symboles accessibles : {Z, Y, U, S} ⇒ retirer X
• ϵ-productions : {Z, Y} ⇒ Modifier 6 et 2
• Productions simples :

HAYKEL BEN SALEM 67


Exemple : simplification de grammaire
Grammaire :
1. S →U 1. S → aYb| ab
2. U → aYb| ab 2.
5. Y → Z 5. Y → c
6. Z → c 6.

• Symboles productifs : {X, Z, Y, U, S} ⇒ retirer T, V et W


• Symboles accessibles : {Z, Y, U, S} ⇒ retirer X
• ϵ-productions : {Z, Y} ⇒ Modifier 6 et 2
• Productions simples : S→U et Y→Z modifier 1, 2, 5, 6

HAYKEL BEN SALEM 68


Forme normale de CHOMSKY

Définition
une grammaire hors contexte est sous la forme normale de Chomsky si chaque
règle est l'une des formes suivantes :
A → BC
A→a

Avec a est un terminal, A est non terminal, et B et C sont des non terminaux autres
que l'axiome.

La règle S → ϵ est acceptée si S est le symbole de départ de la grammaire.

HAYKEL BEN SALEM 69


Forme normale de CHOMSKY

Théorème :
Tout langage hors contexte est généré par une grammaire hors contexte.

Preuve constructive :
En supprimant ou en remplaçant tous les règles sous une mauvaise forme.

1 Si le symbole de départ S apparaît sur la partie droite de n'importe quel règle.


Ajouter un nouveau symbole de départ.
2 Eliminer les ϵ-productions.
3 Eliminer les règles de la forme A → B.
4 Convertir les règles restantes en forme appropriée.

HAYKEL BEN SALEM 70


Forme normale de CHOMSKY

Intérêt de la forme normale de Chomsky:

• Les arbres d’analyse correspondants seront des arbres binaires


• Disposer d’une forme normale pour les grammaires permet de simplifier les
développements de certaines preuves

HAYKEL BEN SALEM 71


Forme normale de CHOMSKY

1. Ajout d'un nouveau symbole de départ


Ajouter la nouvelle règle suivante : S 0 → S

Avec S est le symbole de départ et S 0 n'est pas utilisée dans la grammaire.

2. Eliminer toutes les ϵ-productions A → ϵ quand A n'est pas symbole de départ.


R → uAv devient R → uAv |uv

3. Eliminer chaque règle de la forme A → B.


Pour tout B → u ajouter une nouvelle règle A → u, avec u ∈ (N ∪ T)*
Répéter jusqu'à toutes les règles seront remplacés

HAYKEL BEN SALEM 72


Forme normale de CHOMSKY

4. Convertir les règles restantes en forme appropriée.


• Pour chaque symbole terminal ”a” figurant dans le second membre d’une
production de G, ajouter une nouvelle variable Xa, ainsi que la
production Xa → a.
• Remplacer ”a” par Xa dans les seconds membres des productions qui sont de
longueur au moins 2.
• Remplacer chaque règle de la
forme : A → u1u2...uk, avec k≥3 et ui ∈
(N ∪ T)* avec 2 non terminaux
A → u1 A1 A 1 → u2 A 2 …....AK-2 → uk-1 uK

HAYKEL BEN SALEM 73


Exemple :
S → S1| S2
S1 → S1b| Ab
A → aAb| ab | ϵ
S2 → S2a| Ba
B → bBa| ba| ϵ

HAYKEL BEN SALEM 74


1. Ajout d'un nouveau symbole de départ ?
Ici on n'a pas besoin , pourquoi ?
2. Eliminer toutes les ϵ-productions :
S → S1| S2 On a A → ϵ et B → ϵ
S1 → S1b| Ab Nouvelles règles
A → aAb| ab | ϵ S1 → b
S2 → S2a| Ba A → ab
B → bBa| ba| ϵ S2 → a
B → ba

HAYKEL BEN SALEM 75


S → S1| S2
S 1 → S 1 b| Ab| b
A → aAb| ab
S 2 → S 2 a| Ba| a
B → bBa| ba
3. Eliminer chaque règle de la forme A → B : on a S → S 1 et S → S 2
S → S1| S2

S1 → S1b| Ab|b
A → aAb| ab
S2 → S2a| Ba| a
B → bBa| ba

HAYKEL BEN SALEM 76


S → S 1 b| Ab| b| S2a| Ba| a
S 1 → S 1 b| Ab| b
A → aAb| ab
S 2 → S 2 a| Ba| a
B → bBa| ba
4. Convertir les règles restantes en forme appropriée. A→BC ou A→a

S → S 1 b| Ab| b| S 2 a| Ba| a A → aAb on ajoute une nouvelle règle A1 → Ab


S 1 → S 1 b| Ab| b Et
B → bBa on ajoute une nouvelle règle B1 → Ba
A → aAb| ab
S 2 → S 2 a| Ba| a
B → bBa| ba

HAYKEL BEN SALEM 77


S → S 1 b| Ab| b| S 2 a| Ba| a
S 1 → S 1 b| Ab| b
A → aA 1| ab
A 1 → Ab
S 2 → S 2 a| Ba| a
B → bB 1| ba
B 1 → Ba

On ajoute Xa → a et Xb → b , donc on peut remplacer a par Xa et b par Xb

HAYKEL BEN SALEM 78


S → S 1 Xb| AXb| b| S 2 Xa| BX a| a
S1 → S 1 Xb| AXb| b
A → X aA1| X aXb
A 1→ AXb
S 2 → S 2 Xa| BX a| a
B → X b B 1| X b X a
B 1 → BX a
Xa → a
Xb → b

Grammaire sous forme normale de Chomsky

79
Propriétés des grammaires hors contextes

Définition
Un langage L est dit hors-contexte, s’il est engendré par une GHC.
formellement, un langage L est hors-contexte, si et seulement, il existe une GHC G
telle que L = L(G ).

Théorème
- La classe des langages hors-contexte est close par opérations régulières, c’est-
à-dire par :
• union.
• concaténation.
• Étoile.
- La classe des langages hors-contexte est close par miroir.

HAYKEL BEN SALEM 80


Propriétés des grammaires hors contextes

Preuve de la clôture par union

• Soient L1 et L2 deux langages hors-contexte sur un même alphabet Σ .


• Il existe deux grammaires G 1 = (V1 , Σ , P1 , S1 ) et G 2 = (V2 , Σ , P2 , S2 )
telles que L(G1 ) = L1 et L(G2 ) = L2 . On peut toujours supposer que V1 et
V2 sont disjoints.
• Soit la grammaire G = (V , Σ , P, S) définie par :
i. S : un nouveau symbole, l’axiome.
ii. V = V1 ∪ V2 ∪ {S}
iii. P = P1 ∪ P2 ∪ {S → S1 | S2 }
• On a : L(G ) = L G (S 1 ) ∪ L G (S 2 ) = L 1 ∪ L 2 .

HAYKEL BEN SALEM 81


Propriétés des grammaires hors contextes

Preuve clôture par concaténation

• Soient L1 et L2 deux langages hors-contexte sur un même alphabet Σ .


• Il existe deux grammaires G1 = (V1 , Σ , P1 , S1 ) et G2 = (V2 , Σ , P2 , S2 )
telles que L(G1 ) = L1 et L(G2 ) = L2 .
• On peut toujours supposer que V1 et V2 sont disjoints.
• Soit la grammaire G = (V , Σ , P, S) définie par :
i. S : un nouveau symbole, l’axiome.
ii. V = V1 ∪ V2 ∪ {S}
iii. P = P1 ∪ P2 ∪ {S → S1S2 }
• On a : L(G ) = LG (S1 )LG (S2 ) = L1L2 .

HAYKEL BEN SALEM 82


Propriétés des grammaires hors contextes

Preuve de la clôture par étoile

• Soit L un langage hors-contexte sur un alphabet Σ .


• Il existe une grammaire G = (V , Σ , P, S) telle que L(G ) = L.
• Soit la grammaire G'= (V' , Σ , P' , S' ) définie par :
i. S': un nouveau symbole, l’axiome.
ii. V' = V ∪ {S'}
iii. P' = P ∪ {S' → SS' | ε}
• On a : LG (S') = LG (S)LG (S') ∪ {ε}.
• LG (S') = L*.

HAYKEL BEN SALEM 83


Propriétés des grammaires hors contextes

Preuve de la clôture par miroir

Soit L un langage hors-contexte sur un alphabet Σ .


Il existe une grammaire G = (V , Σ , P, S) telle que L(G ) = L.
Soit la grammaire G' = (V' , Σ , P' , S' ) définie par :

i. S' = S : l’axiome de G .
ii. V' = V.
iii. P' = {X → ᾶ | X → α ∈ P} (Chaque production on fait l'image de son
corps)

HAYKEL BEN SALEM 84


Propriétés des grammaires hors contextes

Attention :
les langages algébriques ne sont pas clos par intersection et complémentaire.

HAYKEL BEN SALEM 85


Récursivité à gauche

Une grammaire est immédiatement récursive à gauche si elle contient un non-


terminal A tel qu’il existe une production A→ Aα où α est une chaîne quelconque.

Exemple
S → ScA|B
A → Aa| ε
B → Bb |d |e

Cette grammaire contient plusieurs récursivités à gauche immédiates.

HAYKEL BEN SALEM 86


Récursivité à gauche

Élimination de la récursivité à gauche immédiate :

Remplacer toute règle de la forme A → Aα|β par

A → βA’
A’ → αA’|ε

La grammaire ainsi obtenue reconnaît le même langage que


la grammaire initiale.

HAYKEL BEN SALEM 87


Récursivité à gauche

Exemple
Sur l'exemple on obtient : S → BS’
S’ → cAS’|ε
S → ScA|B A → A’
A → Aa| ε A’ → aA’|ε
B → Bb |d |e B → dB’|eB’
B’ → bB’|ε

Cette grammaire reconnaît le même langage que la première.

HAYKEL BEN SALEM 88


Récursivité à gauche

Autre Exemple :

E→ E + T|E * k|C|D

Après élimination de la récursivité à gauche :

E → CE’|DE’
E’ → +TE’|*KE’|ε

HAYKEL BEN SALEM 89


Factorisation à gauche

L’idée de base est que pour développer un non-terminal A quand il n'est pas
évident de choisir l'alternative à utiliser (quelle production prendre), on doit réécrire
les productions du A de façon à différer la décision jusqu’à ce que suffisamment de
texte ait été lu pour faire le bon choix.

Exemple :
S→ bacdAbd|bacdBcca
A→ aD
B→ cE
Pour savoir s’il faut choisir S→ bacdAbd ou S→bacdBcca, il faut avoir lu la 5éme
lettre du mot (un a ou un c). On ne peut donc pas dès le départ pour savoir quelle
production prendre.

HAYKEL BEN SALEM 90


Factorisation à gauche

Algorithme Factorisation à gauche


Pour chaque non terminal A trouver le plus long préfixe α commun à deux de ces
alternatives ou plus

si α≠ε remplacer A → αβ1|.....|αβn...|δ1|...|δn (où les δi ne commencent pas par α)


par :

A → αA’|δ1...|δn
A’ → β1|...|βn

HAYKEL BEN SALEM 91


Factorisation à gauche

Exemple

S → aEbS|aEbSeB|a
E → bcB|bca
B→ ba
Factorisée à gauche cette grammaire devient :

S→ aEbSS’|a
S’→ eB|ε
E→ bcE’
E’→ B|a
B→ ba

HAYKEL BEN SALEM 92

Vous aimerez peut-être aussi