DCG(Определенная статья грамматики) в Прологе

Я пытаюсь сделать 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, которая может генерировать предложения, но как я могу реализовать отношения так, чтобы субъект (charles, camilla, charles) соответствовал предикатной части (мужчина, женщина)?

2 ответа

Вы можете объединить правила DCG с предикатами Prolog следующим образом

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

Пример взят из учебника JR Fisher

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]).

и так далее.

Другие вопросы по тегам