Vous êtes sur la page 1sur 3

Université Hassiba Benbouali Chlef Année universitaire : 2018/2019

Faculté des sciences exactes et informatique Module : Compilation


Département Informatique Niveau : Master 1 IL

Durée : 01h 30min

Epreuve de Moyenne Durée


Exercice 1 (4 points)
1. Quelles sont les différentes parties d’un compilateur ?
2. Quelles est la différence entre un attribut hérité et un attribut synthétisé ? justifier avec exemples
3. Qu’est qu’on sous-entend par « génération du code intermédiaire » ?

Exercice 2 (4 points)
On considère le programme suivant lexicalement et syntaxiquement correct:
A : réel ;
B : entier ;
A = 5,3 ;
B = 6,2 ;
C=4;
Un programme est en fait défini syntaxiquement comme une suite de déclarations, suivie d’une suite
d’instructions : <programme> ::= {<déclaration>} {<instruction>}
Le programme ci-dessus est correct vis à vis de cette définition.
On introduit les règles suivantes pour l’analyse sémantique:
- Tout identificateur utilisé dans une instruction doit être déclaré.
- Dans une instruction, l’identificateur à gauche du = et le nombre à droite doivent être de même type.
Quelles sont les erreurs signalées par l’analyse sémantique du programme ? Justifier la réponse.

Exercice 3 (6 points)
Soit la grammaire G = ({ E, T, F}, {id,nb,+,*,(,)}, , E) définie par les règles de productions suivantes
E  E+T / T
T  T*F / F
F  (E) / id /nb
En utilisant les attributs synthétisés :
1. Ecrire une DDS qui transforme une expression infixée à une expression post fixée.
2. Donner l’arbre décoré de la chaîne : a+b*c.

Exercice 4 (6 points)
Donner les différents états de la pile à l’exécution et du display pour le programme suivant où le seul type de
passage de paramètres autorisés est l’appel par valeur :

Program PP
Var n,z : integer ;
Procedure U (n:integer);
Begin
If n:=0 then z:=1 else V(n-1);
end;
Procedure V(n:integer);
Begin
If n:=0 then z:=0 else U(n-1);
end ;
Begin
n :=2 ; U(n) ;
end.

Bon courage
Bon courage MmeMme BOUSAHBA
BOUSAHBA
Université Hassiba Benbouali Chlef Année universitaire : 2018/2019
Faculté des sciences exactes et informatique Module : Compilation
Département Informatique Niveau : Master 1 IL

Correction de l’épreuve de compilation


Exercice 1 (4 pts )
Toutes les réponses sont dans le cours

Exercice 2
B est déclaré en entier et on lui affecte un réel. (2 pts) C n’est pas déclaré. (2 pts)
Exercice 3

1. La DDS qui transforme une expression infixée à une expression post fixée est (3.5 pts)

Règles de productions Règles sémantique


E0  E1+T E0.code :=E1.code//T.code// "+"
ET E.code :=T.code
T0 T1*F T0 .code :=T1.code//F.code//"*"
T F T.code := F.code
F (E) F.code := E.code
F id F.code := id.nom
F nb F.code :=nb.valeur

2. L’arbre décoré de la chaîne a+b*c : (2.5 pts )

abc*+

a bc*

a b c

a b c

a b

Exercice 4 (6pts)

a4 a3
Env U(0) 0 n
Bc=a3 , sp =a4 a1 a2
a2 R3 2 a0 a2 a3
Env V(1) 1 n a0
Bc=a2 , sp=a3 a1 R2 2 a0 a1 a2
Env U(2) 2 n
Bc=a1 ,sp=a2 nil R1 2 a0 a0 a1 R1 : n :=2 ; U(n)
Env.pp @u
Bc=a0 @v R2 : n:=0 then z:=1 else V(n-1)
Sp=a1 1 z R3: n:=0 then z:=0 else U(n-1);
2 n
nil 1 a0

Bon courage Mme BOUSAHBA


Université Hassiba Benbouali Chlef Année universitaire : 2018/2019
Faculté des sciences exactes et informatique Module : Compilation
Département Informatique Niveau : Master 1 IL

Durée : 01h 30min

Epreuve de Moyenne Durée


Exercice 1 (6 points)
1. Quelles sont les différentes parties d’un compilateur ?
2. Qu’est qu’une grammaire attribuée ? combien de type de grammaires attribuées existe-t-il ?
Quelles est la relation et la différence entre eux ?
3. Qu’est-ce qu’un type ? donner un exemple pour chaque type
4. Que signifie l’équivalence de type ? quelle sont les différences entre les équivalences
existantes
Exercice 2 ( 4 points )
Soit la grammaire G 1= ({ B}, {0,1,λ }, , E) définie par les règles de productions suivantes
B  0B/1B/ε.
Ecrire une DDS qui calcul le nombre de bit à 1 dans un mot binaire :
1. En utilisant un attribut synthétisé.
2. En utilisant un attribut hérité

Exercice 3 (4 points)
Traduire l’expression a :=-c*b+c*b en
a)une notation post fixée
b) du code à 3 adresses
a) Quadruplets ;
b) Triplets ;

Exercice 4 (6 points)

Donner les différents états de la pile à l’exécution et du display pour le programme suivant où le seul type de
passage de paramètres autorisés est l’appel par valeur :

Programme PP
Entier z ; z:=2;
Procedure b
Debut
Entier x ; x:=z ; z:=z+x ;
Fin
Procédure a (val n : entier )
Début
Si n :=1 alors b ;
Sinon a(n-1) ; ,
Fin
a(3) ;
Fin

Bon courage Mme BOUSAHBA

Vous aimerez peut-être aussi