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
Module de Projet 1

Examen -- Compilateur Pascal

Philippe Marquet

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.