簡體   English   中英

Java的SWI-Prolog接口中的CLPFD

[英]CLPFD in SWI-Prolog interface with Java

我正在嘗試使用JPL將查詢從Java傳遞到SWI-Prolog(CLPFD)。 在Java中運行程序時出現以下異常。

查詢是= Arithmetic_Expression#= X * Y + X + 1,[Y,X] ins 0..100500,Arithmetic_Expression在1..5 / 10/12中。 線程“主”中的異常jpl.PrologException:PrologException:錯誤(語法錯誤(operator_expected),字符串('Arithmetic_Expression#= X * Y + X + 1,[Y,X] ins 0..100500,Arithmetic_Expression in 1..5於/ 10/12。',21))在jpl.Query.getSubstWithNameVars(Query.java:390)在jpl.Query.get1(Query.java:336)在jpl.Util.textToTerm(Util.java:163)在jpl.Query。(Query.java:198)

如您所見,我的Java程序從1..5 / 10/12生成查詢作為范圍的聯合。但是SWI-Prolog將其作為1..5 / 10/12。 不知道為什么會這樣嗎? 我想這可能是我出錯的原因。 有人可以幫我解決這個錯誤嗎?

我要附加/,因為在我的Java程序中,要在Windows上生成查詢\\的情況下,它會以'\\'的形式給出,因此我的查詢會以1..5 / 10/12的形式生成。

為什么要推廣到SWI-Prolog?

錯誤的位置是第21個字符,因此

Arithmetic_Expression#=X*Y+X+1,[Y, X] ins 0..100500,Arithmetic_Expression in 1..5/10/12.
123456789012345678901^^

顯然,您尚未聲明use_module(library(clpfd))

但是,此后,下一個錯誤將是:

ERROR: Domain error: `clpfd_domain' expected, found `1..5/10/12'

不清楚/10/20 10/20是什么意思。無論如何,我建議您先學習Prolog和clpfd,然后再從Java使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM