尝试将java布尔表达式转换为Z3能够理解的格式时,我遇到了一些问题。由于项目的某些要求,我无法使用任何其他工具来评估表达式。只能在表达式中使用标识符,而不能使用函数或更复杂的类型。
我考虑的可能性是:
使用parboiled或类似工具构建解析器。这样做的缺点是我只想在将操作符转换为SMT等效操作符后移动操作符并可能添加括号,因此这个解决方案和涉及AST处理的工作似乎过度工作了。而且,我发现定义一个可以使所有嵌套级别适合的语法有点复杂。
使用词法分析器或其他类型的工具获取令牌,然后使用类似于Shunting-yard algorithm的算法对其进行重新排序。在这种情况下,可能需要输入所有括号以避免一些问题。
使用可以解析表达式的库并对其进行编辑。到目前为止,我还没有找到任何可以让你评估表达式的工具。
使用可以在符号之间直接转换的内容。我一直在寻找,但我找不到。不过,这将是我的一天。
我已经查找了类似的问题,但我没有找到任何东西。我会很感激您的想法。提前谢谢!
答案 0 :(得分:1)
答案 1 :(得分:1)