Ein Compiler ist ein Programm, das einen Text einer Quellsprache in den Text einer Zielsprache übersetzt. Die Zielsprache entspricht i.d.R. dem Maschinencode des zugehörigen Computers. Der Prozeß der Übersetzung erfolgt dabei häufig in mehreren Stufen.

Analysephase (Front-End)

  1. Lexikalische Analyse
    In der lexikalischen Analyse wird festgestellt, ob Bezeichner, Zahlen, Schlüsselworte usw. entsprechend der Sprachdefinition korrekt geschrieben sind. Dies wird von einem sog. Scanner realisiert.
  2. Syntaktische Analyse
    Hier wird die syntaktische Struktur der gerade untersuchten Eingabe (Zeile) ermittelt. Der sog. Parser erzeugt dabei einen Ableitungsbaum, der ggf. zu einem Syntaxbaum komprimiert wird.
  3. Semantische Analyse
    Hier ist die Semantik, d.h. die Korrektheit von Ausdrücken zu prüfen (Deklaration, Funktionsköpfe, Rückgabetypen usw.). Als Resultat entsteht ein modifizierter Syntaxbaum.

Synthesephase (Back-End)

  1. Zwischencode-Erzeugung
    Der Zwischencode entsteht durch direkte Übersetzung. Dabei werden Identifikatoren und ggf. temporäre Variablen eingesetzt.
  2. Zwischencode-Optimierung
    Während dieser Phase wird geprüft, inwiefern sich der Zwischencode optimieren läßt.
  3. Zielcode-Erzeugung
    Der optimierte Zwischencode wird in einen finalen Code übersetzt; dies ist z.B. Maschinencode.

Verwand mit dem Compiler ist der Interpreter, der ein Programm nicht komplett in die Zielsprache übersetzt, sondern Schritt für Schritt (Zeile für Zeile) überprüft und verarbeitet und dann, bei syntaktischer Korrektheit, direkt ausführt.