|
|
|
WS 98/99 |
|
|
Aufgabe 1 (3 + 3 Punkte)
- Schreiben Sie ein Codeschema zur Übersetzung von Iterationsanweisungen:
for i := e1 to e2 do s end
Dabei sei i eine deklarierte Integer-Variable und e1 und e2 seien Integer-Ausdrücke, die höchstens einmal ausgewertet werden sollen.- Schreiben Sie ein Codeschema für die allgemeine Modula-Iterationsanweisung:
for i := e1 to e2 by c do s end
c ist eine dem Übersetzer bekannte Integer-Konstante.Aufgabe 2 (4 Punkte)
Schreiben Sie Codeschemata zur Übersetzung der Modula-Anweisungen
loop s end und exit
Wenn es dazu nötig ist, der code-Funktion zusätzliche Parameter mitzugeben, geben Sie kurz an, wie sich diese Zusatzparameter bei der Übersetzung anderer Anweisungen verhalten.
Aufgabe 3 (3 + 3 Punkte)
- In der Vorlesung wurden Codeschemata für allgemeine Bezeichner behandelt. In Folge der Einführung von Prozeduren wurde die Adreßumgebung um die Komponente der Schachtelungstiefe erweitert. Passen Sie die Codeschemata an die neue Adreßumgebung an.
- Es seien die folgenden Typ- und Variablendeklarationen in einer Prozedur p gegeben:
type t = record a:array[-5..5,1..9] of integer; b:^t end; var i,j : integer; pt : ^t;Die erste zu vergebene Relativadresse sei 5, d.h. (i)=5. Übersetzen Sie unter dieser Voraussetzung die folgende Wertzuweisung im Rumpf von p mit Hilfe der Codeschemata aus a) :
pt^.a[i,j]:= j