0

是否有任何开源 Java 库或 Java 源代码来简化布尔表达式,如

!((A.B+C).(!A+BC))

在哪里,

! - represents NOT
+ - represents OR
. - represents AND

在这方面您的帮助将不胜感激

4

4 回答 4

1

闻起来像 SQL?您可以简单地将 !,.,+ 转换为 NOT、AND、OR,过滤掉某些魔术关键字,然后将它们传递给传统的 JDBC 后端。"SELECT 1 WHERE" + 表达式

否则,听起来您需要一个完整的逻辑 AST+解析器(antlr),因为简单地构造一个表示表达式的 DOM 不会非常有用(因此,没有那么多工具通常采用表达式对象-图形并应用通用公理).. 有一些高度专业化的变体 - 查找规则引擎,如流口水。但我猜这并不是你想要的。

于 2012-06-29T11:19:19.230 回答
1

不,我不这么认为,但是使用ANTLR(声明式)或JParsec(编程式)为这种语言编写解析器应该很简单

对于 ANTLR,使用一阶逻辑语法作为起点。

对于 JParsec,JParceC 计算器教程可以满足您的需求。

于 2012-06-29T11:07:24.260 回答
0

我不知道java中有任何API。但是,您可以拆分表达式并为每个部分构建谓词。你可能有兴趣看看这个

于 2012-06-29T11:08:55.677 回答
0

首先,让我确认我是否正确地回答了您的问题-您是否正在考虑以简化方式对给定表达式进行编码的能力?

如果是,那么您可以尝试 Xtend:http ://eclipse.org/xtend/和 Xtext http://www.eclipse.org/Xtext/

Xtend 是一种静态类型的编程语言,可编译为可理解的 Java 源代码。Xtend 是使用 Xtext 开发的。

Xtext 是一个用于开发编程语言和领域特定语言的框架。

如果您正在查看仅给定表达式的算法,则上述信息不适用。

希望这些信息对你有用。

于 2012-06-29T11:15:03.787 回答