Université A/Mira Bejaia Nom :
Département d’Informatique
Prénom :
Licence Académique (L3)
Année Universitaire 2019/2020 20 Groupe :
EMD Compilation
NB : Documentation non autorisée, l’utilisation du crayon est interdite.
Questions de cours
Partie 1 (6 points) : Cocher la ou les bonnes réponses.
1. Les analyseurs LL(1) peuvent reconnaître précisément les langages dans lesquels :
Un seul symbole suffit pour déterminer l’action à réduire ou à décaler.
Un seul symbole suffit pour déterminer la règle à appliquer.
Les mots sont factorisés et non récursifs à gauche.
Aucune réponse n’est correcte.
2. La classe des grammaires LR est :
Plus large que la classe des grammaires LL.
Egale à la classe des grammaires LL.
Moins large que la classe des grammaires LL.
Aucune réponse n’est correcte.
3. Un item de la forme 𝑨 → 𝜶. 𝜷 représente une situation d’analyse où :
On a analysé la chaine 𝛼 et on s’attend à reconnaitre 𝐴.
On a analysé la chaine 𝛽 et on s’attend à reconnaitre 𝛼.
On décale 𝛼 et on réduit 𝛽 par A.
Aucune réponse n’est correcte.
4. Les fonctions de l'analyseur lexical sont :
Suppression des espaces blancs.
Contrôle de type.
Suppression des commentaires.
Construction de l’arbre de dérivation.
5. Assurer qu’un nom n’est pas associé à plus d’une variable est le rôle :
De l’analyse prédictive avec retour arrière.
De l’analyse descendante.
De l’analyse lexicale.
Aucune réponse n’est correcte.
6. La génération du code intermédiaire permet :
D’abaisser le niveau d’abstraction.
D’ajuster le niveau d’abstraction.
De traduire le code sous une forme de haut niveau, afin de faciliter les optimisations selon
l’architecture demander.
Aucune réponse n’est correcte.
1/4
Partie 2 (7 points) : Question1 : Soient les trois grammaires suivantes
𝑺 → 𝒅𝑨𝒂 / 𝑩𝒄 𝑺 → 𝒅𝑨𝒂 / 𝑩𝑨𝒄 𝑺 → 𝒅𝑨𝒂 / 𝑩𝒄
𝑮𝟏 = {𝑨 → 𝒂/𝑩𝒅 𝑮𝟐 = { 𝑨 → 𝒂/𝑩𝒅 𝑮𝟑 = {𝑨 → 𝒂/𝑩𝒅/𝜺
𝑩 → 𝒄𝑩/𝒅𝒄 𝑩 → 𝒄𝑩/𝒅𝒄 /𝜺 𝑩 → 𝒄𝑩/𝒅𝒄 /𝜺
1- Pour chacun des ensembles Débuts et Suivants, indiquez-la les grammaires qui
les valident, si aucune des grammaires le valide, noter aucune :
- Début (S) = {d,c,a} - Début2 (S) = { da,dc,dd,cd,cc,ca,ac }
- Suivant (S) = {#,a} - Suivant2 (S) = {##,a#}
- Début (A) = {a,c,d} - Début2 (A) = { a,cc,cd,d,dc,ε }
- Suivant(A) = {a} - Suivant2(A) = {##,a#}
- Début(B) = {c,d} - Début2(B) = { a,cc,cd,d,dc,ε }
- Suivant(B) = {c,d,#} / - Suivant2(B) = { ac,cd,cc,dc,da }
2- Construire la table d’analyse LL(1) pour la grammaire 𝑮𝟐
3- Que peut-on déduire de cette table d’analyse :
Question 2 : soit un langage qui a les terminaux suivants : ‘@’ ‘*’ ‘%’ ‘i’ ‘/’
Un analyseur de type décaler-réduire pour ce langage traite la chaîne : « i * i % @ i / » et effectue les actions
suivantes :
o Décaler i ;
o Réduire 0 symboles (sur la pile), en produisant (le symbole non terminal) N. Puis réduire 2
symboles, en produisant T. Puis réduire 1 symbole, en produisant F.
o Décaler *. Puis décaler i. Puis décaler %.
o Réduire 1 symbole, produisant N. Puis réduire 2 symboles, produisant T.
o Décaler @. Puis décaler i.
o Réduire 0 symbole, produisant N. Puis réduire 2 symboles, produisant T. Puis réduire 1 symbole,
produisant F. Puis réduire 5 symboles, produisant F.
o Décaler /.
o Réduire 2 symboles, produisant E et accepter l'entrée.
1- Déterminer la trace d’analyse
2- Quelle est la grammaire du langage analysé
Exercice
Soit la grammaire G6 suivante :
𝑬 → 𝐓 + 𝐄/ 𝐓
𝑮𝟒 {
𝑻 → 𝒊𝒏𝒕 ∗ 𝑻 / 𝒊𝒏𝒕 / (𝑬)
1. Construire l’ensemble des items LR(0).
2. Construire la table d’analyse LR(0).
3. Que peut-on déduire de cette table d’analyse
2/4