• Aucun résultat trouvé

Lab 6 Analyses LR(0) et SLR(1)

N/A
N/A
Protected

Academic year: 2022

Partager "Lab 6 Analyses LR(0) et SLR(1)"

Copied!
13
0
0

Texte intégral

(1)

IFT313

Introduction aux langage formels

Francis Bisson

Département d’informatique Université de Sherbrooke

Lab 6

Analyses LR(0) et SLR(1)

(2)

EXERCICE 1

(3)

Exercice 1

Soit la grammaire G= ({S, E}, { id, +, ), ( }, R, S), avec R =

{

1. S → E 2. E → id 3. E → id (E) 4. E → E + id }

a. Donnez l’AFD LR(0) de la grammaire.

b. Donnez la table d’analyse LR(0).

c. Est-ce une grammaire LR(0)? Expliquez.

d. Donnez la table d’analyse SLR(1).

e. Est-ce une grammaire SLR(1) ? Expliquez.

(4)

1.a AFD LR(0).

Closure([S’S])

={[S’ S], [S E], [E id], [E id(E)], [E E+id]}

Closure([S’S])

={[S’ S]}

=Closure({[SE], [E E+id]})

={[SE], [E E+id]}

=Closure({[E id], [E id(E)]})

={[E id], [E id(E)]}

0 1

2 3

=Closure([E E+id])

={[E E+id]}

4

=Closure([E id(E)])

={[E id(E)],[E id], [E id(E)],[E E+id]}

5

Goto(4, id)

=Closure([E E+id])

={[E E+id]}

6

=Closure({[E id(E)], [E E+id]})

={[E id(E)], [E E+id]}

7

=Closure([E id(E)])

={[E id(E)]}

8

s E

+

(

id

E

) +

id id

(5)

1.b Table d’analyse LR(0)

id + ( ) $ S E

0 s3 1 2

1 acc

2 r1 s4

r1 r1 r1 r1

3 r2 r2 s5

r2 r2 r2

4 s6

5 s3 7

6 r4 r4 r4 r4 r4

7 s4 s8

8 r3 r3 r3 r3 r3

1.c. Ce n’est pas une grammaire LR(0) parce que la table d’analyse contient des conflits dans les entrées [2,+] et [3,(].

action/goto goto

(6)

1.d. Table d’analyse SLR(1)

id + ( ) $ S E

0 s3 1 2

1 acc

2 s4 r1

3 r2 s5 r2 r2

4 s6

5 s3 7

6 r4 r4 r4

7 s4 s8

8 r3 r3 r3

1.e. C’est une grammaire SLR(1) parce que la table d’analyse SLR(1) n’a pas de con- flit.

action/goto goto

(7)

EXERCICE 2

(8)

Exercice 2 - Intro 1/2

L’instruction

if expression then expression else expression

fait partie d’un bon nombre de langages de programmation.

La grammaire correspondante la plus naturelle est ambiguë. Avec une instruction du genre if e1 then if e3 then e3 else e4

L’analyseur LR aurait deux dérivations (deux interprétations) possibles : 1. if e1 then if e3 then e3

else e4

2. if e1 then if e3 then e3 else e4

Dans la table d’analyse cette ambiguïté sera reflété par un conflit shift/reduce. La première interprétation donne priorité à reduce. La deuxième interprétation donne priorité à shift. Sé- mantiquement, c’est généralement la deuxième interprétation qui prévaut : un else corre- spond toujours au plus récent if dans la même portée.

(9)

Exercice 2 - Intro 2/2

La grammaire suivante G= ({S}, {i, e, o}, R, S), avec R =

{

1. S → iSeS 2. S → iS 3. S → o }

approxime l’instruction if expression then expression else expression en utilisant i pour désigner ‘if expression then’, e pour désigner ‘else’ et o pour le reste de l’instruction. Les deux arbres d’analyse suivants illustrent deux dérivations droites possibles pour l’entrée iiseo.

(1) S=>iSeS => iSea => iiSeo=>iiaeo (2) S=>iS => iiSeS => iiSeo=>iiaeo S

i S

i S e S

o o

Priorité à reduce Priorité à shift

S

i S e S

i S

o

o

(10)

Exercice 2 - Questions

Étant donné la grammaire G= ({S}, {i, e, o}, R, S), avec R =

{

1. S → iSeS 2. S → iS 3. S → o }

a. Donnez l’AFD LR(0).

b. Donner la table d’analyse SLR(1).

c. Est-ce une grammaire SLR(1)?

(11)

2.a AFD LR(0)

actions goto

2.c. La grammaire n’est pas SLR(1) parce qu’il y a un conflit shift/reduce dans l’entrée [4,e] de table LALR(1)

S’ .S0 S .iSeS S .iS S .o

S’ S1

.

S

i e o $ S

0 s2 s3 1

1 acc

2 s2 s3 4

3 r3 r3

4 r2

s5 r2

5 s2 s3 6

6 r1 r1

1. S iSeS 2. S iS 3. S o

o

S i

.

SeS2 S

.

iSeS

S

.

iS S

.

o

S iSe

.

5S S

.

iSeS

S

.

iS S

.

o

S iS

.

4eS S iS

.

i

S

e

S iSeS6

.

S o.3 o

o

S

i i

2.b Table d’analyse SLR(1)

(12)

2.a AFD LR(0)

actions goto

2.c. La grammaire n’est pas SLR(1) parce qu’il y a un conflit shift/reduce dans l’entrée [4,e] de table LALR(1)

S’ .S0 S .iSeS S .iS S .o

S’ S1

.

S

i e o $ S

0 s2 s3 1

1 acc

2 s2 s3 4

3 r3 r3

4 r2

s5 r2

5 s2 s3 6

6 r1 r1

1. S iSeS 2. S iS 3. S o

o

S i

.

SeS2 S

.

iSeS

S

.

iS S

.

o

S iSe

.

5S S

.

iSeS

S

.

iS S

.

o

S iS

.

4eS S iS

.

i

S

e

S iSeS6

.

S o.3 o

o

S

i i

2.b Table d’analyse SLR(1)

(13)

EXERCICE 3

Voir Lab6-exercise3.html

Références

Documents relatifs

Elle peut prendre un argument numérique indiquant le nombre de boucles à sauter, dans le cadre de boucles imbriquées (rapidement illisible). Elle peut prendre un argument

sion de l ·esprit qui anime notre grand mouvement Nous n ·avons pas créé seulement.. Tom; les

[r]

C’est une grammaire LR(1) parce que la table d’analyse LR(1) n’a pas de conflit. Table d’analyse LR(1)

• Réduction-réduction Lorsque l'automate se trouve dans un état contenant deux items com- plets, l'automate devra choisir de manière non déterministe entre les deux réductions.

On exceptional values of functions meromorphic outside a linear set

Iteration of rational functions was studied extensively by Fatou [3] and Julia [5] and the analogous theory for tran- scendental entire functions more briefly by Fatou

BV analogy, might it not also be the case that the size of the Schwarzian derivative of a conformal mapping between two domains defines a good measure of their