Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Prolog “;语法错误:应为运算符”;在序言中_Prolog - Fatal编程技术网

Prolog “;语法错误:应为运算符”;在序言中

Prolog “;语法错误:应为运算符”;在序言中,prolog,Prolog,我有这个图形结构,它在Prolog中表示数据流 我有一条从节点1到2,1到3的边,等等 变量x在节点1中定义,变量t在节点4中定义,等等 变量d用于节点4,变量x用于节点7,等等 函数definition\u clear\u path应计算任何变量的值 当我运行此命令时,会出现以下错误: definition_clear_path/3: Undefined procedure: definition_clear_path1/4 However, there are defi

我有这个图形结构,它在Prolog中表示数据流

  • 我有一条从节点1到2,1到3的边,等等
  • 变量x在节点1中定义,变量t在节点4中定义,等等
  • 变量d用于节点4,变量x用于节点7,等等
函数
definition\u clear\u path
应计算任何变量的值

当我运行此命令时,会出现以下错误:

definition_clear_path/3: Undefined procedure: definition_clear_path1/4
         However, there are definitions for:
               definition_clear_path/3
当我从终端输入
定义\u clear\u path1
规则时,我得到
语法错误:应为运算符。为什么?

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 ] ) .

删除
和左括号之间的空格


空格分隔术语,因此Prolog会认为,
edge
是一个运算符,而不是复合术语的函子。

如果将definition\u clear\u path放在末尾,错误会消失吗?