Vous êtes sur la page 1sur 4

Quelques examens de Compilation

Majeure 1re Anne


2 juin 2008

Juin 2006
1

Exercice
Donner une expression rgulire dcrivant les mots sur = {a, b, c}
qui contiennent exactement deux a ;
qui ne contiennent pas deux a conscutifs ;
qui ne contiennent pas le facteur ab.

Exercice

Construire une automate fini dterministe minimal reconnaissant lexpression rgulire (x|yy|yx(y|xx) xy) yx(y|xx) .
Construire une automate fini dterministe minimal reconnaissant lexpression rgulire x y(yx y) x(y x(yx y) x) y .
Quen conclure ?

Exercice

Soit la grammaire suivante :


1. S a | b | ( T )
2. T T , S | S
Donnez un arbre de drivation des mots (a,b) et (b,(a,a))
La grammaire permet-elle une analyse LL(1) ?
Eliminez la rcursivit gauche et factorisez si ncessaire.
Montrez que la nouvelle grammaire est LL(1). Donnez la table danalyse
1

Explicitez le comportement de lanalyseur sur (a,(b,a),a)

Juin 2007
Remarques
Les notes de cours sont autorises

Langages rguliers et automates tats finis (10 points)

Soit lautomate tats finis suivant dont ltat initial est ltat 0 et ltat final
est ltat 4, et dont la fonction de transition est donne par la table :
a b 
0 0 0 1
1 - - 2
2 1 3 3 - - 4
4 5 6 5 - - 3
6 - - 3
En vous aidant des algorithmes dcrits dans le cours :
1. Donnez lautomate dterministe quivalent cet automate.
2. Donnez un automate minimal quivalent.
3. Donnez, sous forme dexpression rgulire, le langage reconnu par cet automate.

Analyses descendate et ascendante (15 points)

Soit la grammaire suivante :


1. E nb
2. E E E op
avec un seul non terminal E et deux terminaux op et nb.
1. Lexpression nb nb nb op nb op nb nb op op op est-elle admise par la
grammaire ?
2. Montrer que cette grammaire est LL(1). Pour cela :
Supprimez les rcursions gauches
2

Introduisez la rgle de laxiome A E ] dans laquelle ] dsigne la fin


de fichier.
Calculez les ensembles F irst et F ollow pour chacun des non terminaux
Construisez la table danalyse descendante
3. Produisez alors lanalyse descendante de lexpression : nb nb op nb op
4. Montrez que cette grammaire est aussi SLR. Pour cela :
Construisez les tats danalyse et les transitions partir du triplet initial
[A E ]]
Dduisez en la table danalyse ascendante
En dduire que la grammaire est SLR.
Dtaillez lanalyse ascendante de nb nb op nb op

Septembre 2007
Remarques
Les notes de cours sont autorises

Langages rguliers et automates tats finis (10 points)

Soit lautomate tats finis suivant dont ltat initial est ltat 0 et ltat final
est ltat 4, et dont la fonction de transition est donne par la table :
a
b

0 0,1
2
1 3
2
3
3 4 1,4 2
4
4
En vous aidant des algorithmes dcrits dans le cours (en particulier aux pages 20,
30 et 31) :
1. Construisez un automate dterministe quivalent cet automate.
2. Essayez de construire un automate minimal si cela est possible ou ncessaire.
3

Analyse descendante(10 points)

Soit la grammaire suivante :


1. S a
b
2.
3.
(T )
4. T T , S
S
5.
On se pose les questions suivantes
1. Montrer que les expressions ( a , b ) et ( b , ( a , a ) ) sont admises
par la grammaire en construisant larbre de drivation de chacune de ces
expressions.
2. Expliquez pourquoi, en ltat, cette grammaire nest pas LL(1).
3. On souhaite rendre cette grammaire LL(1). Pour cela, supprimez les rcursions gauches de la grammaire en ajoutant un nouveau non terminal U , en
modifiant les rgles 4 et 5 et en ajoutant une sixime rgle de production.
4. Calculez les ensembles F irst et F ollow pour chacun des non terminaux.
Montrez en particulier comment vous obtenez que :
F irst(S) = F irst(T ) = {a , b)} et F irst(U ) = {, , } ;
F ollow(T ) = F ollow(U ) = {)} et F ollow(S) = {, , )}
o les items soulign dsignent les terminaux de la grammaire et o  dsigne
le mot vide.
5. Construisez la table danalyse descendante de la nouvelle grammaire LL(1).
6. Produisez alors la structure danalyse descendante, telle quelle serait ralise par un analyseur descendant dot dune pile, des deux expressions
( a , b ) et ( b , ( a , a ) )