Vous êtes sur la page 1sur 2

SI –4 - – COMPILATION

Version 2/06/2015 - TD N°3

Semaine du 17 Septembre..

Paul Franchi

Analyse et Grammaires LL()

Exercice 1 - La grammaire suivante G1 est elle LL(k) ?

• G1= { S → A | B , A → 0 A 1 | a , B→0B1|b}

• L(G1) ∈ RAT ? G1 est elle récursive gauche ? est elle factorisable à gauche ?

• Utiliser la définition du cours (Vue) pour déterminer son caractère LL(1), LL(k) ?

• Donner une grammaire G1’ ∈ LL(1) telle que L(G1’) =L(G1)

Exercice 2 - La grammaire suivante G2 est elle LL(1), LL(2) ?

• G2= { S → abT , T → S | aa | b }

• Utiliser la définition du cours (Vue) pour déterminer son caractère LL(1), LL(k) ?

• Effectuer la construction de la table LL(1). Expliquer les conflits.

• Effectuer la construction de la table LL(2).

• L(G2) ∈ RAT ?

Exercice 3 – RAT ⊂ LL(1)

• Montrer que pour tout langage rationnel L, il existe une grammaire LL(1) G, telle que L = L(G)

• Appliquer à L(G2) pour trouver une grammaire G2’ ∈ LL(1)

Exercice 4 – Calcul de Premiers et Suivants pour la grammaire suivante G3

• G3= { S → S A | B A , A→ Ab|B|ε , B→aA|c }

• G3 est elle LL(k) ?

• Effectuer la construction de la table LL(1). Expliquer les conflits.

Langages de programmation et Analyse LL(1)

Exercice 5 – Expressions Parenthèsées Démontrer que la grammaire EE’TT’F est LL(1)

Page 1 / 2 02/06/2015
Exercice 6 – Nombres « point fixe »

• Donner une expression LEX pour les nombres « point fixe » signés de syntaxe Java

• Donner une grammaire LL(1) pour ces nombres

Exercice 7 - If imbriqués à la PASCAL (extrait de exam 99) On considère ici les Conditions (c) et
les Autres instructions (a) comme des lexèmes:

[r1, r2, r3] INST → a | if c then INST | if c then INST else INST

7.1 La grammaire ℭ1 donnée n’est pas LL(1). A cause de quelle propriété ?

7.2 Transformer la grammaire ℭ1 pour supprimer la propriété précédente. A partir de maintenant ℭ1


désigne la nouvelle grammaire.

7.3 Calculer Premiers et Suivants dans ℭ1

7.4 Construire la Table LL(1) pour ℭ1. Conclusion ? Donner une interprétation pratique ?
7.5 La grammaire est elle LL(k) ? A cause de quelle propriété ?

Exercice 8– Syntaxe JAVA (partielle)

• Donner une grammaire LL pour les instructions "switch" Java

• idem pour pour les en-têtes de "classe" Java

Programmation et Analyse LL(1)

Exercice 10 - LEX

• Donner une grammaire LL(1) pour des sources Lex "bien formatés", cad syntaxiquement corrects en
considérant que les commentaires, les codes C, et les expressions régulières sont des unités lexicales.

Exercice 11 – XHTML & XML

• Donner une grammaire LL(1) pour des sources XHTML ou XML "bien formés", cad
syntaxiquement corrects en considérant que les textes purs, et les balises ouvrantes, fermantes, et
ouvrantes-fermantes sont des unités lexicales.

Exercice 12 – Générateur LL(1)

• Programmer le calcul des Premiers et des Suivants pour une grammaire donnée

• Programmer le test LL(1) et la construction d'une table d'analyse LL(1)

• Programmer un analyseur déterministe pour une table LL(1)

Page 2 / 2 02/06/2015

Vous aimerez peut-être aussi