【问题标题】:A tuprolog syntax error.Syntax error at/before line -1tuprolog 语法错误。-1 行/之前的语法错误
【发布时间】:2013-07-26 15:37:37
【问题描述】:

我是序言的新手。我在 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 位于 https://drive.google.com/folderview?id=0B4KCEwRVmr_yWjQwOEp3LWpYdk0&usp=sharing

【问题讨论】:

    标签: prolog tuprolog


    【解决方案1】:

    试试吧:

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

    在单引号之间写一个原子,例如+,没有任何改变,错误可能是由于它的操作符状态。假设是这种情况,在 () 之间编写它应该可以解决在 tuProlog 中加载代码时可能出现的运算符冲突(我假设不是 Turbo Prolog!)。

    【讨论】:

    • 是的,它是 tuProlog。我按照你说的做了,但没有成功。在 () 之间写 + 没有解决问题,同样的错误仍然在同一行。
    • 如果 tuProlog 解析器不符合官方和事实上的 Prolog 标准,您可能需要为第 5 个参数找到替代表示。顺便说一句,您使用的 tuProlog 版本是否支持多文件谓词?
    • 是的,它支持多文件谓词。我找到了原因并在昨天修复了它。 .pl 文件中有一个 utf-8 字符。 utf-8 字符的值为 U+FFFF ,当遇到 U+FFFF 时 tuProlog 停止解析,这是第 -1 行/之前语法错误的原因。但是swi-prolog可以解析U+FFFF,我还是不明白。
    • U+FFFF 不是有效的 Unicode 代码点。 SWI-Prolog 似乎忽略了它。我建议您通过在 SWI-Prolog 邮件列表中询问来确认。很高兴您发现了错误。
    • 很高兴得到您的帮助。我会尽快问他们
    猜你喜欢
    • 2011-04-06
    • 1970-01-01
    • 2021-08-20
    • 2013-07-15
    • 1970-01-01
    • 2016-12-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多