01.10.2013 Aufrufe

Karl Heinz Wagner

Karl Heinz Wagner

Karl Heinz Wagner

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!