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 1999

Documents autorisés --- Durée : 2 heures

Ce document est disponible sous forme d'un fichier PostScript compressé.





On introduit dans le langage PP1 (grammaire page 28 du polycopié) l'instruction de contrôle repeat ... while suivante :

INST ::= INSTS | AFFEC | SI | TANTQUE | ECRIRE | LIRE | REPETER
REPETER ::= repeat INST while COND do INST

L'instruction repeat ... while est une boucle dans laquelle la condition d'arrêt est testée au milieu de chaque itération.

Exemple :
        repeat 
          read (I) 
        while I <> 0 do 
          PRODUIT := PRODUIT * I 

Exercice 1  [Analyse syntaxique]   Donner une procédure d'analyse syntaxique pour l'instruction repeat ... while.

Exercice 2  [Alternative syntaxique]   Discuter (brièvement) de l'alternative suivante à la définition de l'instruction repeat ... while :

REPETER ::= repeat INST { ; INST } while COND do INST

Exercice 3  [Schéma de génération de P-Code]   Donner le schéma de P-Code à générer pour une instruction repeat ... while.

Exercice 4  [Traduction en P-Code]   Traduisez en P-Code le programme de la figure 1.


        program dicho
        var sup, inf, val, essai ; 
        begin 
          sup := 1000 ; inf := 0 ; read (val) ; 
          repeat 
            begin 
              write (sup) ; write (inf) ; 
              essai := (sup+inf)/2 
            end
          while (val <> essai) do 
            begin 
              if (val < essai) then 
                sup := essai-1 ; 
              if (val > essai) then 
                inf := essai+1 
            end ;
          write (essai)
        end . 

Figure 1 : Programme à traduire en P-Code



Exercice 5  [Génération de code]   Étendre la procédure d'analyse syntaxique de la question 1 pour y inclure les instructions de génération de P-Code.


Ce document a été traduit de LATEX par HEVEA.