2012-03-05 9 views
0
global facts 
    xpositive(symbol,symbol) 
    xnegative(symbol,symbol) 

predicates 
    animal_is(symbol) - nondeterm (o) 
    it_is(symbol) - nondeterm (i) 
    ask(symbol,symbol,symbol) - determ (i,i,i) 
    remember(symbol,symbol,symbol) - determ (i,i,i) 
    positive(symbol,symbol) - determ (i,i) 
    negative(symbol,symbol) - determ (i,i) 
    clear_facts - determ() 
    run - determ() 

clauses 
    animal_is(cheetah):- 
it_is(mammal), 
    it_is(carnivore), 
positive(has,tawny_color), 
positive(has,dark_spots). 

    animal_is(tiger):- 
it_is(mammal), 
it_is(carnivore), 
positive(has, tawny_color), 
positive(has, black_stripes). 

    animal_is(giraffe):- 
it_is(ungulate), 
positive(has,long_neck), 
positive(has,long_legs), 
positive(has, dark_spots). 

    animal_is(zebra):- 
it_is(ungulate), 
positive(has,black_stripes). 

    animal_is(ostrich):- 
it_is(bird), 
negative(does,fly), 
positive(has,long_neck), 
positive(has,long_legs), 
positive(has, black_and_white_color). 

    animal_is(penguin):- 
it_is(bird), 
negative(does,fly), 
positive(does,swim), 
positive(has,black_and_white_color). 

    animal_is(albatross):- 
it_is(bird),positive(does,fly_well). 

    it_is(mammal):- 
positive(has,hair). 
    it_is(mammal):- 
positive(does,give_milk). 

    it_is(bird):- 
positive(has,feathers). 
    it_is(bird):- 
positive(does,fly), 
positive(does,lay_eggs). 

    it_is(carnivore):- 
positive(does,eat_meat). 

    it_is(carnivore):- 
positive(has,pointed_teeth), 
positive(has, claws), 
    positive(has,forward_eyes). 

    it_is(ungulate):- 
it_is(mammal), 
positive(has,hooves). 

    it_is(ungulate):- 
it_is(mammal), 
positive(does,chew_cud). 

    positive(X,Y):- 
xpositive(X,Y),!. 
    positive(X,Y):- 
not(xnegative(X,Y)), 
ask(X,Y,yes). 

    negative(X,Y):- 
xnegative(X,Y),!. 
    negative(X,Y):- 
not(xpositive(X,Y)), 
ask(X,Y,no). 

    ask(X,Y,yes):- 
!, 
write(X," it ",Y,'\n'), 
readln(Reply),nl, 
frontchar(Reply,'y',_), 
remember(X,Y,yes). 
    ask(X,Y,no):- 
!, 
write(X," it ",Y,'\n'), 
readln(Reply),nl, 
frontchar(Reply,'n',_), 
remember(X,Y,no). 

    remember(X,Y,yes):- 
assertz(xpositive(X,Y)). 
    remember(X,Y,no):- 
assertz(xnegative(X,Y)). 

    clear_facts:- 
write("\n\nPlease press the space bar to exit\n"), 
retractall(_,dbasedom), 
readchar(_). 

    run:- 
animal_is(X),!, 
write("\nYour animal may be a (an) ",X), 
nl, 
clear_facts. 
    run:- 
write("\nUnable to determine what"), 
write("your animal is.\n\n"), 
clear_facts. 

goal 
    run. 

Я пытаюсь запустить эту экспертную системную программу, но при компиляции я получаю следующую ошибку.Получение ошибок с помощью программы пролога

compiling C:/Users/daemon/Desktop/ch16E01.PRO for byte code... 
C:/Users/daemon/Desktop/ch16E01.PRO:1:8: syntax error: . or operator expected after  expression 
C:/Users/daemon/Desktop/ch16E01.PRO:127:3: syntax error: . or operator expected after  expression 
2 error(s) 
compilation failed 

ответ

1

Затем вам нужно будет преобразовать код в Пролог. Несмотря на их имена, TurboProlog/VisualProlog, хотя и интересные языки логического программирования, не являются системами Prolog в соответствии с официальными и фактическими стандартными определениями Prolog.

Некоторые изменения в коде, необходимые для его компиляции со стандартной системой Prolog (например, GNU Prolog), будут включать: удаление строк с помощью «предложений» и «цели» текста », а также удаление« глобального » фактов "и" предикатов ", заменяя двойные кавычки в аргументах write/1 одинарными кавычками, заменяя вызов readchar/1 вызовом get_char/1. Но есть и другие не столь тривиальные изменения. В конце концов, лучше искать учебник кода, написанного на Прологе в первую очередь.

0

Код, который вы отправили, по-видимому, был написан для TurboProlog/VisualProlog. Но, глядя на сообщения об ошибках компиляции, кажется, что вы используете компилятор Prolog (nother). Можешь подтвердить?

+0

о yes.I фактически пытался использовать компилятор GNU. – daemon54

0

Пожалуйста вставьте читаемый код в ваш компилятор и разместить свои ошибки ..

DATABASE - dbasedom 
    xpositive(symbol,symbol) 
    xnegative(symbol,symbol) 

PREDICATES 
    animal_is(symbol) - nondeterm (o) 
    it_is(symbol) - nondeterm (i) 
    ask(symbol,symbol,symbol) - determ (i,i,i) 
    remember(symbol,symbol,symbol) - determ (i,i,i) 
    positive(symbol,symbol) - determ (i,i) 
    negative(symbol,symbol) - determ (i,i) 
    clear_facts - determ() 
    run - determ() 


Goal 
run. 


CLAUSES 


run:- 
animal_is(X),!, 
write("\nYour animal may be a (an) ",X), 
nl, 
clear_facts. 

run:- 
write("\nUnable to determine what"), 
write("your animal is.\n\n"), 
clear_facts. 



animal_is(cheetah):- 
it_is(mammal), 
it_is(carnivore), 
positive(has,tawny_color), 
positive(has,dark_spots). 

animal_is(tiger):- 
it_is(mammal), 
it_is(carnivore), 
positive(has, tawny_color), 
positive(has, black_stripes). 

animal_is(giraffe):- 
it_is(ungulate), 
positive(has,long_neck), 
positive(has,long_legs), 
positive(has, dark_spots). 

animal_is(zebra):- 
it_is(ungulate), 
positive(has,black_stripes). 

animal_is(ostrich):- 
it_is(bird), 
negative(does,fly), 
positive(has,long_neck), 
positive(has,long_legs), 
positive(has, black_and_white_color). 

animal_is(penguin):- 
it_is(bird), 



it_is(mammal):- 
positive(has,hair). 
it_is(mammal):- 
positive(does,give_milk). 

it_is(bird):- 
positive(has,feathers). 
it_is(bird):- 
positive(does,fly), 
positive(does,lay_eggs). 

it_is(carnivore):- 
positive(does,eat_meat). 
it_is(carnivore):- 
positive(has,pointed_teeth), 
positive(has, claws), 
positive(has,forward_eyes). 

it_is(ungulate):- 
it_is(mammal), 
positive(has,hooves). 
it_is(ungulate):- 
it_is(mammal), 
positive(does,chew_cud). 


positive(X,Y):- 
xpositive(X,Y),!. 
positive(X,Y):- 
not(xnegative(X,Y)), 
ask(X,Y,yes). 

negative(X,Y):- 
xnegative(X,Y),!. 
negative(X,Y):- 
not(xpositive(X,Y)), 
ask(X,Y,no). 


ask(X,Y,yes):- 
!, 
write(X," it ",Y,'\n'), 
readln(Reply),nl, 
frontchar(Reply,'y',_), 
remember(X,Y,yes). 

ask(X,Y,no):- 
!, 
write(X," it ",Y,'\n'), 
readln(Reply),nl, 
frontchar(Reply,'n',_), 
remember(X,Y,no). 

remember(X,Y,yes):- 
assertz(xpositive(X,Y)). 
remember(X,Y,no):- 
assertz(xnegative(X,Y)). 


negative(does,fly), 
positive(does,swim), 
positive(has,black_and_white_color). 


clear_facts:- 
write("\n\nPlease press the space bar to exit\n"), 
retractall(_,dbasedom), 
readchar(_). 
Смежные вопросы