0% ont trouvé ce document utile (0 vote)
740 vues2 pages

TD Gram LL

Ce document contient plusieurs exercices portant sur l'analyse syntaxique de langages formels. Les exercices abordent des sujets tels que les listes à la Lisp, les instructions de calcul d'itinéraire, les grammaires LL(1) et les formes eBNF.

Transféré par

Fred Ndjateng
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
740 vues2 pages

TD Gram LL

Ce document contient plusieurs exercices portant sur l'analyse syntaxique de langages formels. Les exercices abordent des sujets tels que les listes à la Lisp, les instructions de calcul d'itinéraire, les grammaires LL(1) et les formes eBNF.

Transféré par

Fred Ndjateng
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Analyse LL

Licence info S5
TD COMPIL – 2012-2013

Exercice 1 : Listes à la Lisp


On s’intéresse à la grammaire suivante G d’axiome L, de terminaux {a, (, )}, décrivant des listes à
la Lisp (L signifie  liste  et S signifie  suite d’éléments ) :
L→(S) | a
S→LS | 
On donne pour cette grammaire la table d’analyse suivante :
( a ) #
L L→(S) L→a erreur erreur
S S→LS S→LS S→ erreur
Soit m le mot (a()).

Q 1.1 : Donner la suite des piles résultant de l’analyse de m par l’automate LL(1) associé à G. Construire
en même temps l’arbre syntaxique et la dérivation gauche pour m. 2

Q 1. 2 : En suivant les conventions du cours, donner les méthodes (signature et corps) de l’analyseur
récursif descendant qui reconnaissent respectivement les non-terminaux L et S. 2

Exercice 2 : Itinéraire et analyse syntaxique descendante


On s’intéresse à une grammaire GI des instructions (très simplifiées) délivrées par un logiciel de calcul
d’itinéraire, du style avancer 100m, au panneau Lille tourner à gauche, avancer 20m, tourner à droite.
On utilise pour ce faire les symboles GO (avancer Xm), TL (turn left), TR (turn right) et PAN (panneau).
On a GI = {VT , VN , route, P } avec VT = { GO, TL, TR, PAN }, VN = { route, inst, panneau, turn } et
P contient les productions :
route → inst | inst route
inst → GO | panneau turn
turn → TL | TR
panneau →  | PAN

Q 2.1 : Cette grammaire n’est pas LL(1) : pourquoi ? 2

Q 2.2 : Donner une grammaire G0I équivalente à GI et qui vous semble LL(1). 2

Q 2.3 : Calculer les ensembles Premier et Suivant pour G0I . 2

Q 2. 4 : Donner la table d’analyse LL(1) de G0I . Justifier en utilisant cette table que G0I est une
grammaire LL(1). 2

Q 2. 5 : En suivant les conventions du cours, donner les méthodes (signature et corps) de l’analyseur
récursif descendant qui reconnaissent respectivement le non-terminal panneau et le non-terminal inst. 2

Q 2. 6 : G0I est-elle une grammaire ambiguë ? Le langage L(G0I ) est-il algébrique ? régulier ? Justifier
vos réponses. 2

Exercice 3 : Pour bien comprendre les calculs de Premier et Suivant


Soit la grammaire suivante (légèrement alambiquée) d’axiome S et de terminaux {a, b, e, d, f} :
TD COMPIL Analyse LL

S → ABC | DAD
A → aA | 
B → bB | 
C → eC | 
D → dD | f

Q 3.1 : Construire la table d’analyse de cette grammaire et montrer qu’elle est LL(1). 2

Q 3.2 : Que se passe-t-il si :


1. on remplace C →  par C → e ?
2. on remplace B →  par B → a ?
3. si on ajoute B → a ?
4. on remplace D →  par D → d ?
2

Exercice 4 : Forme eBNF, grammaire LL(*)


On reprend la grammaire GI de l’exercice 2.

Q 4.1 : Donner une grammaire G00I , sous forme eBNF, équivalente à GI . 2

Q 4.2 : La grammaire G00I vous semble-t-elle LL(*) ? 2

Exercice 5 : Forme eBNF et grammaires LL(*) à opérateurs

Q 5.1 : On considère la grammaire suivante, que vous connaissez par coeur :


E → E+E | E−E | E∗E | E/E | id | (E)

Donner une grammaire équivalente sous forme eBNF, LL(*), en considérant les associativités et priorités
des opérateurs standard. 2

Q 5.2 : On considère la grammaire de terminaux {a, +, * }, d’axiome E et de productions :


E → E+C | C C → CS | S
S → S∗ | X X→a
Quel est le langage engendré par cette grammaire ? Donner une grammaire équivalente sous forme eBNF,
qui est LL(*). 2

Q 5.3 : On considère la grammaire de requètes suivante :


req → req join req | req union req | select cond ( req ) | id

Donner une grammaire équivalente sous forme eBNF, LL(*), en sachant que l’opérateur de jointure est
prioritaire sur celui d’union, que l’opérateur d’union est associatif à gauche, et celui de jointure l’est à
droite. 2

Vous aimerez peut-être aussi