tuprolog语法错误。第1行/之前的语法错误

tuprolog语法错误。第1行/之前的语法错误,prolog,tuprolog,Prolog,Tuprolog,我不熟悉prolog。我通常在swi prolog上查阅.pl文件,但当我在tu prolog上查阅它时,疯狂的事情总是发生。这是我的部分代码 :- dynamic(assignopT/6). :- multifile(assignopT/6). assignopT(30246,30244,30210,30247,+,30248). 当我在tu prolog上查阅它时,它说第12219行/之前有语法错误,这是上面的第三行。它在swi prolog上正常工作。然后我想+可

我不熟悉prolog。我通常在swi prolog上查阅.pl文件,但当我在tu prolog上查阅它时,疯狂的事情总是发生。这是我的部分代码

    :- dynamic(assignopT/6).
    :- multifile(assignopT/6).
    assignopT(30246,30244,30210,30247,+,30248).
当我在tu prolog上查阅它时,它说第12219行/之前有语法错误,这是上面的第三行。它在swi prolog上正常工作。然后我想+可能有问题,所以我把它改成了这个

    assignopT(30246,30244,30210,30247,'+',30248).
这一次,它说在第1行/之前有语法错误。我真的不明白这句话,我甚至不知道-1是什么意思。名为swi2tu.pl的.pl已打开,请尝试:

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

在单引号之间写入原子(如
+
)不会改变任何内容,错误可能是由于其运算符状态所致。假设是这样的话,在()之间编写应该可以修复在tuProlog中加载代码时可能出现的运算符冲突(我想不是Turbo Prolog!)

是的,是特普洛格。我已经照你说的做了,但没有成功。写入+between()无法解决问题,相同的错误仍然在同一行。如果tuProlog解析器不符合官方和事实上的Prolog标准,则可能需要为第5个参数找到替代表示形式。顺便说一句,你使用的tuProlog版本支持多文件谓词吗?是的,它支持多文件谓词。我昨天找到了原因并修复了它。.pl文件中有一个utf-8字符。utf-8字符的值为U+FFFF,tuProlog在遇到U+FFFF时停止解析,这是在-1行/之前出现语法错误的原因。但是swi prolog可以解析U+FFFF,我仍然不理解。
U+FFFF
不是有效的Unicode代码点。似乎SWI Prolog忽略了它。我建议您通过询问SWI Prolog邮件列表来确认。很高兴你发现了错误。很高兴有你的帮助。我很快就会问他们