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:
- lexikalische Analyse (Token erzeugen),
- Syntaxanalyse (Strukturbaum erstellen),
- 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
|