使用ubuntu linux中的swi prolog 7.7.2,我正在尝试运行"谈话"Pereira和Schieber的模块(附录A,http://www.mtome.com/publications/pnla/prolog-digital.pdf)。
复制后,粘贴到文本编辑器(崇高)并调整线破裂到(主要)匹配原始,运行Swipl,然后['talk.p'],我遇到超过二十多个"语法错误:操作员"预期的"错误,例如目录位置由[...]取代):
第15-20行:
main_loop :- write(’>> ’), % prompt the user read_sent(Words), % read a sentence talk(Words, Reply), % process it with TALK print_reply(Reply), % generate a printed reply main_loop. % process more sentences
错误:[...]/talk.p:16:15:语法错误:操作员预期
---第38行:
talk(_Sentence, error(’too difficult’)).
错误:[...]/talk.p:38:25:语法错误:操作员预期
---第76-77行:
% Replying to some other type of sentence. reply(_Type, _FreeVars, _Clause, error(’unknown type’)).
错误:[...]/talk.p:77:42:语法错误:操作员预期
---第87-91行:
print_reply(error(ErrorType)) :- write(’Error: "’), write(ErrorType), write(’."’), nl. print_reply(asserted(Assertion)) :- write(’Asserted "’), write(Assertion), write(’."’), nl.
错误:[...]/talk.p:91:12:语法错误:操作员预期
----注意我还遇到十个单元可变警告,但不确定这是否会被证明是一个问题,例如:
---第59-60行:
reply(query, FreeVars, (answer(Answer):-Condition), Reply) :- Warning: [...]/talk.P:59: Singleton variables:
[freevars,条件,freevarsˆ条件]警告:[...]/talk.p:59: 分支中的单例变量:freevarsˆ条件
---第242-243号线:
q(S => ‘answer(X)) --> whpron, vp(finite, XˆS, nogap).
警告:[...]/talk.p:242:单例变量:[s,x,xˆs]
我需要做什么才能使此模块启动并运行?
有几个问题。操作员值(100、500等)与标准运算符的较旧值兼容,应更高。另外,后引号/背钉(ASCII 96)在某个时候从符号变为引用字符。
我设法通过更改操作员来使文件加载到SWI Prolog中:
:- op(1000,xfy,&).
:- op(1010,xfy,=>).
:- op(200,fx,`).
给出命令行参数 --traditional
(使back Quote成为符号而不是引用字符)。
$ swipl --traditional
Welcome to SWI-Prolog (threaded, 64 bits, version 7.4.2)
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
Please run ?- license. for legal details.
For online help and background, visit http://www.swi-prolog.org
For built-in help, use ?- help(Topic). or ?- apropos(Word).
?- [talk].
true.