BuK-Übung08 G1
Aus ProgrammingWiki
Inhaltsverzeichnis |
RAM-Berechenbarkeit
Aufgabenstellung
Zeigen Sie, dass die Multiplikationsfunktion für natürliche Zahlen RAM-berechenbar ist.

Lösung
Die einzelnen Zahlen der Gleichung werden wie folgt auf die Variablen verteilt.
Somit kann für das Beispiel und
dann folgendes Programm angegeben werden.
RAM-Interpreter
Aufgabenstellung
Verwenden Sie VCC aus AtoCC, um einen Interpreter für RAM-Programme zu entwickeln.
Lösung
Der entsprechende Interpreter ist im CompilerWiki zu finden.
LOOP-Berechenbarkeit
Aufgabenstellung
Zeigen Sie, dass die Multiplikationsfunktion für natürliche Zahlen LOOP-berechenbar ist.
Lösung
Die einzelnen Zahlen der Gleichung werden wie folgt auf die Variablen verteilt.
Somit kann für das Beispiel und
dann folgendes Programm angegeben werden.
LOOP- und WHILE-Interpreter
Aufgabenstellung
Verwenden Sie VCC aus AtoCC, um einen Interpreter für LOOP-Programme zu entwickeln. Erweitern Sie im nächsten Schritt die LOOP-Sprache durch das WHILE-Sprachelement, um einen Interpreter für WHILE-Programme zu erhalten.
Lösung
LOOP-Interpreter
Ein LOOP-Interpreter besitzt die folgenden Syntaxregeln:
- Variablen: x0, x1, x2,....
- Konstanten: 0, 1, 2, ...
- Trennsymbole: := , ;
- Operstionszeichen: +, -
- Schlüsselwörter: Loop, Do, End
- Wertzuweisungen:
Dafür wurde die folgende Grammatik definiert:
G = (N, T, P, s)
N = {S, P, Körper, Operation, Wertzuweisung, Schleife}
T = {End, Variable, :=, +, Konstante, ;, -, Loop, Do}
P = {
S -> P End
P -> Körper | Körper P
Körper -> Operation
| Wertzuweisung
| Schleife Operation
| Schleife Wertzuweisung
Operation -> Variable := Variable + Konstante ;
| Variable := Variable - Konstante ;
Wertzuweisung -> Variable := Konstante ;
| Variable := Variable ;
Schleife -> Variable := Konstante ; Loop Variable Do
}
s = S
While-Interpreter
Unser While-Interpreter besitzt die folgenden Syntaxregeln:
- Variablen: x0, x1, x2,....
- Konstanten: 0, 1, 2, ...
- Trennsymbole: := , ;
- Operstionszeichen: +, -
- Schlüsselwörter: While, !=0, Do, End
- Wertzuweisungen:
Dafür wurde die folgende Grammatik definiert:
G = (N, T, P, s)
N = {S, P, Körper, Operation, Wertzuweisung, Schleife}
T = {End, Variable, :=, +, Konstante, ;, -, While, !=0, Do}
P = {
S -> P End
P -> Körper | Körper P
Körper -> Operation
| Wertzuweisung
| Schleife Operation
| Schleife Wertzuweisung
Operation -> Variable := Variable + Konstante ;
| Variable := Variable - Konstante ;
Wertzuweisung -> Variable := Konstante ;
| Variable := Variable ;
Schleife -> Variable := Konstante ; While Variable !=0 Do
}
s = S
GOTO-Interpreter
Aufgabenstellung
Verwenden Sie VCC aus AtoCC, um einen Interpreter für GOTO-Programme zu entwickeln.
Lösung
Der entsprechende Interpreter ist auch hier im CompilerWiki zu finden.