2013-07-26 65 views
0

我是序言新手。我有一個通常在swi-prolog上諮詢的.pl文件,但是當我在tu-prolog上諮詢它時,總會發生瘋狂的事情。這裏是我的代碼的一部分。tuprolog語法錯誤。在/行-1之前的語法錯誤

:- dynamic(assignopT/6). 
    :- multifile(assignopT/6). 
    assignopT(30246,30244,30210,30247,+,30248). 

當我諮詢它TU-序言,它表示語法錯誤在/線12219,這是上面第三行之前。它在swi-prolog上運行正常。然後我想可能是+有問題,所以我改變了它。

assignopT(30246,30244,30210,30247,'+',30248). 

這一次,它說在第-1行/之前的語法錯誤。我真的沒有得到這個,什麼-1甚至假設意思。該特等命名swi2tu.pl是https://drive.google.com/folderview?id=0B4KCEwRVmr_yWjQwOEp3LWpYdk0&usp=sharing

回答

1

嘗試,而不是:

assignopT(30246,30244,30210,30247,(+),30248). 

寫一個原子,如+,單引號之間沒有任何改變和錯誤可能是由於其經營者的地位。假設是這種情況,在()之間寫入它應該修正在tuProlog(不是Turbo Prolog,我假設!)中加載代碼時可能出現的操作符衝突。

+0

是的,這是tuProlog。我已經完成了你所說的,但沒有成功。在()之間寫入+不能解決問題,同樣的錯誤仍然在同一行。 – York

+0

如果tuProlog解析器不符合官方和事實上的Prolog標準,則可能需要爲第5個參數找到替代表示法。順便說一下,你使用的tuProlog版本是否支持多文件謂詞? –

+0

是的,它支持多文件謂詞。我找到了原因並在昨天修復了它。在.pl文件中有一個utf-8字符。 utf-8字符的值是U + FFFF,並且tuProlog在遇到U + FFFF時停止解析,這是語法錯誤在/ -1行之前的原因。但swi-prolog可以解析器U + FFFF,我仍然不明白。 – York