Compiler/Interpreter (A. Beck) Einführung 07.06.04 2

Motivation



Compiler


Klassische Compiler haben die Aufgabe, ein Programm einer Sprache in ein äquivalentes Programm einer anderen Sprache zu überführen.


Höhere Programmiersprache -> Maschinencode

Höhere Programmiersprache -> Assemblersprache

Höhere Programmiersprache -> Höhere Sprache


Auch zur Konvertierung oder Interpretation von Daten kommen Verfahren der Übersetzertechnik zum Einsatz, beispielsweise bei XML-Parsern.

Aufbau eines Compilers dargestellt durch ein Phasenmodell nach ,Aho,

Sethi, Ullman: Compilerbau" (Drachenbuch)









Beispiel einer einfachen Übersetzung mit Zwischendarstellungen des Programmcodes



































































Dreiadressmaschine

Stackmaschine



temp1:=inttoreal(60)

pushAdr position

temp2:=var3*temp1

pushVal init

temp3:=var2+temp2

pushVal rate

var1 := temp3

pushConst 60.0


mul


add


store









Dreiadressmaschine

Stackmaschine



temp1:=var3*inttoreal(60)

push 60.0

Var1 :=var2+temp1

mul rate


add init


Store position






Syntaxgesteuerter Einpasscompiler


Für unsere weiteren Betrachtungen sind vor allem syntaxgesteuerte Einpasscompiler von besonderer Bedeutung. Ihr Aufbau könnte etwa folgendermaen aussehen:
































Interpreter


Etwas einfacher wird die ganze Codeerzeugung, wenn der zu erzeugende Code nicht für eine bestimmte reale Maschine, sondern für eine hypothetische Maschine erzeugt wird. Es handelt sich hierbei um eine Maschine, die den vom Compiler erzeugten Zwischencode ausführen kann. Eine solche hypothetische oder virtuelle Maschine kann man sich mit einem Interpreter bauen. Es wird damit damit die hypothetische Maschine auf der realen Maschine abgebildet, in dem eine klassische Rechnerarchitektur nach von Neumann nachgebildet wird(Zentrale Steuerschleife).

Das wohl bekannteste interpretierende Programmiersystem stellt das java jdk dar. Das Verfahren eines kombinierten Compiler/Interpretersystems ist aber sehr viel länger bekannt.