应为Prolog语法错误运算符

应为Prolog语法错误运算符,prolog,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 :

它说应该有一个错误操作符。我知道这个语法错误在第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).
动作(X:Y,0:Y):-X>0。
动作(X:Y,X:0):-Y>0。

动作(X:Y,4:Y):-X错误是以下子句

Path(X):-
 ...
应该是

path(X):- 
 ...

Prolog谓词名称必须以小写字母开头。正如@capelical所指出的,
Path(X):0-…
将是一个问题

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

这是一个问题:

Y−(4−X)
这一条是正确的:

Y-(4-X)
实际上,若你们仔细观察,你们会发现短跑的长度有细微的差别。第二个示例是实际的破折号或减号(ASCII代码hex
2d
)。破折号的第一个示例是特殊字符(十六进制转储显示字符代码
59 88 92
)。这是电子书或其他电子文档中复制/粘贴代码的问题,因为有几个字符用于视觉方便,而不是语言所要求的特定字符