繁体   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