1
是否可以在DCG中創建如下的傳遞函數?或者將它與DCG規則結合起來?DCG中的傳遞函數
genx(A,B) :- gen(A,B).
genx(A,C) :- gen(A,B), genx(B,C).
gen(a,b).
gen(b,c).
我會解釋我想要做的正是:
如果我有這樣的語法:
noun_phrase(D,N) --> det(D), noun(N).
noun(n(cat)) --> [cat].
我要讓一樣,如果我想在N
到noun(N)
一些限制成爲一種動物。所以,我可以使用這樣的事情:
noun_phrase(np(D,N)) --> det(D), noun(N), genx(N, animal).
當一隻貓的信息是動物是從一些事實推斷的一樣:
gen(cat,pet).
gen(pet,animal).
感謝
感謝您的回答,但它似乎並沒有工作!你能給出更明確的答案嗎? – user2598997
@ user2598997 - 你用的是什麼prolog?我看到它使用gprolog和swi-prolog。如果列表不是問題,你可以嘗試改變'gen([a],[b])。和'gen([b],[c])中的事實。 'genx([a],[c])'應該返回true。 – max66
我正在使用swi-prolog(在線vserion)。 genx(A,B) - > gen(A,B)。 genx(A,C) - > gen(A,B),genx(B,C)。 gen([a],[b])。 gen([b],[c])。給出這個錯誤:程序'genx(A,B)'不存在。 – user2598997