Ce document a été produit par HEVEA.
Votre browser peut avoir a être configuré pour afficher correctement
certains symboles.
Reportez-vous à la documentation d'HEVEA.
Maîtrise d'informatique
Examen -- Compilateur Pascal
Janvier 1994
Documents autorisés --- Durée : 2 heures
Ce document est disponible sous forme d'un fichier PostScript compressé.
Ce contrôle est divisé en deux problèmes indépendants.
1 Opérateurs and et or
On étend les conditions du poly (chapitre 5, Génération de code)
pour implanter les opérateurs and
et or
dans le langage.
L'opérateur or
a une priorité plus faible que l'opérateur
and
. C'est-à-dire que l'expression
a<b or c<d and d<>e
est équivalente à
(a<b) or ((c<d) and (d<>e))
Exercice 1
Donner la nouvelle grammaire des conditions COND
.
Deux approches peuvent être considérées pour la génération
de code des conditions : l'approche « opérateur booléen », et
l'approche « coupe-circuit ». Dans l'approche « coupe-circuit », les
opérateurs sont définis comme ayant la sémantique suivante :
A and B |
signifie |
if A then B else FALSE |
A or B |
signifie |
if A then TRUE else B |
Cette dernière sémantique sera celle retenue dans la suite de ce
problème.
Exercice 2
Donner le schéma de P-Code à générer pour les trois formes de
conditions suivantes :
A or B A and B A or B or C
Exercice 3
Donner la procédure de génération de code pour l'opérateur or
.
Les conditions COND
sont utilisées dans les structures de
contrôle de type if
. Nous nous intéressons maintenant à la
génération de code pour une telle instruction.
Exercice 4
Donner le schéma de P-Code à générer pour les instructions
suivantes :
if A<B or C<D then if A<B or C<D or E<F then
<inst> <inst>
Exercice 5
Quelle information doit être retournée à la procédure IF
de
génération de code par la procédure COND
de génération des
conditions ?
2 Affectation directe de tableaux
On reprend la grammaire de PP2 (chapitre 6, Variables de type
tableau). On modifie la sémantique pour autoriser l'affectation
directe entre tableaux de même taille. Pour permettre cette
affectation entre tableau, on introduit une nouvelle instruction
P-Code :
MOV n
Cette instruction attend deux adresses sur la pile (a1
au
sous-sommet et a2
au sommet) et réalise la recopie de n
valeurs lues à partir de l'adresse a2
dans les adresses
successives à partir de a1
.
Exercice 6
Proposer l'extension de l'interpréteur de P-Code (chapitre 1,
Traducteurs et interpréteurs) pour cette instruction.
Exercice 7
Donner le code de la procédure de génération de code pour
l'affectation.
Ce document a été traduit de LATEX par
HEVEA.