Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
24 2.3 Bootstrapping<br />
• Benutzung der Sprache und Wartung von Sprachprozessoren können in einer<br />
abgeschlossenen Welt stattfinden; es ist nicht nötig, diese zu verlassen, um etwas<br />
an der Sprache oder ihrer automatischen Behandlung zu verbessern oder zu<br />
verändern.<br />
Es leuchtet unmittelbar ein, dass sich Änderungen am Übersetzungsverfahren oder<br />
auch Änderungen am Sprachumfang auf diese Weise leicht bewerkstelligen lassen;<br />
eine einmalige ” Selbstübersetzung“ des Sprachprozessors genügt für diese Zwecke.<br />
Es stellt sich aber das Problem, einen ersten Sprachprozessor überhaupt ans Laufen<br />
zu bekommen. Diesen Prozess nennt man ” bootstrapping“. Zur Übersicht über solche<br />
Prozesse eignen sich die (von Earley erstmalig vorgeschlagenen) ” T-Diagramme“.<br />
P<br />
M<br />
Abbildung 2: I-Diagramm<br />
Das Diagramm in Abb. 2 bedeutet: ” Programm P ist geschrieben in Sprache M“.<br />
Diese Sprache könnte eine höhere Programmiersprache (z.B. Pascal) sein, aber auch eine<br />
Maschinensprache. Die Unterscheidung zwischen höheren <strong>Programmiersprachen</strong><br />
und Maschinensprachen ist dabei nicht sehr wichtig: Jede Programmiersprache definiert<br />
eine abstrakte Maschine, die in der Lage ist, Programme in dieser Sprache auszuführen.<br />
Eine ” abstrakte Pascal-Maschine“ wäre etwa in der Lage, Pascal-Programme<br />
in ihrer Quellsprach-Fassung direkt auszuführen. Umgekehrt definiert eine Maschine<br />
natürlich durch ihre Maschineninstruktionen auch eine Sprache, die nämlich durch<br />
Kombinationen dieser Instruktionen gegeben ist. Wenn die Sprache eines Programms<br />
mit der Sprache einer Maschine übereinstimmt, dann kann dieses Programm auf dieser<br />
Maschine ohne weitere Vorrichtungen direkt ablaufen; anderenfalls sind zusätzliche<br />
Mechanismen nötig.<br />
Abb. 3 bedeutet nun: ” Programm P , geschrieben in (Maschinen-) Sprache M, läuft<br />
auf Maschine M und transformiert Eingabe E in Ausgabe A.“<br />
Jetzt kann man bereits schildern, wie ein Interpreter in dem Fall eingesetzt werden<br />
kann, wo die Sprache des Programms nicht mit der Maschinensprache übereinstimmt:<br />
in Abb. 4 sorgt ein Interpreter für die Sprache M, der selbst in einer Sprache M ′ geschrieben<br />
ist, dafür, dass das in M geschriebene Programm P auf der Maschine M ′<br />
ablaufen kann.<br />
Bereits zuvor wurden die Vorteile einer Übersetzung gegenüber der Interpretation<br />
skizziert. Für Übersetzungsprogramme wird eine andere Notation verwendet, die nun<br />
zufällig auch wie ein ” T“ aussieht, nämlich das in Abb. 5 gezeigte T-Diagramm für<br />
einen Übersetzer.<br />
kogrund.pdf