【问题标题】:Prolog syntax error operator expected预期 Prolog 语法错误运算符
【发布时间】:2015-11-21 21:47:09
【问题描述】:

它说应该有一个错误运算符。我知道这个语法错误在第 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).

【问题讨论】:

    标签: prolog


    【解决方案1】:

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

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

    这是一个问题:

    Y−(4−X)
    

    这个是正确的:

    Y-(4-X)
    

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

    【讨论】:

      【解决方案2】:

      错误是后面的子句

      Path(X):-
       ...
      

      应该是

      path(X):- 
       ...
      

      【讨论】:

        猜你喜欢
        • 2021-02-26
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多