Prolog中的DCG(确定子句语法)

时间:2012-05-28 12:54:40

标签: prolog grammar dcg clause

我正在尝试在prolog中创建一个DCG,以便根据一些谓词创建一个句子。我有两条信息=对象的属性(“查尔斯是一个人。”)和对象之间的关系(“查尔斯是威廉的父亲。”)

任务是创建像这样的句子

[charles,is,a,man]
[camilla,is,a,woman]
[camilla,is,the,wife,of,charles]
[charles,is,the,father,of,william]
[charles,is,the,husband,of,camilla]

我可以创建一个简单的DCG,它可以生成句子,但我如何实现关系,以便主题(查尔斯,卡米拉,查理)对应于谓词部分(男人,女人)?

2 个答案:

答案 0 :(得分:1)

您可以将DCG规则与Prolog谓词结合使用,如下所示

rpn --> [RPN], {rpn(RPN)}.   /* relative pronoun */
rpn(that).
rpn(which).
rpn(who).

示例取自J.R. Fisher's tutorial

答案 1 :(得分:0)

zdanie --> person, " ", iss, " ", animal, ".".

 man --> "adam" or "john".
women --> "eve" or "travolta".
iss --> "is".
animal --> "dog" or "cat" or "bird".

sentence(Z) :-
   phrase(zdanie, [I|R]),
   code_type(I, to_lower(J)),
   atom_codes(Z, [0' , J|R]).

等等。