使用prolog程序获取错误


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("nnPlease press the space bar to exitn"),
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.nn"),
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

然后你需要将代码转换为Prolog。尽管它们的名字,TurboProlog/VisualProlog虽然很有趣的逻辑编程语言,但并不是Prolog的官方和事实上的标准定义。

使用标准Prolog系统(如GNU Prolog(编译代码所需的一些更改包括:删除带有"子句"和"目标"文本的行;还删除"全局事实"和"谓词"块;用单引号替换write/1参数中的双引号;将readchar/1的调用替换为对get_char/1的调用。但还有其他不那么微不足道的变化。最后,最好首先寻找为Prolog编写的教程代码。

你发布的代码似乎是为TurboProlog/VisualProlog编写的。但是,查看编译错误消息,您似乎正在使用(其他(Prolog编译器。你能证实吗?

请将可读代码粘贴到编译器中并发布错误。

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.nn"),
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("nnPlease press the space bar to exitn"),
retractall(_,dbasedom),
readchar(_).

相关内容

  • 没有找到相关文章

最新更新