Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中布尔表达式的二进制表达式树库建议_Java_Expression Trees_Boolean Expression_Soot - Fatal编程技术网

Java中布尔表达式的二进制表达式树库建议

Java中布尔表达式的二进制表达式树库建议,java,expression-trees,boolean-expression,soot,Java,Expression Trees,Boolean Expression,Soot,我正在用Java做一些非常简单的程序分析/转换,我发现自己需要做一些布尔表达式的简单组合。例如,在我的分析过程中,我会有一个像(a=10)这样的表达式,我想通过OR操作符将这个表达式与(a>=-10)连接起来,得到一个像(a>=-10)|(a=10)这样的完整表达式。基本上,只需将两个布尔表达式树合并为一个表达式。我可能还希望自动将表达式树转换为树的等效合取范式版本 我的另一个要求是,当我们有可以轻松消除的表达式时,能够简化表达式(如果需要,可以通过自定义代码)。例如,(a=20)减少为TRUE

我正在用Java做一些非常简单的程序分析/转换,我发现自己需要做一些布尔表达式的简单组合。例如,在我的分析过程中,我会有一个像
(a<25)&(b>=10)
这样的表达式,我想通过OR操作符将这个表达式与
(a>=-10)
连接起来,得到一个像
(a>=-10)|(a<25)&(b>=10)
这样的完整表达式。基本上,只需将两个布尔表达式树合并为一个表达式。我可能还希望自动将表达式树转换为树的等效合取范式版本

我的另一个要求是,当我们有可以轻松消除的表达式时,能够简化表达式(如果需要,可以通过自定义代码)。例如,
(a<20)|(a>=20)
减少为
TRUE
,因为
(a<20)=(!(a>=20))
,所以我们可以在进行时删除一些术语

我知道编写布尔表达式树是一个经典的入门问题,我非常确定我以前实现过它(很久以前,对于数据结构类:),我知道如果需要,我可以再做一次。。。但考虑到这可能是以前处理过的事情,我想知道是否有任何关于图书馆的建议,我应该研究以解决上述问题。我讨厌重新发明轮子,因为可能已经有一个非常好的轮子了

总之,我正在寻找一个Java库,它具有:

  • 布尔表达式树
  • 表达式组合
  • 术语的简化(这是非常具体的,所以“拥有它很好”)
  • 转换成CNF
有什么建议吗


(注意:我不会评估这些树,因此每个节点都是未解析的谓词,如
variable!=20
foo>=50
,因此评估不是一个要求,但如果它是库的一部分,也不会有什么坏处。)

这不适合so问题。请看:哎呀。我刚刚看到了这么多评价很高的推荐问题,并从这些问题中找到了这么多帮助,我推断这一定没问题。我的错!你显然已经在这个问题上付出了一些努力,所以也许众神会对你微笑。。。