佩雷拉(Pereira)的普罗洛洛(Prolog)操作员错误



使用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.

最新更新