Vous êtes sur la page 1sur 4

SI – 4 – COMPILATION

TD N°4

version du 2/06/2015 - Semaine du 1 Oct.

Paul Franchi

Analyse et Grammaires LR()

Exercice 0 – Tests LR() de grammaires simples

Pour toutes les grammaires suivantes:

• tester les propriétés LR(k) ,

• construire intuitivement la Table LR() si la propriété LR(1) est vérifiée

• donner la suite d'actions{D?Ri} pour l'analyse ascendante d'un mot reconnu.

G01 : { S → Sa | x [r1-r2]}

G02 : { S → Sa | ε [r1-r2]}

G03 : { S → aX | aY [r1-r2], X→ x [r3], Y → y [r4] }

G04 : { S → aX | aY [r1-r2], X→ Xx | x [r3-r4], Y → Yy | y [r5-r6] }

G05 : { S → aX | aY [r1-r2], X→ Xx | ε [r3-r4], Y → Yy | ε [r5-r6] }

Exercice 1 – Tests LR() de grammaires (extrait exam 99)

Cet exercice consiste à déterminer les propriétés LR(0), SLR(1), LR(1), ou LR(k) des
grammaires suivantes, définies sur N ⊆ {S, A, B, C} où S est l’axiome, et T ⊆ {x, y, z, t}.

G1 : { S → SA | SB | A | B [r1-r4], A→ x [r5], B → x [r6] }

G2 : { S → SAy | SBz | Ay | Bz [r1-r4], A→ x [r5], B → x [r6] }

G3 : { S → SAy | SBz | Ay | Bz [r1-r4], A→ Cx [r5], B → Cx [r6], C → t [r7] }

G4 : { S → SAy | SBz | Ay | Bz [r1-r4], A→ Cx [r5], B → Cx [r6], C → Ct | t [r7 r8] }

G5 : { S → SAty | SBtz | Aty | Btz [r1-r4], A→ x [r5], B → x [r6] }

G6 : { S → SAty | SBtz | Aty | Btz [r1-r4], A→ x [r5], B → xt [r6] }

Page 1 / 4 02/06/2015
On utilisera la méthode la plus rapide :

• Propriété de la grammaire ou Condition suffisante pour décider du résultat

• Etat initial, Transitions et Etat source de conflit (donner les items LR(0))

• Suivant si utilisé dans la décision

• Table Action SLR si utilisée dans la décision

• Conflit éventuel (préciser la nature : reduce/reduce ou shift/reduce et la classe : LR(0) ou SLR)

• Dérivation Droite si utilisée dans la définition LR(k)

Exercice 2 - La grammaire suivante G1 est elle SLR ?

• { S → a S A B | BA , A → aA | B , B→b}

• G1 est elle LR(0) ?

Exercice 3 - La grammaire suivante G2 est elle LR(1) ?

• { S → Ab | Bc , A → Aa | a , B → Ba | a }

• L(G) ∈ RAT ?

Exercice 4 – Ambiguïté

• Une grammaire SLR peut elle être ambiguë ?

• Une grammaire LR(1) peut elle être ambiguë ?

Exercice 5– Calcul de la table LR(1) pour la grammaire suivante G3

• { S’ → S , S → G = D | D , G → *D | var , D → G }

Langages de programmation et Analyse LR(1)

Exercice 6 – ETF

• La grammaire ETF est elle LR(0), SLR(1), LR(1) ?

Page 2 / 4 02/06/2015
Exercice 7 - Expressions booléennes(extrait exam 99)

7.1 Transformer (au minimum) la grammaire ETF en une grammaire ℬ pour reconnaître les
expressions booléennes formées sur des variables (var) avec des opérateurs {or and not () }de
priorité croissante. Exemple d'expression booléenne: v1 or v2 and ( not v3)
7.2 Donner les Dérivations gauches et droites pour l'exemple.

7.3 Donner les modifications à apporter aux Items LR(0) et à l'automate de transition de ETF :
nouveaux items LR(0) dans des états existants dans ETF, nouveaux états et nouvelles transitions
entre anciens et/ou nouveaux états

7.4 Donner les modifications à apporter à la Table SLR de ETF pour ℬ

7.5 La grammaire ℬ est elle SLR(1) , LR(0) ? Preuve ?

Exercice 8 – Nombres « point flottant »

• Donner une grammaire LR(1) pour les nombres points flottants signés à syntaxe Java

Exercice 9 – Java

• Donner une grammaire LR(1) pour un sous ensemble du langage Java

Exercice 10 – Expressions Postfixées (extrait exam 2003)

On considère les expressions postfixées (réduites à 2 opérateurs) définies par la grammaire E ci-
dessous :

E → EE+ | EE* | entier [r1-r3]

10.1. La grammaire E vous parait elle ambiguë ?


10.2. La grammaire E est elle LL(1) ou LL(k) ?
10.3. Donner la construction des items LR(0) pour la grammaire E. Identifier les cas de
décalages, réductions ou conflits possibles ? En déduire si la grammaire est LR(0) ou SLR ?
10.4. Retour à la question 1.1 : la grammaire E est elle ambiguë ?

Page 3 / 4 02/06/2015
Exercice 12 - Grammaire « Bloc » (extrait exam 2001)

On note B2 la grammaire suivante pour des blocs Java (simplifiés) :

BLOC → ‘{‘ INST_L ‘}’ [r1]


INST_L → INST_L INST | ε [r2-r3]
INST → decl | exp | BLOC [r4-r6]
decl et exp sont ici des unités lexicales terminales pour les déclarations et les expressions

12.1 Donner les Dérivations Droites dans B2 pour le mot: { d1 {} e1}

12.2 Calculer PREMIERs et SUIVANTs pour les non terminaux de B2

12.3 Donner l’Automate des items LR(0) canoniques

12.4 Effectuer la construction de la table SLR ; B2 est elle LR(0), SLR ?

12.5 Donner l’analyse ascendante pour l’exemple : { d1 {} e1} en utilisant la table SLR de B2

Exercice 13 – LEX donner une grammaire SLR pour LEX

Exercice 14 – YACC donner une grammaire LR(1) pour YACC ? Est elle SLR ?

Exercice 15– XHTML donner une grammaire LR(1) pour XHTML? Est elle SLR ?

Page 4 / 4 02/06/2015

Vous aimerez peut-être aussi