我是SWI-Prolog的新手,正在尝试一些教程。然而,我尝试通过命令行加载的每个文件都会得到2个错误消息 - 一个在开始时(操作员期望)和一个在结尾(文件意外结束)。文件保存在同一目录中的一个,我在工作。SWI-Prolog文件是否需要开始和结束字符?
例如,我有这个文件保存为kb2.pl
listensToMusic(mia).
happy(yolanda).
playsAirGuitar(mia) :- listensToMusic(mia).
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).
从打开的Prolog开始(通过/选择/ local/bin目录/ swipl),我的命令行看起来是这样的:
% library(swi_hooks) compiled into pce_swi_hooks 0.00 sec, 3,928 bytes
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 5.10.2)
Copyright (c) 1990-2010 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.help, use ?- help(Topic). or ?- apropos(Word).
?- [kb2].
ERROR: /Users/name/Desktop/kb2.pl:1:0: Syntax error: Operator expected
ERROR: /Users/name/Desktop/kb2.pl:10:52: Syntax error: Unexpected end of file
% kb2 compiled 0.00 sec, 2,584 bytes
true.?-
当我问编译的文件的清单,我得到:
\happy(yolanda).
\playsAirGuitar(mia) :- listensToMusic(mia).
\playsAirGuitar(yolanda) :- listensToMusic(yolanda).
true.
因此它将剪切文件的第一行和最后一行。
我在网上搜索了这些错误消息,发现了很多关于Prolog格式化的有用提示,但都没有解决这种情况。是否有某种特殊字符或格式应该用于Prolog文件的开始和结束?
我重新格式化了上面的文本,并且可以将它复制到SWI Prolog中(使用'with(user)')就好了。 – 2011-02-26 21:36:26
它采用Rich Text Format(我认为是UTF-16)。我只是将它切换到ASCII,现在它可以工作 - 谢谢!然而,下一次,我将如何发布整个原始文件?我可以直接上传堆栈溢出吗? – Kristen 2011-02-26 22:25:11
@Kristen:RTF(RTF格式)是微软很早以前就开始的一种文字处理格式。 SWI-Prolog毫无疑问会对包含这些文件文本的额外字体和其他“格式化”命令产生困难。您可以在简单的文本编辑器中打开RTF文件,并为自己查看额外的字符。 – hardmath 2011-02-27 16:19:53