SWI Prolog文件是否需要开始字符和结束字符?

SWI Prolog文件是否需要开始字符和结束字符?,prolog,syntax-error,swi-prolog,Prolog,Syntax Error,Swi Prolog,我是SWI Prolog新手,正在尝试一些教程。但是,我尝试通过命令行加载的每个文件都会收到两条错误消息—一条在开始处(应为操作员),另一条在结束处(文件意外结束)。文件保存在与我工作所在的目录相同的目录中 例如,我将此文件保存为kb2.pl listensToMusic(mia). happy(yolanda). playsAirGuitar(mia) :- listensToMusic(mia). playsAirGuitar(yolanda) :- listensToMus

我是SWI Prolog新手,正在尝试一些教程。但是,我尝试通过命令行加载的每个文件都会收到两条错误消息—一条在开始处(应为操作员),另一条在结束处(文件意外结束)。文件保存在与我工作所在的目录相同的目录中

例如,我将此文件保存为kb2.pl

listensToMusic(mia).  
happy(yolanda).   
playsAirGuitar(mia) :- listensToMusic(mia).   
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).  
从打开Prolog开始(通过/opt/local/bin/swipl),我的命令行如下所示:

%库(swi_挂钩)编译为pce_swi_挂钩0.00秒,3928字节
欢迎使用SWI Prolog(多线程,64位,版本5.10.2)
版权所有(C)1990年至2010年阿姆斯特丹大学,阿姆斯特丹大学出版社 SWI Prolog绝对没有保修。这是自由软件,
欢迎您在特定条件下重新发布。
详情请浏览

帮助,使用?-帮助(主题)。或者?-恰到好处(词)

?-[kb2]。
错误:/Users/name/Desktop/kb2.pl:1:0:语法错误:应为运算符
错误:/Users/name/Desktop/kb2.pl:10:52:语法错误:文件意外结束
%kb2编译0.00秒,2584字节

?-

当我询问编译文件的列表时,我得到:

\快乐(约兰达)。
\playsAirGuitar(mia):-listensToMusic(mia)。
\playsAirGuitar(约兰达):-听音乐(约兰达)。

因此,它将删除文件的第一行和最后一行


我在网上搜索了这些错误消息,找到了很多关于Prolog格式的有用提示,但没有一个能解决这种情况。Prolog文件的开头和结尾是否应该使用某种特殊字符或格式?

您使用的是哪种操作系统?您确定该文件是ASCII(而不是UTF-16)文件吗?您的平台是否有本机行结尾?您可以发布整个文件(原始)以便人们可以检查它吗?

许多Prolog系统,如SWI Prolog、Jekejeke Prolog,允许将BOM作为文本文件的第一个字符进行检测。BOM表是一些空白,表示文本文件的编码:

254 255          UTF-16BE
255 254          UTF-16LE
239 187 191      UTF-8

因此,没有必要限制自己使用ASCII码。许多文本编辑器将为您放置BOM表。而SWI Prolog,Jekejeke Prolog,默认情况下会探测BOM。

我重新格式化了上面的文本,并可以将其复制到SWI Prolog(使用
和(用户)
)中。它是富文本格式(我认为这意味着UTF-16)。我刚把它换成ASCII码,现在可以用了-谢谢!不过,下一次,我将如何发布整个原始文件?我可以直接上传到stack overflow吗?@Kristen:RTF(富文本格式)是微软很久以前发明的一种文字处理格式。SWI Prolog无疑会遇到额外的字体和围绕这些文件文本的其他“格式化”命令的问题。您可以在一个简单的文本编辑器中打开RTF文件,自己查看额外的字符。