Bei der syntaxgesteuerten Übersetzung wird von einem Parser ausgegangen. Zu jeder Parser-Funktion, die einer Variablen der Grammatik entspricht, werden geeignete Übersetzungsaktionen hinzugefügt. Das Ergebnis ist eine Compiler-Funktion; diese liefert das Ergebnis der Übersetzung als Rückgabewert.
Im Folgenden wird dieses Vorgehen an einem konkreten Beispiel erläutert.
Wir nehmen den Parser für Additions-/Subtraktions-Ausdrücke als Grundlage, um nunmehr die eingegebenen Ausdrücke nicht nur zu parsen, sondern syntaxgesteuert in ihren Wert zu übersetzen. Zum Beispiel liefert der Ausdruck "9-3-4" als Ergebnis den Wert 2.
Hierzu wird die Klasse SimpleExpressionParser in eine Klasse SimpleExpressionCompiler umgeschrieben. Jede Funktion, die einer Variablen der Grammatik entspricht, liefert nun einen Wert zurück. Dieser Wert wird durch Übersetzungsaktionen in der Implementierung der Funktion gebildet.
Die Klasse SimpleExpressionCompiler wird von der abstrakten Basisklasse Compiler abgeleitet. Die Additions-/Subtraktions-Ausdrücke liefern Werte vom Typ Integer zurück, daher wird Integer als Typ-Parameter für die Basisklasse Compiler angegeben.
Ein syntaxgesteuerter Recursive-Descent-Übersetzer ergibt sich aus einem entsprechenden Parser. In jeder Funktion, die einer Variablen der Grammatik entspricht, werden geeignete Übersetzungsaktionen hinzugefügt. Diese Übersetzungsaktionen errechnen den Wert, den die Funktion zurückgibt.
Eine allgemeine, formale Vorgehensweise für die Konstruktion von Compiler-Funktionen, die Variablen der Grammatik entsprechen, ist unter Recursive-Descent-Übersetzung – systematisch angegeben.
Weiter mit: [Recursive-Descent-Übersetzung – systematisch] oder [up]