BuK-Übung08 G1

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

RAM-Berechenbarkeit

Aufgabenstellung

Zeigen Sie, dass die Multiplikationsfunktion für natürliche Zahlen RAM-berechenbar ist.

Loading

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.

Persönliche Werkzeuge