Vous êtes sur la page 1sur 27

Correction TD3

1 / 27
Exercice 1

Considérons la grammaire G1 dont les productions sont les suivantes :

S→SaSaSbS | SaSbSaS | SbSaSaS | ε


1 - La grammaire est-elle régulière ? Justifier

Cette grammaire n’est pas régulière, elle n’est ni linéaire droite, ni


linéaire gauche.

2 - Trouver L(G1)

L(G1) = { w ∈{a, b}* | |w|a = 2 * |w|b}

3 - Donner une dérivation à gauche de la séquence abaaab.


SaSbSaS
S ⇒ SaSbSaS⇒ aSbSaS ⇒ abSaS ⇒ abaS ⇒ abaSaSaSbS ⇒
abaaSaSbS ⇒ abaaaSbS ⇒ abaaabS ⇒ abaaab

2 / 27
4 - La grammaire est-elle ambigüe ? Justifier.

Il suffit de trouver une autre dérivation à gauche pour la chaine


abaaab, ce qui permet d’obtenir deux arbres syntaxiques différents
pour une même chaîne par conséquent la grammaire est ambigüe.

3 / 27
Exercice 2

1 – L1 = { u ∈{a, b}* | |u|a = |u|b}


Automate à pile pour L1

ε,ε/Z0 ε,Z0/Z0

a,Z0/aZ0 a,a/aa
a,b/ε
b,Z0/bZ0 b,a/ε
b,b/bb

4 / 27
L3 = {ambncm , n≥0, m > 0}
Automate à pile pour L3

ε,a/a ε,a/a ε,Z0/Z0

a,Z0/aZ0 b,a/a c,a/ε


a,a/aa

5 / 27
L4 = {anbmcmd2n, n≥0 et m≥0}
Automate à pile pour L4

C
as
n = 0
n=0 0
m=

6 / 27
2 - Donner une grammaire qui le génère.

Productions de la grammaire pour L1 :L1 = { u ∈{a, b}* | |u|a = |u|b}

S →SaSbS | SbSaS | ε

Productions de la grammaire pour L3 : L3 = {ambncm , n≥0, m > 0}

A →aAc | aBc
B →bB | ε

Productions de la grammaire pour L4 : L4 = {anbmcmd2n, n≥0 et m≥0}

A →aAdd | B
B →bBc | ε

7 / 27
Exercice 3
1* + 10* 1* 0

Trouvant la grammaire de cet automate

8 / 27
G = {{A, B, C, D, E}, {0, 1}, P, A} P : l’ensemble des productions
suivantes :

A →1E| 1B
B →0B| 0D| 1C
C →0D| 1C
D →ε
E →1E| ε

9 / 27
{w | w ∈{0, 1}* et w contient la sous-chaîne 00 ou 11}

G = {{A, B, C, D}, {0, 1}, P, A} P


l’ensemble des productions
1 B suivantes :

0
0 A→1A|0A|0B|1C
B→1A|0D
A 0,1 D 0,1 C→1D|0A
D→1D|0D|ε

0 1

1
C

10 / 27
{w | w ∈{0, 1}* et w ne termine pas par 01}

G = {{A, B, C}, {0, 1}, P, A} P


l’ensemble des productions
suivantes :
A→1A|0B|ε
B→1C|0B|ε
C→1A|0B

11 / 27
Exercice 4

2 - Grammaire G 2 n’est pas sous forme normale de Chomsky.


Rappel FNC :A → BC ou A →a
La grammaire comporte des productions ε qu’il faudra éliminer au
préalable.

U={S, A, B}, en plus S figure dans les parties droites. On ajoute un


nouvel axiome S’ et ses productions S’→S|ε

Élimination des productions ε :


Les productions suivantes seront ajoutés :

À partir de S→SaAb, on ajoute S→aAb, S→Sab, S→ab


À partir de S→bBaS, on ajoute S→baS, S→bBa, S→ba
À partir de A→bAa, on ajoute A→ba
À partir de B→aBb, on ajoute B→ab

12 / 27
On obtient la grammaire suivante équivalente à G2 :

S’→S|ε
S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
A →bAa|ba
B→aBb|ab

Mise sous forme de Chomsky.


Associer une variable à chaque terminal : C →a et D→b
Pour : S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
Devient :
S →SCAD|CAD|SCD|CD|DBCS|DCS|DBC|DC

Après transformation nous obtenons :


S →SE|CF|SG|CD|DH|DI|DJ|DC
E →CF
F →AD
G →CD
H →BI
I →CS
J →BC 13 / 27
Pour A →bAa|ba deveint
A →DAC|DC
Après transformation nous obtenons :
A →DK|DC
K →AC

Pour B→aBb|ab devient


B→CBD|CD
Après transformation nous obtenons :
B →CL|CD
L →BD

Enfin S’ →S|ε On remplace S par tout son corps on obtient


S’ →SE|CF|SG|CD|DH|DI|DJ|DC| ε

3 - Montrer que la grammaire G2 est ambigüe.


Faire un test avec le mot : baab

14 / 27
4 - Éliminer la récursivité à gauche dans chacune des ces
grammaires.

La grammaire G2 est récursive à gauche au niveau de de la règle


S→SaAb

Grammaire G2
S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε
Nous devons éliminer la récursivité après l’élimination des
productions ε. Il n’y a pas de cycles
S’→S|ε
S →SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
A →bAa|ba
B→aBb|ab

15 / 27
Nous choisissons l’ordre de traitement suivant : S’, S, A, B
Traitement de S’→S|ε : pas de récursivité directe.

Traitement de S→SaAb|aAb|Sab|ab|bBaS|baS|bBa|ba
Rappel
A → Aα|β
A → βA’
A’ → αA’|ε

S →aAbS’’ |abS’’|bBaSS’’|baSS’’|bBaS’’|baS’’
S’’ →aAbS’’|abS’’|ε

Traitement de A : pas de remplacement pas de récursivité à


gauche.
Traitement de B : pas de remplacement pas de récursivité à
gauche.

16 / 27
Grammaire G3
S →ST|SSb|TS|a
T →Sa|Tb|ε

Cette grammaire est récursive à gauche au niveau :


S →ST et T →Tb

Il faut tout d’abord éliminer les productions ε et les cycles :


Pour : S →ST|SSb|TS|a : on obtient

S →ST|SSb|TS|a|S

Pour T →Sa|Tb|b|ε : on obtient


T →Sa|Tb|b
La grammaire équivalente à G3 sans ε productions ε est :

S →ST|SSb|TS|a|S
T →Sa|Tb|b

17 / 27
Cette grammaire présente un cycle, il faut alors éliminer les
productions unitaires, la grammaire devient:

S →ST|SSb|TS|a
T →Sa|Tb|b

Éliminons maintenant la récursivité gauche. Nous choisissons


l’ordre suivant : S, T

Pour : S →ST|SSb|TS|a

S →TSS’|aS’
S’→TS’|SbS’|ε

Pour : T →Sa|Tb|b
Remplacement de S dans les productions de T :
T→TSS’a|aS’a|Tb|b on obtient :

T→aS’aT’|bT’
T’ →SS’aT’|bT’|ε
18 / 27
La grammaire G4
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

n’a ni de productions ε, ni de cycle. Elle est récursive à gauche au


niveau de des productions de S (S →S ∨ T) et de T (T →T ∧ F).
Nous procédons à l’élimination de la récursivité. Nous choisissons
l’ordre suivant : S, T, F

Pour S →S ∨ T | T : on obtient
S → TS’
S’ →vTS’|ε

Pour T →T ∧ F | F : Pas de remplacements. Nous éliminons la


récursivité directe. On obtient
T →FT’
T’ →∧FT’|ε

Pour F → ¬ F| (S)| x | y Pas de récursivité .


19 / 27
5 Factoriser à gauche chacune de ces grammaires
Factorisation de G2

S’ →S|ε
S →aAbS’’ |abS’’|bBaSS’’|baSS’’|bBaS’’|baS’’
S’’ →aAbS’’|abS’’|ε
A →bAa|ba
B→aBb|ab

Factorisation au niveau de S.
S →aC|bD
C→AbS’’|bS’’
D→BaE|aE
E→SS’’|S’’

Factorisation au niveau de S’’


S’’ →aF|ε
F→AbS’’|bS’’

20 / 27
Factorisation au niveau de A. A →bAa|ba
A→bG
G→Aa|a

Factorisation au niveau de B. B→aBb|ab


B→aH
H→Bb|b

Factorisation de G3
S →TSS’|aS’
S’→TS’|SbS’|ε
T→aS’aT’|bT’
T’ →SS’aT’|bT’|ε
On ne peut factoriser qu’au niveau de T :
T→aA|bT’
A→S’aT’

Aucune factorisation au niveau de G4.

21 / 27
6 - Donner la grammaire générant L(G2)*
Grammaire G2

S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε
Grammaire G2*
S’→SS’|ε
S →SaAb|bBaS|ε
A →bAa|ε
B →aBb|ε

22 / 27
7 - Donner la grammaire générant L(G4) U L(G3)
Grammaire G4
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

Grammaire G3
S →ST|SSb|TS|a
T →Sa|Tb|ε

Grammaire G4 U G3 :
Renommer S et T dans G3 en S3 et T3 . Les productions de G3
deviennent :
S3 →S3T3|S3S3b|T3S3|a
T3 →S3a|T3b|ε

23 / 27
Les production G3 U G4 sont
Su →S|S3
S3 →S3T3|S3S3b|T3S3|a
T3 →S3a|T3b|ε
S →S ∨ T | T
T →T ∧ F | F
F → ¬ F| (S)| x | y

24 / 27
8 - Construire un automate à pile acceptant par état final pour la
grammaire G3 , le transformer en un automate à pile acceptant par
pile vide.

Automate acceptant L(G3) par état final

ε,S/ST ε,T/Sa a,a/ε


ε,S/SST ε,T/Tb b,b/ε
ε,S/TS ε,T/ε
ε,S/a

ε,Z0/SZ0 ε,Z0/Z0

25 / 27
Transformation de l’automate pour qu’il accepte par pile vide

26 / 27
9 - Construire un automate à pile acceptant par pile vide pour la
grammaire G4 , le transformer en un automate à pile acceptant
par état final.
Automate acceptant L(G4) par pile vide

Transformation de l’automate pour qu’il accepte par état final

ε,Z0/SZ0 ε,Z0/Z0

27 / 27

Vous aimerez peut-être aussi