Die Webseiten der Fachschaft Informatik am ERG Saalfeld


Compiler und Interpreter

Compiler

Ein Compiler ist ein (meist umfangreiches und sehr komplexes) Programm, dass Texte aus einer Quellsprache in äquivalente Texte einer Zielsprache transformiert. Häufig gehört zu dem Compiler noch ein Editor, ein Debugger und ein Profiler. Außerdem erwartet man häufig noch, dass der "Compiler" ausführbaren Programmcode erstellt. Dann gehört zu dem Programmpaket noch ein Assembler (der also als Zielsprache Maschinencode erzeugt) und ein Linker, der die Referenzen dieses Maschinenprogramms mit den Objektdateien des Betriebssystems erstellt.

Beisp: Fortran, C, Pascal, Ada, Modula, ...
 

Die Arbeitsweise (Phasen) eines Compilers

1. lexikalische Analyse
Es wird das Programm (der Quelltext) in seine Bestandteile zerlegt (Token)
solche Token könnten sein:
Bezeichner: x, wert, hilf ...
Operatoren: "+", "-", "*", "/"
Konstanten: 50
2. Syntaxanalyse
es wird der Strukturbaum aufgebaut
3. Semantische Analyse
Es wird die Symboltabelle aufgebaut
Es wird z.B. überprüft, ob Operatoren kompatibel sind und werden angepaßt (int -> longint etc.)
4. Zwischencodegenerierung
es wird eine Zwischensprache erstellt, die sich in den nächsten Stufen leicht weiterverarbeiten läßt.
5. Codeoptimierung
z.B. Beseitigen redundanter Zwischenspeicherungen
6. Codegenerierung
Es wird der Code der Zielmaschine oder ein Assemblerprogramm erstellt.

Bei allen Phasen muß der Zugriff auf die Symboltabelle gewährleistet sein, ebenso auf das Fehlerbehandlungsmodul.
 

Interpreter

Ein Interpreter berechnet "interaktiv" den Wert des Strukturbaums (siehe Compiler Phase 2). Das heißt, beim Erstellen/Durchlaufen des Strukturbaums wird das Ergebnis des Programms bestimmt.

Man kann also theoretisch folgende Phasen für einen Interpreter angeben:

  1. lexikalische Analyse (Token erzeugen),
  2. Syntaxanalyse (Strukturbaum erstellen),
  3. Interpretieren (Strukturbaum traversieren und abarbeiten).

In der Praxis werden aber der 2. und 3. Schritt meistens zusammengefasst.

Beisp: Basic, SQL, Python, Prolog, Lisp, Logo, Perl, Rex, JavaScript, Darstellung der HTML-Seiten im Webbrowser, ...
 

Vorteile, Nachteile, Anwendung

  Vorteile Nachteile Anwendung
Interpreter einfacher zu erstellen, "billiger", Programme lassen sich leichter anpassen langsam , im Speicher muß zusätzlich Interpreter gehalten werden Server-Scripte, Datenbanksprachen, Sprachen in Officepaketen
Compiler ausführbare Programme sind schnell; Quelltexte müssen nicht mitgegeben werden aufwendig, teuer zeitkritische Anwendungen, Softwarefirmen

 

zurück


© ERG Saalfeld   -   Hans-Dietrich Kirmse   10.04.2014