Karl Heinz Wagner
Karl Heinz Wagner
Karl Heinz Wagner
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Logikgrammatik 145<br />
5. Definite Clause Grammar (DCG)<br />
5.1 Verkettung<br />
Wir waren bisher davon ausgegangen, daß in einer Regel wie<br />
(5.1.) Satz(x ⌢ y) ⇐ NP (x), V P (y)<br />
eine Verkettungsoperation definiert ist, die Paare von Ketten auf Ketten abbildet<br />
(K × K ↦→ K, wenn K die Menge aller möglichen Ketten ist) und ein funktionales<br />
Argument wie x ⌢ y entsprechend ausgewertet wird. Dies ist jedoch insbesondere<br />
in Prolog nicht gegeben. 5 Es gibt aber eine Möglichkeit, die Verkettung ausschließlich<br />
über die Unifikation von Termen zu beschreiben. Dazu benötigen wir zunächst<br />
eine präzise Definition des Begriffs Kette:<br />
Definition 5.1. Kette<br />
Eine Kette kann induktiv wie folgt definiert werden<br />
1. Der Term nil ist eine Kette, die leere Kette.<br />
2. Ist R eine Kette und K ein Term, dann ist K.R eine Kette. K ist der<br />
Kopf und R der Rumpf der Kette.<br />
Ein Ausdruck wie the girl laughed wird damit als the.girl.laughed.nil notiert.<br />
Die Behandlung der Verkettung (bzw. umgekehrt der Zerlegung von Ketten<br />
in Teilketten) beruht auf folgender Überlegung: Ein Kette k0 enthält am Anfang<br />
einen Satz mit einem Rest k (d.h. Satz(k0 −k)), wenn es eine Anfangskette k0 −k1<br />
gibt, für die gilt NP (k0−k1) und die Restkette k1 eine Kette k1−k mit V P (k1−k)<br />
enthält. Die gesamte Kette k0 ist ein Satz, wenn die Restkette k leer ist. Die leere<br />
Kette soll mit der Konstante nil bezeichnet werden.<br />
<br />
k0<br />
<br />
k0 − k<br />
k0 − k1<br />
<br />
k<br />
<br />
<br />
k1 − k<br />
<br />
k<br />
<br />
Der entscheidende Punkt ist dabei, daß im Falle eines terminalen Symbols t gilt:<br />
k0 = t.k. Die Zerlegung einer Kette in Teilketten wird damit zurückgeführt auf die<br />
Zerlegung der Kette in das erste teminale Element und die Restkette. Die Differenzketten<br />
6 wie k0−k werden im folgenden durch zwei Argumente dargestellt,<br />
so daß die erste Syntaxregel wie folgt formuliert werden kann:<br />
5<br />
In Prolog sind Funktionen im prädikatenlogischen Sinne bloße syntaktische Strukturen,<br />
die nicht ausgewertet werden.<br />
6<br />
In Prolog werden Ketten als Listen dargestellt. Man spricht dort entsprechend von<br />
Differenzlisten.<br />
k1