
  \input{format1.tex}
  \input{intro1.tex}

\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais]{babel}

% figures
\usepackage[dvips]{epsfig}

\begin{document}
%\thispagestyle{empty}

\noindent \Large {\bf Université d'Orléans} \hfill {\bf Maîtrise d'Informatique}

\normalsize

\begin{center}
{\it Feuille de Travaux Dirigés 6}
\end{center}
\hrule

\bigskip

\ex
Construire une grammaire attribuée pour traduire la boucle {\tt for},
telle qu'elle est spécifiée en langage C~:
\[\mbox{\tt for (expr\_init~;~expr\_test~;~expr\_incr) instr}\]
\exe

\ex
Consid\'erons l'instruction suivante\,:

\[\mbox{\tt pour i := 1 pas 10-j jusqu'\`a 10*j faire j := j+1}\]

\noindent
{\em 1\`ere signification s\'emantique\,:}\,la limite 10*j et le pas
10-j sont \'evalu\'es une fois pour toutes avant la boucle, comme en PL/1.
Ex\,:\,si j = 5 avant la boucle, on r\'ealisera 10 fois la boucle.\\
{\em 2\`eme signification s\'emantique\,:}\,\'evaluer la limite et le pas
\`a chaque tour de boucle. Ex\,:\,si j=5 avant la boucle, la boucle ne se
termine pas.\\
{\em 3\`eme signification s\'emantique\,:}\,(Algol) quand le pas est
n\'egatif, le test r\'ealis\'e pour la terminaison de la boucle est i $<$
10*j plut\^ot que i $>$ 10*j

Pour chacune de ces 3 d\'efinitions s\'emantiques, donner l'algorithme
correspondant \`a l'instru\-ction et son code SPARC en supposant que 
$\rho(i) = 5$ et $\rho(j) = 6$.
\exe

\ex
Soit l'instruction {\em case} suivante\,:
\begin{verbatim}
case e of
   i1 : inst1 ;
   i2 : inst2 ;
   ...
   ik : instk 
end ;
\end{verbatim}
Traduire le code de l'instruction {\em case} en supposant construite une table 
de branchements correspondant \`a chaque valeur possible de l'alternative 
(l'adresse de cette table $\rho(table)$ et sa taille sont connues). 
On admettra que les composantes du {\em case} peuvent appara\^{\i}tre dans un 
ordre arbitraire, et que plusieurs s\'electeurs peuvent choisir la m\^eme 
s\'equence d'instructions, et que tous les s\'electeurs de l'intervalle 
$[o, \ldots k]$ n'apparaissent pas n\'ecessairement. Exemple\,:\,
\begin{verbatim}
case e of
  0, 2 : inst1 ;
     4 : inst2 ;
     3 : inst3
end;
\end{verbatim}
pour un intervalle \'egal \`a $[0 \ldots 5].~table$ contient alors\,:
\begin{figure}[htbp]
   \centering
   \noindent
   %\hbox{
   \psfig{figure=case.eps,height=1.5cm,width=14cm}
   %}
\end{figure}
\exe


\end{document}
