La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

IFT313 Introduction aux langage formels

Présentations similaires


Présentation au sujet: "IFT313 Introduction aux langage formels"— Transcription de la présentation:

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 IFT313

3 Exercice 1 Soit la grammaire G= ({S, E}, { id, +, ), ( }, R, S), avec
E → id (E) E → E + id } Donnez l’AFD LR(0) de la grammaire. Donnez la table d’analyse LR(0). Est-ce une grammaire LR(0)? Expliquez. Donnez la table d’analyse SLR(1). Est-ce une grammaire SLR(1) ? Expliquez. IFT313

4 s E id id + + id ( E ) 1.a AFD LR(0). 1 4 2 6 3 5 7 8 IFT313
1 Closure([S’S]) ={[S’ S], [S E], [E id], [E id(E)], [E E+id]} Closure([S’S]) ={[S’ S]} s 4 =Closure([E E+id]) ={[E E+id]} E 2 id id =Closure({[SE], [E E+id]}) ={[SE], [E E+id]} 6 + Goto(4, id) =Closure([E E+id]) ={[E E+id]} 3 =Closure({[E id], [E id(E)]}) ={[E id], [E id(E)]} + id 5 7 =Closure([E id(E)]) ={[E id(E)],[E id], [E id(E)],[E E+id]} =Closure({[E id(E)], [E E+id]}) ={[E id(E)], [E E+id]} ( E ) 8 =Closure([E id(E)]) ={[E id(E)]} IFT313

5 1.b Table d’analyse LR(0) id + ( ) $ S E s3 1 2 acc r1 s4 3 r2 s5 4 s6
action/goto goto id + ( ) $ S E s3 1 2 acc r1 s4 3 r2 s5 4 s6 5 7 6 r4 s8 8 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,(]. IFT313

6 1.d. Table d’analyse SLR(1) id + ( ) $ S E s3 1 2 acc s4 r1 3 r2 s5 4
action/goto goto id + ( ) $ S E s3 1 2 acc s4 r1 3 r2 s5 4 s6 5 7 6 r4 s8 8 r3 1.e. C’est une grammaire SLR(1) parce que la table d’analyse SLR(1) n’a pas de conflit. IFT313

7 Exercice 2 IFT313

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 : 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 correspond toujours au plus récent if dans la même portée. IFT313

9 Exercice 2 - Intro 2/2 La grammaire suivante G= ({S}, {i, e, o}, R, S), avec R = { S → iSeS S → iS 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. (2) S=>iS => iiSeS => iiSeo=>iiaeo (1) S=>iSeS => iSea => iiSeo=>iiaeo S i e o S i e o Priorité à shift Priorité à reduce IFT313

10 Exercice 2 - Questions Étant donné la grammaire G= ({S}, {i, e, o}, R, S), avec R = { S → iSeS S → iS S → o } Donnez l’AFD LR(0). Donner la table d’analyse SLR(1). Est-ce une grammaire SLR(1)? IFT313

11 2.b Table d’analyse SLR(1)
2.a AFD LR(0) 2.b Table d’analyse SLR(1) 1. S® iSeS 2. S® iS 3. S® o S’® .S S® .iSeS S® .iS S® .o S 1 S’® S. actions goto o i e o $ S s2 s3 1 acc 2 4 3 r3 r2 s5 5 6 r1 i 2 S® i.SeS S® .iSeS S® .iS S® .o 3 S® o. o i S 4 S® iS.eS S® iS. i o e On s’y attendait parce que la grammaire est ambiguë. 5 S® iSe.S S® .iSeS S® .iS S® .o S 6 S® iSeS. 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) IFT313

12 2.b Table d’analyse SLR(1)
2.a AFD LR(0) 2.b Table d’analyse SLR(1) 1. S® iSeS 2. S® iS 3. S® o S’® .S S® .iSeS S® .iS S® .o S 1 S’® S. actions goto o i e o $ S s2 s3 1 acc 2 4 3 r3 r2 s5 5 6 r1 i 2 S® i.SeS S® .iSeS S® .iS S® .o 3 S® o. o i S 4 S® iS.eS S® iS. i o e On s’y attendait parce que la grammaire est ambiguë. 5 S® iSe.S S® .iSeS S® .iS S® .o S 6 S® iSeS. 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) IFT313

13 Exercice 3 Voir Lab6-exercise3.html IFT313
Dépendamment de la progression sur les deux exercices précédents, une partie ou l’entièreté de cet exercice sera laissée à faire à domicile. IFT313


Télécharger ppt "IFT313 Introduction aux langage formels"

Présentations similaires


Annonces Google