Next: Die Prolog-artige Syntax Up: Die zwei Syntaxen Previous: Die zwei Syntaxen

Abstrakte und konkrete Syntax

Solange man sich nur als Anwender mit einer Sprache beschäftigt kommt man nur mit der konkreten Syntax in Kontakt. Das ist die Syntax, die im jeweiligen Sprachreport definiert wird. Im Compilerbau gibt es darüberhinaus den Begriff der abstrakten Syntax. Darunter versteht man die interne Darstellung von Strukturen, die in der konkreten Syntax definiert wurden. Je nach Implementierung wird die abstrakte Syntax von einem Interpreter ausgeführt oder von einem Compiler weiterverarbeitet.

Als Beispiel betrachte man die Darstellung von Variablen (Tab. 1). In der Lisp-artigen Syntax werden sie durch einen führenden Unterstrich gekennzeichnet. In der Prolog-artigen Syntax beginnen sie mit einem Großbuchstaben (genaueres im nächsten Kapitel). Beide Formen werden intern jedoch als Liste mit führendem vari-Tag dargestellt.

Das später beschriebene Modul Lisp2Pro hat die Aufgabe, die abstrakte Syntax in die Prolog-artige zu transformieren. Pro2Lisp realisiert die umgekehrte Richtung. Streng genommen ist die Bezeichnung ''Lispïn den Modulnamen unglücklich gewählt, denn die Lisp-artige Syntax wird in den Transformationen nicht explizit berücksichtigt. ''Lisp2Pro'' (statt #196;bs2Pro'') und ''Pro2Lisp'' (statt ''Pro2Abs'') sind allerdings vertretbar, wenn man bedenkt, daß Lisp-artige Syntax und abstrakte Syntax in vielen Bereichen identisch sind und von Relfuns Lisp-Implementation implizit ineinander überführt werden.



Next: Die Prolog-artige Syntax Up: Die zwei Syntaxen Previous: Die zwei Syntaxen


Harold Boley & Michael Herfert (herfert@dfki.uni-kl.de)