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

时间:2011-02-26 21:17:04

标签: prolog syntax-error 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字节
  真。

     

? -

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

  

\快乐(尤兰达)。
      \ playsAirGuitar(mia): - listennsToMusic(mia)。
      \ playsAirGuitar(yolanda): - listennsToMusic(yolanda)。
     真正。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

相关问题