Vous êtes sur la page 1sur 10

Chapitre III CLASSIFICATION DES GRAMMAIRES

1. Système générateur de langages


1.1. Définition
a) soit X un alphabet. On définit dans X deux partis complémentaires T et N
- T est dit ensemble des éléments terminaux ou alphabet terminal.
- N est dit ensemble des éléments non terminaux ou non terminal.
On a donc TN=X et TN=
b) On a appelle règle de production (ou règle de réécriture) un couple (α, β) où α et β  (TN)*.
Une règle de réécriture signifie la réécriture de α par β et au sens large, des mots pourront être
remplacés par d’autres mots.

Notation:Il existe plusieurs manières de noter une règle de production :


1. α  β
2. α ::= β Notation dite de Bakus
3. <α> ::= <β> Notation dite BNF (Bakus Normal Form).

La 1ère forme (αβ) est utilisée pour l’expression des règles de production dans notre cours.

1.2 .Grammaire
Définition: On appelle grammaire le quadruplet formée par (T, N, S, P) où S est l’axiome et P est
un ensemble de règles de production.

 Les règles de production de la forme  α ne sont pas autorisées.


 La génération de mots se fait à travers les non terminaux.

Conventions d’écritures:
- Les éléments de T sont écrits suivants des miniscules.
- Les éléments de N sont écrits suivant des majuscules.
- Si α α1; α α2 ; . . . . . α αn Alors on a écrit α α1 /α2/α3/ . . . /αn .

Remarques:
 Si on veut utiliser une grammaire pour générer des mots sur un alphabet, l’ensemble des
lettres terminales T sera exactement l’alphabet.
 L’ensemble contenant à la fois les terminaux et les non terminaux sera désigné par TUN
pour les différencier avec l’alphabet de base.
 N contient au moins un élément qui est l’axiome.

Exemple: Soit la grammaire suivante : G (T, N, S, P) avec T= {a} ; P = {S aS/ε}


Cette grammaire permet de générer les mots a, aa, aaa, . . . . ainsi que ε, l’alphabet de base est {a}.
Classification de Chomsky: Les grammaires se classent suivant plusieurs types qui sont alors
transmis à la nature du langage. Ainsi un langage de type i est généré par une grammaire de type i.
Cette classification est faite suivant la nature des règles de production des grammaires.

Une grammaire G (T, N, S, P) est dite de :


 Type 3: si toutes les règles de P sont de la forme:
A  αB où A α avec A, B N et αT*.
 Type 2: si toutes les règles de P sont de la forme:
A α avec α (TN)* et AN.
 Type 1: si toutes les règles de P sont de la forme:
α β avec |α||β| tel que α(TN)+ et β(TN)*
Si ε apparaît dans une règle de production en partie droite alors on a S en partie gauche. C'est-à-dire
(S ε)P. Les autres règles ou apparaît ε ne sont pas autorisées.

 Type 0: Aucune restriction sur les règles de production.

Remarque:
Il existe une relation d’inclusion entre ces quatre types de grammaires:
(type3  type2  type1  type0)
On entend par type i le plus petit type satisfaisant la grammaire.
Toutes les grammaires sont de type 0.Une grammaire de type 0 n’est pas de type 1(à fortiori
ni de type 2 et 3).

Autres appellations des grammaires: Il existe dans la littérature des synonymes pour les
déférents types de grammaires. A titre indicatif, nous donnerons quelques synonymes:
- Grammaire de type 3 ou grammaire linaire droite, grammaire régulière à droite (regular grammar).
- Grammaire de type 2 ou grammaire algébrique, grammaire à contexte libre, grammaire de
Chomsky (contexte free grammar).
- Grammaire de type 1 ou grammaire à contexte lié (context sensitive grammar).
- Grammaire de type 0 ou grammaire sans restriction (unrestricted grammar).
1.3. Langage et grammaire: Soit une grammaire G (T, N, S, P) de type quelconque:
a- Relation "dérivée"
Définitions: Soient deux mots f et g de ( T  N)*
1) On dit que g dérive directement de f si et seulement si il existe une règle de production:
α  P tel que: f = uv et g = uv avec u, vX*
2) On dit que g dérive de f lorsque g est dérivé directement plusieurs fois de f.

Remarque:
La relation dérive est la fermeture réflexive et transitive de la relation dérive directement.

Notation:
- La relation dérive directement est notée par:  (f  g)
 
- La relation dérive est notée par:  g ) (f
k k
- on peut préciser le nombre k de dérivations notée ainsi:  (f  g )

Exemple: Soit G (T, N, S, P) où T ={0,1}, N={S}, P ={S 0S1 /}


- 0S1 dérive directement de S: S 0S1
- dérive directement de S: S
- 00S11 dérive directement de 0S1: 0S100S11
 2
- 00S11 dérive de S S  00S11on peut même écrire S  00S11

b- Forme "sententielles":
Définitions: Soit G (T, N, S, P) une grammaire de type i .
1) On définit une forme sententielle de manière itérative:
i) S est une forme sententielle.
ii) Si  est une forme sententielle et si () P alors  est aussi une forme
sententielle.
2) On appelle sentence une forme sententielle où ne figure aucun non terminal.

Exemple: soit la grammaire G (T, N, S, P) avec T= {0,1} N={S}, P={S 0S1/}.


 S, 0S1, 00S11 sont des formes sententielles.
 , 01, 0011 sont des sentences.

c- Langage engendré par une grammaire


Définition: Le langage engendré par une grammaire, noté L(G) est exactement l'ensemble des
sentences obtenues par dérivations successives à partir de l'axiome S.

Définition formelle: L (G)= {T / S*
 }
d- Grammaires équivalentes
Définition: Deux grammaires sont équivalentes si elles engendrent le même langage.
G équivalente à G'  L(G)=L(G')

e- Mot engendré par une grammaire: Soit une grammaire G de type i quelconque et soit un mot f.
Pour déterminer si le mot f est engendré par G (fL (G)), il existe 2 manières:
e1) A travers des dérivations successives à partir de l'axiome, c'est à dire en utilisant directement la
définition.
e2) A travers l'arbre de dérivation. On définit un arbre (de dérivation) pour un mot donné par:
-le sommet de l'arbre est l'axiome.
-les branches sont les dérivations successives.
-les feuilles de l'arbre sont les symboles terminaux.

Un mot f appartient à L (G):


*
- Si on peut obtenir f suivant au moins une suite de dérivations à partir de S, c-à-d si on a S  f
- S'il existe au moins un arbre de dérivation tel que en regroupant les symboles terminaux, on
obtient f.

Exemple: soit G (T, N, S, P) avec T= {a, b}, P={s  abT/ baT; TbT/}, N={S, T}.
Vérifier si les mots f, g, h {a, b}* tel que f =, g =abb, h=baba appartiennent à L (G).

- f=; il n'existe pas de règle qui donne le mot vide à partir de S  fL (g).
- g=abb; S  abT  ab(bT) = abbT  (abb) = abb
S  abT  abbT  abb

 S  abb Ainsi gL(G).

Après regroupement des symboles terminaux


a b T on obtient : g = abb  gL(G)

b T


Après regroupement des symboles terminaux on obtient : g = abb  gL(G)

- h=baab; S  baT  il n'existe pas de dérivation à partir de T pour générer ab hL(G).

hL(G)
a b T

Remarques:
1) Conclure qu’un mot n’appartient pas au langage engendré par une grammaire revient à parcourir
toutes les règles de production.
2) Un mot peut avoir plus d’une suite de dérivations à partir de l’axiome S (plus d’un arbre de
dérivation), le mot est alors dit ambigu.

Définitions: Soit G une grammaire de type i.


- Un mot est dit ambigu s'il existe plusieurs arbres de dérivations pour ce mot.
- Une grammaire est dite ambiguë s'il existe au moins un mot ambigu engendré par G.

Exemple : G(T,N,S,P) où T={a,b,c} N={S}, P={S  SbS /ScS /a}

Considérons le mot acaba

S S

S c S S b S

a a

S b S S c S

a a a a

Le mot acaba  L(G) et il est ambigu  G est ambiguë.


1.4. Exemples de grammaires
a) Type3: L={ anbm n, m ≥ 0}
 G(T,N,S,P) où T={a,b} N={S, R} P={S  aS /R /, R  bR /}

Remarque:
Plusieurs variantes de ce langage de type 3 peuvent être obtenues en agissant sur n et m.
n ≥0 et m >0
n >0 et m ≥0
n >0 et m >0

Exemple: L={ anbm n, m ≥1 }


 G(T,N,S,P) où T={a,b} N={S} P={S  aS /aR, R  bR /b}

D’autres langages peuvent être obtenus en changeant l’alphabet de base; par exemple {0,1} donne
0n 1m.

Exemple: L={ (xy)n zm n ,m ≥ 0} .

b) Type 2: L={anbn n≥0} .


 G(T,N,S,P) où T={a,b} N={S} P={S  aSb / }

b) Type 1: L={anbncn n≥1}


 G(T,N,S,P) où T={a, b, c} N={S, R, T}
P={ S  aRbc / abc;
Ra R T b /a T b;
TbbT ;
Tc cc}

1.5. Autres exemples


a) L = {w / w{0,1}* et |w|1 est pair ou nul } est engendré par une grammaire de type 3 .
G = ({0,1} , {S ,A}, S , P) où P={ S 0S/ 1A/ε ; A 0A/1S }
Ou G’ = ({0,1} ,{S} , S , P’) où P’= {S S1S1S/ 0S/ ε) de type 2.

G et G’ sont équivalentes  on utilisé celle de Type 3 .

b) L={wwR / w  { a, b }* }  G = ({a, b} , {S} , S , {S  aSa /bSb /ε} )

c) Le langage des expressions arithmétiques bien parenthèsées sur a est généré par:
G (T , N , E ,P) de Type 2
T ={a , +, * ,( , ) } N={ E, T , F}
P={ E E+T /T ; T T*F /F ; F (E) /a }

Une autre grammaire G’ = (T , {E} , E , P’) avec P’={E  E+E / E*E / (E) /  / a }

G est équivalente à G’ mais G’ est ambiguë.


d) Grammaire qui permet de générer les déclarations de variables simple en PASCAL:
<Program> ::= Program <identificateur> ;<Bloc>
<Bloc> ::= <Partie déclaration> <Partie énonce>
<Partie déclaration> ::=VAR <déclaration variables>
<Déclaration Variables> ::= <Liste identificateurs> : <Type>
<Liste identificateur> := Identificateur <Liste identificateur> / Identificateur
<Type>:= Integer /Char /Real /Boolean
.
.
.

2. Système reconnaisseur de langage

2.1. Description: Un système reconnaisseur est une machine qui permet de lire un mot à travers
ses différentes manipulations. Cette machine appelée AUTOMATE permet de reconnaître un
langage.

Schéma d’un automate: Il existe plusieurs types d’automate, cependant ils ont tous une structure
commune et leurs différences intervient sur des points précis, sans modifier la structure de base.

Un automate est composé de 3 parties :


1. Une bande en entrée, finie ou infinie sur laquelle va s’inscrire le mot à lire.
2. Un organe la commande qui permet de gérer un ensemble fini d’états.
3. Une mémoire auxiliaire de stockage.

Le schéma d’un automate est :

Bande en entrée

Tête de lecture (/écriture)

Organe de
commande

Mémoire
Auxiliaire

2.2. Caractéristiques d’un automate:


a- La bande en entrée est divisée en cellules où chaque cellule contient un symbole (de l’alphabet)
du mot composé d’une suite de symboles.
La bande est lue par le biais d’une tête de lecture/écriture dont le principe est suivant:
 La lecture d’un symbole à la fois.
 Déplacement de la tête de lecture vers la droite ou dans certains cas d’automates particuliers
vers la gauche.
 Dans certains cas, il y a écriture sur la bande en entrée. Cette écriture se fait cellule par cellule
et exprime le remplacement d’un symbole par un autre.

b- La gestion des états se fait à travers une fonction spécifique dite fonction de transition.

c- La mémoire auxiliaire est arbitrairement générée suivant la nécessite et elle dispose dans le cas
ou elle existe d’un alphabet spécial. Cette mémoire est caractérisée par des fonctions de recherche et
de stockage.

2.3. Définition Formelle: La définition minimale d’un automate correspond :


 Un alphabet en entrée, noté X
 Un ensemble d’états, noté Q
 Un état initial, noté q0 (q0 Q)
 Une fonction de transition, noté 
 Un ensemble d’état finaux, noté F ( F  Q )

La fonction de transition minimum  est définie comme suit :


 : Q  X  Q
Elle exprime que la transition d’un état vers un autre s’effectue en lisant une lettre de X.
Remarques:
 Le domaine et co-domaine de la fonction varient selon les automates particuliers.
 Cette structure minimale peut être étendue pour obtenir les autres automates, en agissant sur
l’ajout d’une mémoire auxiliaire, sur la nature de la bande en entrée ou sur le sens de lecture
de la tête.

Notation: Un automate quelconque est noté par A (liste paramètre).


Exemple: La structure de base d’un automate est A (X, Q, q0, , F)

2.4. Langage et Automate

a) Configurations de l’automate

a.1. Extension de la fonction de transition : La fonction  agit sur un symbole de X à la fois .Pour
lire les mots de X*.  Est entendue à la fonction * qui agit sur X*.
* : Q  X*  Q
 : Q  X  Q
 */X = 

Exemple:
 : Q  X  Q
* : Q  X*  Q
Pour lire mot aaa: * n’est rien d’autre que l’utilisation successive de  pour la lettre a.

a.2. Mouvement de l’automate: Le fonctionnement d’un automate sur un mot se fait à travers une
succession de configurations.

Définition: On appelle configuration d’un automate pour un mot donnée l’image instantané de
l’automate donnée par :
 La position de la tête de lecture.
 L’état de l’automate.
 Et éventuellement le contenu de la mémoire auxiliaire (lorsqu’elle existe).

Remarque:
1. Les configurations successives d’un automate sont déterminées à partir de  qui est notée
par ├─ et * est notée par ├─*
2. Il existe deux configurations particulières: Initiale et Finale.

Définitions:
On appelle configuration initiale d’un automate la configuration où:
 L’état est l’état initial.
 La tête de lecture est pointée sur le 1er élément du mot.
 Et éventuellement le contenu initial de la mémoire auxiliaire.

On appelle configuration finale d’un automate une configuration où:


 L’état est un des états finaux.
 Le mot est entièrement lu (la tête à la fin du mot)
 Et éventuellement le contenu final du la mémoire auxiliaire.
On dit qu’un mot est reconnu par un automate, si à partir de la configuration initiale (pour ce
mot) et à travers une succession de transitions, on atteint une configuration finale.

b) Langage reconnu par un automate: Le langage reconnu par un automate A noté L (A) est
l’ensemble des mots reconnus par cet Automate.
L(A) = {   X* / configuration initiale ( ) ├─* Configuration finale ( )}
2.3. Classification des Automates

Type d’automate:A chaque type de grammaire (Langage) correspond un type d’automate comme
système reconnaisseur de langages.

Les automates sont équivalents s’ils reconnaissent le même langage :


A équivalent à A  L (A)=L (A)

Type 3: Automate d’états finis (AEF) sa structure est caractérisé par :


a) Sa bande en entrée est finie
b) Le sens de lecture est vers la droite
c) Pas d’écriture sur la bande
d) Pas de mémoire auxiliaire

Type 2: L’automate à pile de mémoire (APM): Sa structure est la même que celle de AEF
enrichie par une mémoire auxiliaire.
a) Sa bande en entrée est finie
b) Le sens de lecture est vers la droite
c) Pas d’écriture sur la bande
d) Mémoire auxiliaire illustre par une pile.

Type 1: Automate à borne linéaire (ABL). La structure est étendue par rapport à celle de AEF par
une lecture vers la gauche et un marquage (écriture sur la bande). Donc il est caractérisé par:
a) Sa bande en entrée est finie
b) La lecture dans les 2 sens
c) Ecriture (éventuelle) sur la bande, par un système de marquage
d) Pas de mémoire auxiliaire

Type 0: Machine de Turing (TM), sa structure est celle de ABL ou la bande en entrée est infinie.
La MT est caractérisée par :
a)La bande en entrée est infinie.
b) La lecture dans les 2 sens
c) Ecriture (éventuelle) sur la bande, par un système de marquage
d) Pas de mémoire auxiliaire

Vous aimerez peut-être aussi