Посторение синтаксического анализатора

Рейтинг: 0Ответов: 1Опубликовано: 17.11.2014

Здравствуйте. Помогите, пожалуйста, решить задачу:

В базе данных Пролога есть факты вида:

родитель(Марья, Петр).  
родитель(Марья, Иван). и т.д.  
Запрос к базе данных имеет вид  
?-q(X, Y).

Значение 1-го аргумента — одна из цепочек вида:

[Кто, брат, Ивана, ’?’]  
[Чей, брат, Пётр, ’?’]  
[Иван, брат, Петра, ’?’]

На выходе нужно получить: Y = Пётр, Y = Иван, Y = yes

Ответы

▲ 2
predicates
nondeterm q(string, string)

facts

parent(string,string)

clauses

parent("Masha","Ivan").

parent("Masha","Petr").

parent("Dasha","Fedr").

parent("Dasha","Cenya").

q(X,Y):-parent(Z,X),parent(Z,Y),X<>Y.

goal

%1 q("Ivan",Y).
%2 q("Petr",Y).

%3

q("Ivan","Petr").