2011-05-21 68 views
5

我有這種圖形結構表示Prolog中的數據流。在Prolog中出現「語法錯誤:操作員期望」

  • 我有從節點1到2月1日至3日的邊緣,等
  • 變量X在節點1中所定義,在節點4變量t等
  • 變量d是在節點使用4,節點7中的變量x等

功能definition_clear_path應該計算任何變量的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 ]) . 
+0

如果將definition_clear_path放在最後,錯誤會消失嗎? – 2011-05-21 16:04:24

+0

不,同樣的錯誤。 – 2011-05-21 16:23:51

回答

12

刪除edge與左括號之間的空格。

空格分隔術語,所以Prolog會認爲edge是一個運算符而不是複合項的函子。

相關問題