• Keine Ergebnisse gefunden

Programmierkurs Prolog

N/A
N/A
Protected

Academic year: 2022

Aktie "Programmierkurs Prolog"

Copied!
11
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Programmierkurs Prolog

SS 1998

Thorsten Joachims

Universität Dortmund LS VIII - Prof. K. Morik

nach N. Fuchs/T. Meyer

(2)

Uebersicht

Hierarchie von Sprache

Kontextfreie Sprachen

DCGs in Prolog

Unifikationsbasierte Grammatiken

Strukturbeschreibungen

Semantik

(3)

Sprachtypen

Sprachen können in eine Hierarchie nach ihrer Komplexität eingeordnet werden.

Rekursive Sprachen

Kontextsensitive Sprachen

Kontextfreie Sprachen

Reguläre Sprachen

Zu jeder Sprachfamilie gibt es einen Grammatiktyp.

Begriffe:

Nichterminale Symbole

Terminale Symbole

Regeln

(4)

Parser

Ein Parser analysiert Sätze und gibt aus, ob diese wohlgeformt bzgl. einer gegebenen Grammatik sind.

Akzeptor: Antwortet nur ja/nein.

Komplexere Parser geben zusätzlich auch eine Strukturbeschreibung und/oder eine semantische Repräsentation des Satzes in einer semantischen Repräsentationssprache aus.

(5)

Kontextfreie Sprachen

Kontextfreie Sprachen werden durch Grammatiken beschrieben, die aus einer Menge von Regeln der Form

N --> V1, V2, ... , Vn

bestehen. N ist ein nichtterminales Zeichen und die V1 bis Vn sind entweder terminale oder

nichtterminale Zeichen.

Mit kontextfreien Sprachen lassen sich die größten Teile von

Programmiersprachen

natürlichen Sprachen beschreiben.

(6)

Prolog Regeln als Grammatik

Differenzlisten S\R:

s(S,R) :- np(S,R1), vp(R1,R).

np(P,R) :- det(P,P1), n(P1,R).

np(P,R) :- pn(P,R).

vp(P,R) :- tv(P,R1), np(R1,R).

pn(N,R) :- N=[mary|R].

pn(N,R) :- N=[tom|R].

tv(N,R) :- N=[loves|R].

det(N,R) :- N=[the|R].

n(N,R) :- N=[cat|R].

Aufruf:

?- s([tom,loves,mary],R).

(7)

Prolog als Parser

Prolog geht wie folgt vor:

Top-Down: beginnend mit S werden die Grammatikregeln angewandt, bis terminale Symbole der Grammatik erreicht sind, die die Eingabe des Parsers bilden.

Nichtdeterministische: wenn es mehrere Regeln mit demselben Kopf gibt, wird vielleicht zunächst eine angewandt, die nicht zum Ziel führt -->

Backtracking.

Depth-First: Tiefensuche ohne Tiefenbeschränkung

Left-To-Right

==> Recursive Descent Parsing

(8)

Definite Clause Grammar

Phrasenstrukturgrammatik, die Kontextabhängig- keiten und beliebige Bedingungen verarbeiten kann.

Sie baut bei der syntaktischen Analyse im selben Schritt die syntaktische Struktur auf.

Der Formalismus ist genauso ausdrucksstark wie Prolog!

Regeln der Form:

NT --> Rumpf

Im Rumpf können beliebig viele Nichtterminale, Bedingungen und Terminale sein.

s --> np(nom,Num,Eig), vp(3,Num,Eig).

entspricht

s(X,Y):-np(nom,Num,Eig,X,X1),vp(3,Num,Eig,X1,Y).

(9)

DCGs in Prolog

Der Pfeil der Grammatikregel ist ‘-->’

Alle Terme entsprechen der normalen Prolog Syntax.

Terminale werden in eckigen Klammern [...]

geschrieben.

Prolog Ziele in Grammatikregel werden in geschweifte Klammern {...} eingefaßt.

s --> np, vp.

np --> det, n.

np --> pn.

vp :- tv, np.

pn :- [mary].

pn :- [tom].

tv :- [loves].

det :- [the].

n :- [cat].

Aufruf:

phrase(s,[tom,loves,mary]).

(10)

Erzeugen der Strukturschreibung

Ein zusätzliches Argument:

s(s(NP,VP)) --> np(NP), vp(VP).

np(np(DET,N)) --> det(DET), n(N).

np(np(PN)) --> pn(PN).

vp(vp(TV,NP)) --> tv(TV), np(NP).

pn(pn(mary)) --> [mary].

pn(pn(tom)) --> [tom].

tv(tv(loves)) --> [loves].

det(det(the)) --> [the].

n(n(cat)) --> [cat].

Aufruf:

?- phrase(s,[tom,loves,mary]).

(11)

Semantik

--> Tafel

Referenzen

ÄHNLICHE DOKUMENTE

Assume true for computations of length ≤ k, we’ll prove true for computations of length k+1 Suppose that P has a computation where x. brings p to q with empty stacks in k+1 steps

Eine Ableitung in einer kontextfreien Grammatik heißt Linksableitung, wenn in jedem Schritt das am weitesten links stehende Nichtterminalsymbol ersetzt wird.. Jedem Syntaxbaum zu

Die Menge der kontextfreien Sprachen ist unter den Operationen (i) Vereinigung,.. (ii) Produkt (Konkatenation) und

Die Menge der deterministisch kontextfreien Sprachen ist eine echte Teilmenge der Menge der

Universit¨ at Karlsruhe Institut f¨ ur Theorie der Kondensierten Materie.. Ubungen zur Theoretischen Physik F ¨

clause(H,B) Es wird nach einer Klausel gesucht, deren Kopf mit H und deren Koerper mit B unifizierbar ist.... Programmierkurs Prolog, SS 1998

Antwort: Weil der Flur nass ist und wenn das Bad trocken ist, dann ist das Problem in der Küche. Wenn das Problem in der Küche ist und kein Wasser von draußen gekommen ist, dann ist

• Klauseln werden static kompiliert, wenn nicht explizit durch dynamic/1 anders gewünscht...