Подходящая часть DFG в Прологе - PullRequest
0 голосов
/ 20 мая 2018

Я определил грамматику DFG в Прологе, которая выглядит примерно так:

start --> subject, verb, object.
subject --> ([i]; [you]).
verb --> ([like]; [need]).
object --> article, noun.
article --> ([my];[your]).
noun --> ([car] ; [bike]).

Теперь я хотел бы иметь предикат, который возвращает мне часть объекта фразы, принятой этим DFG.

Например, objectPart([i, like, my, car], X) должно вернуть X = [my, car].

Как я могу это сделать?

1 Ответ

0 голосов
/ 20 мая 2018

Это можно сделать:

start(O) --> subject, verb, my_object(O).
subject --> ([i]; [you]).
verb --> ([like]; [need]).
my_object(L) --> article(A), noun(N), {L = [A,N]}.
article(A) --> ([my],{A=my};[your],{A=your}).
noun(N) --> ([car],{N=car} ; [bike],{N=bike}).

objectPart(Lst, R) :-
    phrase(start(R), Lst).

Результат:

?- objectPart([i, like, your, car], Z).
Z = [your, car] .

РЕДАКТИРОВАТЬ Я изменяю объект в my_object потому что SWI-Prolog использует объект для XPCE.

...