11.09.2013 Aufrufe

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

Konzepte h¨oherer Programmiersprachen (Entwurf) - WSI ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!