2013-07-26 46 views
0

我是序言新手。我有一个通常在swi-prolog上咨询的.pl文件,但是当我在tu-prolog上咨询它时,总会发生疯狂的事情。这里是我的代码的一部分。tuprolog语法错误。在/行-1之前的语法错误

:- dynamic(assignopT/6). 
    :- multifile(assignopT/6). 
    assignopT(30246,30244,30210,30247,+,30248). 

当我咨询它TU-序言,它表示语法错误在/线12219,这是上面第三行之前。它在swi-prolog上运行正常。然后我想可能是+有问题,所以我改变了它。

assignopT(30246,30244,30210,30247,'+',30248). 

这一次,它说在第-1行/之前的语法错误。我真的没有得到这个,什么-1甚至假设意思。该特等命名swi2tu.pl是https://drive.google.com/folderview?id=0B4KCEwRVmr_yWjQwOEp3LWpYdk0&usp=sharing

回答

1

尝试,而不是:

assignopT(30246,30244,30210,30247,(+),30248). 

写一个原子,如+,单引号之间没有任何改变和错误可能是由于其经营者的地位。假设是这种情况,在()之间写入它应该修正在tuProlog(不是Turbo Prolog,我假设!)中加载代码时可能出现的操作符冲突。

+0

是的,这是tuProlog。我已经完成了你所说的,但没有成功。在()之间写入+不能解决问题,同样的错误仍然在同一行。 – York

+0

如果tuProlog解析器不符合官方和事实上的Prolog标准,则可能需要为第5个参数找到替代表示法。顺便说一下,你使用的tuProlog版本是否支持多文件谓词? –

+0

是的,它支持多文件谓词。我找到了原因并在昨天修复了它。在.pl文件中有一个utf-8字符。 utf-8字符的值是U + FFFF,并且tuProlog在遇到U + FFFF时停止解析,这是语法错误在/ -1行之前的原因。但swi-prolog可以解析器U + FFFF,我仍然不明白。 – York