预期Prolog语法错误运算符

时间:2015-11-21 21:47:09

标签: prolog

它表示预期会出现错误操作符。我知道这个语法错误在第5行,但我无法弄清楚。我用** thx强调了这一行。

 action(X : Y,0 : Y):-X>0.
action(X : Y,X : 0):-Y>0.
action(X : Y,4:Y):-X<4. 
 action(X : Y,X : 3):-Y<3.
 **action(X : Y,4 : Z):- X<4, Z is Y−(4−X), Z>=0.**

 Path(X):- 
   path(0 : 0,[0 : 0],X).

2 个答案:

答案 0 :(得分:2)

Prolog谓词名称必须以小写字母开头。正如@CapelliC指出的那样,Path(X) :0-...将成为一个问题。

但是第5行的语法错误是因为您可能从在线或电子书中复制/粘贴此代码。在您的表达式中,Y−(4−X)这些符号不是弊端,而是其他看起来像弊端的符号(可能是EM破折号)。尝试手动重新输入第5行,问题就会消失。

这是一个问题:

Y−(4−X)

这个是正确的:

Y-(4-X)

如果仔细观察,你可以看到短划线长度的细微差别。第二个示例是实际的破折号或减号(ASCII代码十六进制2d)。破折号的第一个示例是特殊字符(十六进制转储显示字符代码59 88 92)。这是从电子书或其他电子文档复制/粘贴代码的问题,因为有几个字符用于视觉方便,而不是语言所需的特定字符。

答案 1 :(得分:1)

错误是

之后的条款
Path(X):-
 ...

应该是

path(X):- 
 ...