【问题标题】:Is there any open source Java Library or java source code to simplify boolean expression是否有任何开源 Java 库或 java 源代码来简化布尔表达式
【发布时间】:2012-06-30 22:00:36
【问题描述】:

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

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

在哪里,

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

非常感谢您在这方面的帮助

【问题讨论】:

标签: java boolean-expression


【解决方案1】:

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

对于 ANTLR,使用 First Order Logic Grammar 作为起点。

对于 JParsec,JParceC calculator tutorial 接近您的需要。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      希望这些信息对你有用。

      【讨论】:

      • 虽然 Xtend 不错,但我不认为这是对 OP 问题的回答
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 2016-07-13
        • 2016-02-20
        相关资源
        最近更新 更多