我正在使用 Java 进行一些非常简单的程序分析/转换Soot在 Java 中进行一些非常简单的程序分析/转换,并且我发现自己需要对布尔表达式进行一些简单的组合。例如,在我的分析过程中,我将有一个像这样的表达式(a < 25) && (b >= 10),我想(a >=-10)通过 OR 运算符将该表达式与 结合起来以获得像这样的完整表达式(a >=-10) || (a < 25) && (b >= 10)。基本上,只是将两个布尔表达式树组合成一个表达式。我可能还希望自动将表达式树转换为树的等效连接范式版本。
我的另一个要求是当我们有可以轻松消除的表达式时能够简化表达式(如果需要,可以通过自定义代码)。例如(a < 20) || (a >= 20)简化为TRUE、since (a < 20) = (!(a >= 20)),因此我们可以随时消除一些项。
我知道编写布尔表达式树是一个经典的介绍性问题,而且我很确定我以前已经实现过它(很久以前,对于数据结构类:))我知道我可以再做一次,如果需要......但考虑到这可能是以前处理过的事情,我想知道是否有关于我应该研究的库来解决上述问题的任何建议。我讨厌重新发明轮子,因为可能已经有一个非常好的轮子了。
总而言之,我正在寻找一个具有以下功能的 Java 库:
有什么建议吗?
(注意:我不会评估这些树,因此每个节点都将是未解析的谓词,例如variable != 20or foo >= 50,因此评估不是必需的,但如果它是库的一部分,也不会造成伤害。)
由于神秘的"SSL协议"错误,Windows上的Git停止连接到github.HALP!
我正在Windows上开发,使用私有GitHub仓库进行源代码控制.当我第一次启动我的系统,我能够访问远程回购没有问题- ,,pull 等所有的工作就好了.pushfetch
经过一段时间(*),这会停止,我收到以下错误:
致命:无法访问' https://github.com/our-team/private-repo.git/ ':与github.com:443相关的未知SSL协议错误
(*)时间似乎是变化的 - 我目睹了一到两个小时,直到一整天.通常在从系统休眠回来后,这似乎是一个问题,但我不知道它是由时间延迟还是由系统睡眠引起的.
通过cURL检查,我明白了
? curl -v "https://github.com/our-team/private-repo.git/"
* Trying 192.30.252.130...
* Connected to github.com (192.30.252.130) port 443 (#0)
* successfully set certificate verify locations:
* CAfile: C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt
CApath: none
* TLSv1.0, TLS handshake, Client hello (1):
* Unknown SSL protocol error in connection to github.com:443
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to github.com:443
Run Code Online (Sandbox Code Playgroud)
使用set GIT_CURL_VERBOSE=1with git …