Académique Documents
Professionnel Documents
Culture Documents
Dpartement Informatique
TLA & Compilation (Groupes C & E)
Nous avons B bB | do :
Calculons SUIVANT(A) :
Calculons SUIVANT(B) :
Calculons SUIVANT(C) :
3
E. Menif Abassi
1. Cette grammaire est rcursive gauche puisque dans la production S SaAb, le non-terminal S
qui est la tte de la production se trouve tout fait gauche dans le corps de cette mme
production.
liminons la rcursivit gauche :
Nous avons trois symboles non-terminaux que nous ordonnons comme suit : S, A et B
i=1 : Nous traitons le symbole S
S SaAb | bBaS | Nous crons alors un nouveau non-terminal S (Dans ce cas =aAb , 1= bBaS et
2=), do les nouvelles productions :
S bBaSS |S (puisque S=S)
SaAbS|
i=2 : Nous traitons le symbole A Aucune rcursivit directe, ni indirecte
i=3 : Nous traitons le symbole B Aucune rcursivit directe, ni indirecte
Nous aurons ainsi la grammaire quivalente non rcursive gauche avec les productions suivantes :
S bBaSS |S
SaAbS|
A bAa |
B aBb |
2. Cette grammaire est bien factorise gauche puisquil nexiste aucun prfixe commun dans les SProductions, ni dans les A-Productions, ni dans les B-Productions.
4
E. Menif Abassi
Do SUIVANT(A) = {a,b}
SUIVANT (B) : Le symbole B apparait dans :
-
Do SUIVANT(B) = {a,b}
SUIVANT (S) : Le symbole S apparait dans :
-
Do SUIVANT(S) = {a,$}
SUIVANT (S) : Le symbole S apparait dans :
-
a
S S
SaAbS
S
A
B aBb
B
b
S bBaSS
$
S S
S
A bAa
A
B
Nous constatons que certaines cases de cette table, notamment M[S,a], M[A,b] et M[B,a] contiennent
deux rgles. Lanalyseur ne pourra pas dcider quelle rgle appliquer si, par exemple, au sommet de la
pile nous avons le symbole A et que le prochain symbole dans lentre est b.
2. Il suffit davoir une chane pour laquelle nous pouvons construire deux arbres de drivation
6
E. Menif Abassi
PREMIER(abA)PREMIER() = *a+ *+ =
* alors vrifions PREMIER(abA) SUIVANT(S) = {a+ *a,$+ . Do Cette grammaire nest
pas LL(1)
a
S abA
S
A Saa
$
S
Ab
E. Menif Abassi
Ensembles SUIVANT :
-
E
E
T
T
F
E TE
(
E TE
T FT
T FT
E TE
T
v
E TE
f
E TE
T FT
T FT
E
T F
T
FF
F (E)
T
Fv
Ff
9
E. Menif Abassi
Pile
Entre
Action
E$
(v f) v $
Appliquer E TE
TE$
(v f) v $
Appliquer T FT
FTE$
(v f) v $
Appliquer F F
FTE$
(v f) v $
Reconnaitre
FTE$
(v f) v $
Appliquer F (E)
(E)TE$
(v f) v $
Reconnaitre (
E)TE$
v f) v $
Appliquer E TE
TE)TE$
v f) v $
Appliquer T FT
FTE)TE$
v f) v $
Appliquer F v
vTE)TE$
v f) v $
Reconnaitre v
(v
TE)TE$
f) v $
Appliquer T FT
(v
FTE)TE$
f) v $
Reconnaitre
(v
FTE)TE$
f) v $
Appliquer F f
(v
fTE)TE$
f) v $
Reconnaitre f
(vf
TE)TE$
) v$
Appliquer T
(vf
E)TE$
) v$
Appliquer E
(vf
)TE$
) v$
Reconnaitre )
(vf)
TE$
v$
Appliquer T
(vf)
E$
v$
Appliquer E TE
(vf)
TE$
v$
Reconnaitre
(vf)
TE$
v$
Appliquer T FT
(vf)
FTE$
v$
Appliquer F v
(vf)
vTE$
v$
Reconnaitre v
10
E. Menif Abassi
TE$
Appliquer T
(vf) v
E$
Appliquer E
(vf) v
Configuration daccepetation
Exercice8 :
Les rgles de productions de la grammaire sont :
S A | SA
A ab | aSb
1. Cette grammaire nest pas LL(1) :
Considrons S A | SA : nous avons PREMIER(A) = {a} et PREMIER(SA) = PREMIER(A)
= {a} ( cause du S A) PREMIER(A)PREMIER(SA)
Considrons A ab | aSb : nous avons PREMIER(ab) = {a} et PREMIER(aSb) = {a}
PREMIER(ab)PREMIER(aSb)
2. Pour construire la table SLR, il nous faut dabord construire lautomate LR(0).
Construction de lautomate :
La grammaire augmente est :
S S
S A | SA
A ab | aSb
I0 = FERMETURE({[S .S]}) = {[S .S], [S .A], [S .SA], [A .ab], [A .aSb]}
I1 = ALLER_(I0, S) = {[S S.], [S S.A], [A .ab], [A .aSb]}
I2 = ALLER_(I0, A) = {[S A.]}
I3 = ALLER_(I0, a) = {[A a.b], [A a.Sb], [S .A], [S .SA], [A .ab], [A .aSb]}
I4 = ALLER_(I1, A) = { [S SA.] }
ALLER_(I1, a) = I3
11
E. Menif Abassi
ALLER_(I6, A) = I4
I3
ALLER_(I6, a)= I3
I2
S A.
S .SA
I1
A .ab
S S.
A .aSb
A .ab
S .SA
A .aSb
A .ab
$
A .aSb
I6
A aS.b
S S.A
A .ab
A .aSb
b
I4
S SA.
Accepter
Symbole
S
A
S S.A
S .A
A ab.
S .A
S .S
A a.Sb
I0
I5
A a.b
I7
A aSb.
SUIVANT
{a,b, $}
{a, b, $}
12
E. Menif Abassi
a
d3
d3
r1
d3
r2
r3
d3
r4
Action
b
$
r1
d5
r2
r3
d7
r4
Accepter
r1
Aller_
S
A
1
2
4
6
r2
r3
4
r4
ACTION[0,a] = d3 : cause des items A .ab et A .aSb dans I0 et la transition de I0 vers I3 sur a
ACTION[1,a] = d3 : cause des items A .ab et A .aSb dans I1 et la transition de I1 vers I3 sur a
ACTION[1, $] = Accepter : cause de litem S S. dans I1
ACTION[2,a] = ACTION[2,b] = ACTION[2, $] = r1 cause de litem S A. correspondant la
production portant le numro 1 et que SUIVANT(S) ={a,b, $}
ACTION[3,a] = d3 cause des items A .ab et A .aSb dans I3 et la transition de I3 vers I3 sur a
ACTION[3,b] = d5 cause des items A a.b et A a.Sb dans I3 et la transition de I3 vers I5 sur b
ACTION[4,a] = ACTION[4,b] = ACTION[4, $] = r2 cause de litem S SA. correspondant la
production portant le numro 2 et que SUIVANT(S) ={a,b, $}
ACTION[5,a] = ACTION[5,b] = ACTION[5, $] = r3 cause de litem A ab. correspondant la
production portant le numro 3 et que SUIVANT(A) ={a,b, $}
ACTION[6,a] = d3 cause des items A .ab et A .aSb dans I6 et la transition de I6 vers I3 sur a
ACTION[7,a] = ACTION[7,b] = ACTION[7, $] = r4 cause de litem A aSb. correspondant la
production portant le numro 4 et que SUIVANT(A) ={a,b, $}
ALLER_[0,S] = 1 et ALLER_[0,A] = 2 daprs les transitions de I0 sur S et sur A
ALLER_[1,A] = 4 daprs la transition de I1 sur A
ALLER_[3,S] = 6 et ALLER_[3,A] = 2 daprs les transitions de I3 sur S et sur A
ALLER_[6,A] = 4 daprs la transition de I6 sur A
13
E. Menif Abassi
Entre
0
ababaabb$
03
babaabb$
035
abaabb$
02
abaabb$
01
abaabb$
013
baabb$
0135 aabb$
014
aabb$
01
aabb$
013
abb$
0133 bb$
01335 b$
0132 b$
0136 b$
01367 $
014
$
01
$
Action
d3
d5
r3
r1
d3
d5
r3
r2
d3
d3
d5
r3
r1
d7
r4
r2
Accepter
Exercice9 :
Les rgles de productions de la grammaire sont :
C Ax
A a | aB
B xy
1. Cette grammaire nest pas LL(1) puisque dans les A-productions PREMIER(a) PREMIER(aB)
2. Pour montrer si cette grammaire est SLR, il nous faut construire la table danalyse SLR. Pour ce
faire, il faut tout dabord construire lautomate LR(0).
14
E. Menif Abassi
C
A
I0
C .C
C .Ax
I1
Accepter
C C.
I2
C A.x
I4
C Ax.
I5
A .a
A .aB
I3
A aB.
A a.
A a.B
B .xy
I6
x
B x.y
I7
B xy.
15
E. Menif Abassi
SUIVANT
{$}
{x}
{x}
Voici la table danalyse SLR avec les productions numrotes comme suit:
(1) C Ax
(2) A a
(3) A aB
(4) B xy
tats
0
1
2
3
4
5
6
7
a
d3
Action
y
Aller_
C A B
1
2
Accepter
d4
d6
r2
5
r1
r3
d7
r4
E. Menif Abassi
Nous remarquons que ACTION[3,x] contient deux actions un dcalage et une rduction, ceci constitue un
conflit de type Dcalage/Rduction . Par consquent, cette grammaire nest pas SLR.
17
E. Menif Abassi