Hessischer Bildungsserver / Arbeitsplattformen

Scanner, Parser und Interpreter für Mini-Pascal

In Kapitel 20, Band 2 von Informatik mit Prolog wird dargestellt, wie Konzepte und Methoden der theoretischen Informatik bei der Konstruktion eines Scanners, Parsers, Interpreters und Compilers für die Sprache Mini-Pascal angewendet werden können.

Im Folgenden ist als Beispiel ein Mini-Pascal-Programm für die Berechnung der Fakultaet angegeben:

program Fakultaet;
begin
n:= 7;
i:= 1;
Fak:= 1;
while i < n do begin
i:= i + 1;
Fak:= Fak * i
end;
write(Fak)
end

Der Scanner liest den Quelltext eines Mini-Logo-Programmes ein und erzeugt daraus eine Symbolliste. Der Parser baut aus der Symbolliste einen Parsebaum, den man mit dem Terminterpreter darstellen kann.

Der Interpreter führt das Mini-Pascal-Programm aus und gibt das Ergebnis auf der Prolog-Konsole aus.

speicher(fak, 5040).
speicher(i, 7).
speicher(n, 7).

Der Compiler arbeitet wie der Interpreter auf dem Parsebaum. Er übersetzt das im Parsebaum dargestellte Mini-Pascal-Programm in Assemblersprache:

    mov  ax, 7
mov n, ax
mov ax, 1
mov i, ax
mov ax, 1
mov fak, ax
M1:
mov ax, i
push ax
mov ax, n
pop cx
cmp ax, cx
mov ax, True
jl M2
mov ax, False
M2:
cmp ax, True
jnz M3
mov ax, 1
push ax
mov ax, i
pop cx
add ax, cx
mov i, ax
mov ax, i
push ax
mov ax, fak
pop cx
imul ax, cx
mov fak, ax
jmp M1
M3:
mov ax, fak
out ax

Benutzungshinweise

Laden Sie sich das Mini-Pascal-Paket herunter und entpacken Sie es in ein Verzeichnis minipascal. Starten Sie Swing-Prolog, laden und konsultieren Sie die Datei minipascal.pl. Stellen Sie dann die Anfrage ?- minipascal.

Der Terminterpreter muss installiert sein.