Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Chap 3 Gram Maire

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

1/17

Chapitre 3 :
Grammaires, langages
algébriques et automates à pile

Filière SMI Semestre 5 Théorie des langages et des automates


2/17

1. Introduction

Nous avons vu au chapitre 2 que l’on peut définir des langages rationnels en
utilisant les automates (les langages reconnaissables).
Et que ces langages permettent de définir formellement beaucoup de langages,
mais pas tous, par exemple le langage {an b n | n ∈ N} n’est pas rationnel (voir
TD 3).
Dans ce chapitre, nous allons présenter une famille des langages plus vaste,
des langages générés par des méthodes plus riches que les expressions
rationnelles, des langages définis à l’aide de grammaires.
Il s’agit des langages algébriques (ou hors-contexte).
Ces langages ont été introduits par Avram Noam Chomsky dans le but de
formaliser les propriétés grammaticales de langues naturelles.
On a montrer par la suite, que ces notions peut être adaptées à la syntaxe des
langages de programmation.

Filière SMI Semestre 5 Théorie des langages et des automates


3/17

2. Grammaires 2.1 Définitions

Grammaire

Une grammaire est un quadruplet G = (T , N, S, R) où


T est un alphabet fini dit terminal,
N est un alphabet fini dit non-terminal (variable) et disjoint de T
S ∈ N est un non-terminal appelé axiome (variable initiale).
R ⊂ (T ∪ N)∗ \ {ε} × (T ∪ N)∗ est un ensemble fini de règles de production
(ou de réécriture).
Une règle est α −→ β, α ∈ (T ∪ N)∗ \ {ε}, β ∈ (T ∪ N)∗ .
On dit que α se réécrit β et que α est la partie gauche et β la partie droite de la
production α −→ β.
Convention : on note les terminaux en minuscules et les non-terminaux en
majuscules.

Exemple

Soit G = (T , N, S, R) une grammaire définie comme suit :


T = {a, b}, a et b sont deux terminaux.
N = {A, B, S}, A, B et S sont trois non-terminaux dont S est l’axiome.
Les règles de production sont définies par
R = {S −→ aAbB, bB −→ bABB, bA −→ Ab, bB −→ bb, aA −→ aa}
Filière SMI Semestre 5 Théorie des langages et des automates
4/17

2. Grammaires 2.2 Dérivation (Réécriture)

Définition
Soit G = (T , N, S, R) une grammaire, et soient f et g deux mots de (T ∪ N)∗ .
Une dérivation immédiate est une relation de dérivation −→ définie par :
f −→ g si, et seulement si, f = f1 uf2 , g = g1 vg2 et (u −→ v ) ∈ R.
Une dérivation est une séquence de réécritures de la forme :
f = f0 −→ f1 −→ f2 −→ · · · −→ fn−1 −→ fn = g, notée f −→∗ g, où la
relation −→∗ est dite clôture reflexive et transitive de −→.
Lorsque l’on a plusieurs dérivations f −→ u, f −→ v , f −→ w , on peut réduire
la notation en f −→ u|v |w .

Exemple

Soit la grammaire G = ({+, ∗, (, ), a, b}, {E , T , F }, E , R) avec


R = {E −→ E + T |T ; T −→ T ∗ F |F ; F −→ (E )|a|b}
On peut dériver le mot a+b*a (E −→∗ a + b ∗ a) par la dérivation suivante :
E −→ E + T −→ T + T −→ F + T −→ F + T ∗ F −→ a + T ∗ F −→ a + F ∗ F −→
a + F ∗ a −→ a + b ∗ a

Filière SMI Semestre 5 Théorie des langages et des automates


5/17

2. Grammaires 2.3 Langage engendré par une grammaire

Définition
Soit G = (T , N, S, R) une grammaire.
On appelle langage engendré par G, noté L(G), l’ensemble des mots u ∈ T ∗ tels que
S −→∗ u. Autrement,
L(G) = {u ∈ T ∗ | S −→∗ u}

Exemple

Soit la grammaire G = ({a, b}, {S}, S, R),


si R = {S −→ aSbS|bSaS|ε} alors L(G) est le langage des mots qui contiennent
autant de a que de b.
si R = {S −→ ab|aSb} alors L(G) = {an b n | n > 0}.

Définition : Grammaires équivalentes


Deux grammaires G1 et G2 sont équivalentes si, et seulement si, L(G1 ) = L(G2 ).

Exercice

Donner les langages engendrés par les grammaires suivantes :


1 G = ({a, b}, {S}, S, {S −→ aS|Sb|ε})
2 G = ({a, b}, {A, B, S}, S, R) où R = {S −→ A|B; A −→ aA|B|ε; B −→ bB|ε}.

Filière SMI Semestre 5 Théorie des langages et des automates


6/17

3. Classes de grammaires (hiérarchie de Chomsky)

La notion d’hiérarchie de classes de grammaires a été introduite par Chomsky.


Chaque classe est définie par une contrainte particulière sur le type des règles de
récriture.

Classes de grammaires
1 Grammaires de type 0 : une grammaire dans laquelle la forme des productions
est non-contrainte (peut utiliser toutes les règles, u −→ v avec
u ∈ (T ∪ N)∗ \ {ε} et v ∈ (T ∪ N)∗ ).
2 Grammaires de type 1 (sous-contexte) : une grammaire dans laquelle la forme
des productions est u −→ v avec u, v ∈ (T ∪ N)∗ \ {ε} et |u| ≤ |v |.
3 Grammaires de type 2 (algébriques ou hors-contexte) : une grammaire dans
laquelle forme des productions est A −→ u avec A ∈ N et u ∈ (T ∪ N)∗ (le
membre gauche est réduit à un non-terminal).
4 Grammaires de type 3 (régulières) : une grammaire dans laquelle forme des
productions est A −→ a|ε ou A −→ aB (ou A −→ Ba) avec A, B ∈ N et a ∈ T .

Exemple

1 G = ({a, b}, {S}, S, {S −→ aSbS|bSaS|ε}) est une grammaire algébrique.


2 G = ({0, 1}, {A, B, S}, S, R = {S −→ 1A; A −→ 0A|0B; B −→ 1}) une
grammaire régulière.
Filière SMI Semestre 5 Théorie des langages et des automates
7/17

3. Langages algébriques 3.1 Présentation générale

Définition : Langages algébriques


Un langage algébrique L est un langage engendré par une grammaire algébrique
G = (T , N, S, R). Autrement, L = L(G) = {u ∈ T ∗ | S −→∗ u}.

Exemple

Le langage L(G) = a∗ b ∗ est un langage algébrique car il engendré par la


grammaire G = ({a, b}, {S}, S, {S −→ aS|Sb|ε}).
Le langage L(G) = {an b n | n ≥ 0} est un langage algébrique car il engendré par
la grammaire G = ({a, b}, {S}, S, {S −→ ab|aSb|ε}).

Propriétés

1 L1 et L2 langages algébriques =⇒ L1 ∪ L2 et L1 L2 langages algébriques.


2 L langage algébrique =⇒ L∗ langage algébrique.
3 L1 et L2 langages algébriques ; L1 ∩ L2 langage algébrique.
4 L langage algébrique ; L langage algébrique.
5 Tout langage rationnel (reconnaissable) est algébrique.
6 LA langage algébrique et LR langage rationnel =⇒ LA ∩ LR langage algébrique.

Filière SMI Semestre 5 Théorie des langages et des automates


8/17

3. Langages algébriques 3.1 Présentation générale

Propriétés (preuve)

1 Si L1 = L(G1 ) et L2 = L(G2 ) avec G1 = (T1 , N1 , S1 , R1 ) et


G2 = (T2 , N2 , S2 , R2 ) alors il est simple de construire une grammaire
G = (T1 ∪ T2 , N1 ∪ N2 ∪ {S}, S, R1 ∪ R2 ∪ {S −→ S1 |S2 }) qui engendre le
langage L1 ∪ L2 .
De même, on peut construire la grammaire
G = (T1 ∪ T2 , N1 ∪ N2 ∪ {S}, S, R1 ∪ R2 ∪ {S −→ S1 S2 }) qui engendre le
langage L1 L2 .
2 Si L = L(G) avec G = (T , N, S, R) alors on peut construire une grammaire
G 0 = (T , N ∪ {S 0 }, S 0 , R ∪ {S 0 −→ S 0 S|ε}) qui engendre le langage L∗ .

Les preuves du reste des propriétés seront traités au TD 4 .

Filière SMI Semestre 5 Théorie des langages et des automates


9/17

3. Langages algébriques 3.2 Arbres de dérivation

La notion d’arbre de dérivation est importante dans l’étude des grammaires et


langages algébriques.

Définition d’un arbre

Un arbre A = (V , E ) est le couple constitué par un ensemble fini de nœuds étiquetés


V = {a1 , a2 , ..., an }, et par un ensemble E ⊂ V × V ensemble des liens entre les
nœuds, où
1 Un nœud a est le père d’un nœud b s’il existe un lien de a vers b, b est dit le
fils de a.
2 Il existe un et un seul nœud qui n’est fils d’aucun autre nœud appelé la racine.
3 Tout nœud différent de la racine est le fils d’un père unique.
4 On peut aller de la racine à tout autre nœud en suivant les liens.
5 Un nœud sans fils est appelé une feuille.

racine

nœud 1 nœud 2 nœud 3

feuille1 feuille2 feuille3 feuille4 feuille5

Filière SMI Semestre 5 Théorie des langages et des automates


10/17

3. Langages algébriques 3.2 Arbres de dérivation

Définition d’un arbre de dérivation

Soit G = (T , N, S, R) une grammaire algébrique et L(G) un langage algébrique


engendré par G.
Un arbre de dérivation d’un mot u ∈ L(G) est un arbre dont :
La racine est étiqueté par l’axiome S.
Les feuilles sont étiquetées par des terminaux (des lettres de T ).
Les nœuds internes sont étiquetés par des non-terminaux (des lettres de N).
Le passage d’un nœud interne à ses successeurs correspond à une règle de
production. Autrement,
si un nœud N a pour descendants immédiats N1 , N2 , · · · , Nk , alors
(N −→ N1 N2 · · · Nk ) ∈ R.
La lecture des étiquettes des feuilles de gauche à droite donne le mot u.

Exemple

Soit G = ({+, ∗, 0, 1}, {S, NB}, S, R) une grammaire avec


R = {S −→ S + S|S ∗ S|NB; NB −→ 0|1|0NB|1NB}.
G est une grammaire algébrique. Un arbre de dérivation du mot u = 10 ∗ 10 + 10 est
de la forme : Voir le diapo suivant.
Filière SMI Semestre 5 Théorie des langages et des automates
11/17

3. Langages algébriques 3.2 Arbres de dérivation

S * S

NB S + S

1 NB NB NB

0 1 NB 1 NB

0 0

Théorème (Preuve voir TD 4 (exercice 2, question 4))


Soit G = (T , N, S, R) une grammaire algébrique et L(G) un langage algébrique
engendré par G.
u ∈ L(G) si, et seulement si, il existe un arbre de dérivation pour u dans G.

Filière SMI Semestre 5 Théorie des langages et des automates


12/17

3. Langages algébriques 3.3 Ambiguı̈té

Soit G = (T , N, S, R) une grammaire algébrique et L(G) un langage algébrique


engendré par G.
Le mot u ∈ L(G) est dit ambigu si, et seulement si, u admet plus d’un arbre de
dérivation.
La grammaire G est ambiguë si, et seulement si, elle engendre des mots
ambigus.
Un langage L est ambigu si toutes les grammaires qui l’engendrent sont
ambiguës.

Exemple

Considérons la grammaire algébrique G = ({+, ∗, 0, 1}, {S, NB}, S, R) avec


R = {S −→ S + S|S ∗ S|NB; NB −→ 0|1|0NB|1NB}. Le mot u = 10 ∗ 10 + 10 est
ambigu car il peut être obtenu par les deux arbres de dérivation suivants :

S S
S * S S + S
NB S + S S * S NB
1 NB NB NB NB NB 1 NB
0 1 NB 1 NB 1 NB 1 NB 0
0 0 0 0
Par conséquent, la grammaire G est ambiguë et le langage algébrique L(G) est
ambigu.
Filière SMI Semestre 5 Théorie des langages et des automates
13/17

4. Automates à pile 4.1 Définition

Les grammaires algébrique sont utilisées pour engendrer les langages algébriques.
Les grammaires sont une généralisation des expressions rationnelles qui
permettent quant à elles d’engendrer les langages rationnels.
Rappelons que les automates finis sont des machines qui permettent de
reconnaı̂tre les langages rationnels,
et que la classe des langages rationnels étant une sous-classe strict de la classe
des langages algébriques.
Ainsi, il existe une classe de machine qui permettent de reconnaı̂tre les langages
algébriques : les automates à pile,
des automates qui possèdent plus de mémoires que les automates finis (le
nombre de configurations qui peuvent être mémorisées est égal à son nombre
d’états) car ils possèdent une mémoire de plus sous forme de pile.

Définition
Un automate à pile est un septuplet Ap = hQ, A, Γ, Z0 , δ, q0 , T i où
Q est un ensemble fini des états de Ap , avec q0 l’état initial et T ⊂ Q
l’ensemble des états finals de Ap .
A est l’alphabet de Ap et Γ est l’alphabet de pile, Z0 le font de pile.
δ une fonction de transition de QxA ∪ {ε}x Γ dans Qx Γ∗ où δ(p, a, s) = (q, u)
signifie que l’on transite de l’état p à l’état q en lisant le symbole a ∈ A (ou rien
si a = ε), et on remplace le sommet de la pile s ∈ Γ par le mot u ∈ Γ∗ .

Filière SMI Semestre 5 Théorie des langages et des automates


14/17

4. Automates à pile 4.2 Description

Soit Ap = hQ, A, Γ, Z0 , δ, q0 , T i un automate à pile.


Une configuration de Ap est un triplet (q, u, γ) ∈ QxA∗ x Γ∗ permettant
d’indiquer l’état q dans lequel se trouve l’automate, le mot u restant à lire et
l’état γ de la pile.
On passe de la configuration (q, u, γ) à la configuration (p, v , γ 0 ) si il existe une
transition de Ap telle que δ(q, a, z) = (p, z 0 ) où u = av , γ = zγ 00 et γ 0 = z 0 γ 00 .
Autrement, on a lu le symbole a et on a dépilé z et empilé z 0 .
Comme le cas de automates finis, une transition d’un automate à pile peut être
représentée graphiquement comme suit :
a, z|z 0
q p

Cette transition peut être notée par : (q, u, γ) ` (p, v , γ 0 )


`∗ est la fermeture reflexive et transitive de `.
Un mot u est accepté par l’automate à pile Ap si (q0 , u, Z0 ) `∗ (p, ε, ε) avec
p ∈ Q (reconnaissance par pile vide) ou lorsqu’on arrive à un état final
(reconnaissance par état final). Ces deux variantes sont toutes équivalentes.
Un automate à pile est déterministe s’il existe au plus une transition résultant de
chaque configuration. Mais ces automates sont moins expressifs.
Un langage L est reconnu par l’automate à pile Ap , et noté L(Ap ), est
l’ensemble des mots reconnus par Ap . Autrement,
L(Ap ) = {u ∈ A∗ | ∃p ∈ Q | (q0 , u, Z0 ) `∗ (p, ε, ε)} (par pile vide)
= {u ∈ A∗ | ∃pf ∈ T | (q0 , u, Z0 ) `∗ (pf , ε, z)} (par état final)
Filière SMI Semestre 5 Théorie des langages et des automates
15/17

4. Automates à pile 4.3 Exemples

Exemple

1 Le langage L = {an b n | n≥ 0} est un langage algébrique reconnu par l’automate


à pile Ap = h{q0 , p}, {a, b}, {z}, Z0 , δ, q0 , ∅i représenté comme suit :
a, Z0 |z; ε, Z0 |ε b, z|ε

b, z|ε
q0 p

a, z|zz
2 Le langage L = {ucu t | u ∈ {a, b}∗ } est un langage algébrique reconnu par
l’automate à pile Ap = h{0, 1}, {a, b, c}, {x , y }, Z0 , δ, 0, ∅i représenté comme
suit :
a, Z |xZ a, x |ε

c, Z |Z b, y |ε
0 1

b, Z |yZ ε, Z0 |ε

Avec Z ∈ {Z0 , x , y }.
Filière SMI Semestre 5 Théorie des langages et des automates
16/17

4. Automates à pile 4.4 Propriété fondamentale

Théorème (Admis)
L est un langage algébrique si, et seulement si, L un langage reconnu un automate à
pile.

Filière SMI Semestre 5 Théorie des langages et des automates


17/17

4. Automates à pile 4.5 Exercices

1 Quels sont les langages engendrés par les grammaires suivantes :


1 G1 :S −→ 0S|0A; A −→ 1A|1.
2 G2 :S −→ aSAB|aAB; BA −→ AB; aA −→ ab; bA −→ bb; bB −→ bc;
cB −→ cc.
3 G3 :S −→ 1S1|0S0|1|0|A; A −→ ε.
4 G4 :S −→ 1S1|0S0|11|00|1|0|ε.
5 Que peut-on dire sur les deux grammaires G3 et G4 ?
2 Donner une grammaire engendrant le langage L = {an b m c k | n > m}.
3 Pour la grammaire constituée de la seule règle de production
S −→ S + S|S ∗ S|0|1, donner un arbre de dérivation des mots 0 ∗ 1 + 1 ∗ 0 et
0 + 1 ∗ 1 ∗ 0.
4 Dites si la grammaire G : S −→ x |y |z|S|S ∗ S|S + S est ambiguë ?
5 Donner l’automate à pile qui reconnaı̂t le langage suivant :

L = {u ∈ {0, 1}∗ | |u|0 = |u|1 }

Filière SMI Semestre 5 Théorie des langages et des automates

Vous aimerez peut-être aussi