繁体   English   中英

Prolog中的“语法错误:操作员期望”

[英]“Syntax error: Operator expected” in Prolog

我有这个图表结构表示Prolog中的数据流。

  • 我从节点1到2,1到3等边缘。
  • 变量x在节点1中定义,变量t在节点4中定义,等等。
  • 变量d用于节点4,变量x用于节点7等。

函数definition_clear_path应该计算任何变量的清晰路径

当我运行这个时,我收到以下错误:

definition_clear_path/3: Undefined procedure: definition_clear_path1/4
         However, there are definitions for:
               definition_clear_path/3

当我从终端输入definition_clear_path1的规则时,我得到Syntax error: Operator expected 为什么?

edge(1, 2).
edge(1,3).
edge(3,7).
edge(3,4).
edge(4,6).
edge(4,5).
edge(7,x).
def(p,1).
def(e,1).
def(d,1).
def(x,1).
def(c,1).
def(d,4).
def(t,4).
def(c,5).
def(x, 6).
def(c,6).
use(d,3).
use(e,3).
use(d,4).
use(c,4).
use(x,4).
use(t,4).
use(c,5).
use(x,6).
use(c,6).
use(d,6).
use(x,7).
pos_path(X,Y, [X,Y]):- edge(X,Y).
pos_path(Start, End, [Start|T]) :- edge(Start,Mid), pos_path(Mid, End, T).


definition_clear_path( Node , J , Var ):- definition_clear_path1( Node , J , Var , [    Node ] ) .

definition_clear_path1(B , J, K , F):- edge (B , J ).

definition_clear_path1( Node , J , Var , L):- 
edge ( Node , N1 ) ,
not(def( Var , N1 )) ,
not(use( Var , N1 )) ,
definition_clear_path1( N1 , J , Var , [ Node | L ] ) .

删除edge和左括号之间的空间。

空格划定术语,因此Prolog会认为edge是运算符而不是复合项的函子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM