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.