SWI-Prolog文件需要开始和结束字符吗?

我是SWI-Prolog的新手,正在尝试一些教程 . 但是,我尝试通过命令行加载的每个文件都会收到2条错误消息 - 一条在开始时(运算符预期),另一条在结尾处(文件意外结束) . 文件保存在与我工作的目录相同的目录中 .

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

listensToMusic(mia).  
happy(yolanda).   
playsAirGuitar(mia) :- listensToMusic(mia).   
playsAirGuitar(yolanda) :- listensToMusic(yolanda).
listensToMusic(yolanda):- happy(yolanda).

从打开Prolog开始(通过/ opt / local / bin / swipl),我的命令行如下所示:

%library(swi_hooks)编译成pce_swi_hooks 0.00秒,3,928字节欢迎来到SWI-Prolog(多线程,64位,版本5.10.2)版权所有(c)1990-2010阿姆斯特丹大学,VU阿姆斯特丹SWI-Prolog自带绝对没有担保 . 这是免费软件,欢迎您在特定条件下重新发布 . 有关详细信息,请访问http://www.swi-prolog.org . 帮忙,使用? - 帮助(主题) . 或? - apropos(Word) . ? - [kb2] . 错误:/Users/name/Desktop/kb2.pl:1:0:语法错误:运算符预期错误:/Users/name/Desktop/kb2.pl:10:52:语法错误:文件%kb2的意外结束编译0.00秒,2,584字节为真 . ? -

当我要求列出已编译的文件时,我得到:

\ happy(yolanda) . \ playsAirGuitar(mia): - listennsToMusic(mia) . \ playsAirGuitar(yolanda): - listennsToMusic(yolanda) . 真正 .

所以它正在删除文件的第一行和最后一行 .

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

回答(2)

3 years ago

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

3 years ago

许多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 .