我有一个Prolog语句解析器,它返回一个句子(作为列表传递给它),分为两部分 - double
和Noun_Phrase
。见下面的例子:
Verb_Phrase
现在我想取sentence(Sentence, sentence(np(Noun_Phrase), vp(Verb_Phrase))) :-
np(Sentence, Noun_Phrase, Remainder),
vp(Remainder, Verb_Phrase).
和Noun_Phrase
并将它们传递给另一个Prolog谓词,但首先我要从 {{1}中提取第一个词(应该总是一个动词)变量和Verb_Phrase
的其余部分变成另一个变量并将它们分别传递给下一个谓词。
我考虑过使用统一,我尝试过:
Verb_Phrase
但我每次都得到错误:超出本地堆栈异常。我认为这与Verb_Phrase没有真正的列表有关。这可能是Verb_Phrase的意思:
Verb_Phrase
我如何才能将sentence(Sentence, sentence(np(Noun_Phrase), vp(Verb_Phrase))),
[Head|Tail] = Verb_Phrase,
next_predicate(_, Noun_Phrase, Head, Tail, _).
作为变量动词,并将其余部分作为变量,在Prolog中使用这样的复合词?