Material OOP Grundlagen Delphi Software-Technik Bonsai Digitaltechnik Ereignisse Grafik UML Netze Fischertechnik Tipps Werkzeuge Literatur Automaten Sprachen Datenbanken XML Prolog Berechenbarkeit
Pfad: Startseite / Fächer / Informatik / Material
Autor: mk
10.06.2004 15:45
1802
Formale Sprachen

Compiler in Delphi - automatisch erstellt

Niklas Wirth sagt in seinem Buch Compilerbau zu Beginn:

"Die erste Funktion der Syntax ist also die Beschreibung der Menge der Symbolfolgen, genannt Sätze, die zur Sprache gehören. Die zweite, nicht minder wichtige Funktion ist die Definition einer Satzstruktur. Diese spielt eine eminente Rolle in der Erkennung der Bedeutung eines Satzes." (Hervorhebung vom Verfasser)

Ein Compiler muss also den Zugriff auf die innere Struktur einer Sprache, dargestellt durch seine Nonterminale und Tokens, ermöglichen. So wird die <Anweisung> load -99 der Modellcomputersprache aus Informatik heute, Band 2, S.98 z.B. den Sinn, die Semantik, haben "lade den Akkumulator mit der Zahl -99". Der Compiler muss in der Zielsprache entsprechende Anweisungen generieren, die diesen Befehl umsetzen.
Das Werkzeug Goldparser-Builder hat mit Hilfe der *.cgt-Datei (compiled grammar tables) und der Delphi-Engine ein Programm erzeugt, das genau das kann. Folgender Prototyp zeigt, wie zu der Eingabe load-99add1jnz-2halt ein Baum erzeugt wurde. Das war nur machbar, weil ein Zugriff auf die Struktur des Satzes möglich ist.



rai.zip (30kB) - in der Original-Engine war es (zumindest für Delphi7) in der Unit GrammerReader nötig, die Unit Variants bei uses hinzuzufügen.

Aufgabe

Es ist ein einfaches Beispiel zu erstellen, das den "Semantik-Anteil" einer Sprache verdeutlicht.