Next: Lisp2Pro: Pretty-Printer für Up: Die zwei Syntaxen Previous: Abstrakte und konkrete

Die Prolog-artige Syntax

Abbildung 1 zeigt die formale Definition der Prolog-artigen Syntax. Dabei wurde die EBNF-Notation verwendet, wie sie in [] definiert ist. Insbesondere sind ''+'' und '''' keine Metazeichen. Als Kommentarzeichen dient ''. Es kennzeichnet den Rest der Zeile als Kommentar. Lisps Semikolon ist in dieser Funktion ungünstig, da es in Standard-Prolog die Disjunktion ausdrückt.

Vergleicht man die Prolog-artige Syntax von Relfun mit der Syntax von Standard-Prolog, so fällt auf, daß in Relfun einige Elemente, wie etwa das Ampersand &ßur Kennzeichnung eines Rückgabewertes, hinzugekommen sind. Strukturen dagegen gibt es in beiden Sprachen, dennoch werden sie unterschiedlich formuliert. Während man in Prolog runde Klammern benutzt (z.B. book(bible)), verlangt Relfun nach eckigen (z.B. book[bible]). Diese Unterscheidung mag Prolog-Umsteigern die Einarbeitung in Relfun erschweren, ist jedoch nicht zu vermeiden, da Relfun runde Klammern für aktive Aufrufe reserviert.

Zu erwähnen ist weiterhin, daß arithmetische Operatoren in Relfun als Präfix geschrieben werden (z.B. +(3, 4)). Es ist dem Benutzer nicht möglich, eigene Infix-Operatoren zu definieren.

Für Relfun-Kenner ist sicherlich der Vergleich der Prolog-artigen mit der Lisp-artigen Syntax aufschlußreich. Tab. 2 stellt die charakteristischen Konstrukte gegenüber. Man beachte, daß die P-Syntax zwei Notationen für Variablen vorsieht, die intern nicht unterschieden werden.

Den Abschluß dieses Kapitels soll das Fakultätsbeispiel in drei Formulierungen bilden, wobei für die beiden Relfun-Formulierungen eine Funktionsdefinition gewählt wurde, während Prolog natürlich eine Relationsdefinition benutzt:

Im Anhang A wird beschrieben, wie man leicht weitere Beispiele zur Prolog-artigen Syntax gewinnen kann.



Next: Lisp2Pro: Pretty-Printer für Up: Die zwei Syntaxen Previous: Abstrakte und konkrete


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