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]).
и так далее.