如何在 DCG 之后从知识库中生成一些短语?

How can I generate some phrases from a knowledge base after DCG?

我在 prolog 中将我的语法定义为 DCG(Definite Clause Grammar)。 现在我想根据我的知识库中的事实生成一些短语。 例如,如果我有 likes(mark, julia). 我想生成句子

Mark likes Julia.

我该怎么做?

我们必须考虑到 likes/2 是一个普通的 Prolog 谓词,不是 DCG。

因此,我们使用 {}//1 来引用 DCG 中的常规 Prolog 谓词。

例如:

sentence -->
        [X, likes, Y],
        { likes(X, Y) }.

示例用法:

?- phrase(sentence, Ls).
Ls = [mark, likes, julia].