【发布时间】:2016-04-04 19:53:57
【问题描述】:
我试图找到给定条件下所有可能的表达式组合。
例如,考虑以下条件。
((b > 5) | (c > 4)) & ((c < 6) | (b < 2)))
我需要像这样的最终组合
[(b > 5) , (c < 6)]
[(b > 5) , (b < 2)]
[(c > 4) , (c < 6)]
[(c > 4) , (b < 2)]
逻辑就像(a|b)&(c|d) -> a&c,a&d,b&c,b&d。
上面的comma (,) 可以认为是AND 运算符。
由于树是解析表达式的最佳解决方案,因此我设法使用 Java 的递归下降解析器构建了一个抽象语法树,该树如下所示。
我使用this 博客中描述的解析器的修改版本。这是我卡住的地方,因为我不知道如何提取最终表达式。
有什么我可以尝试的方向吗?
其他示例 考虑以下条件。
((b > 5) & ((c < 6) | (b < 2)))
结果:
[(b > 5) , (c < 6)]
[(b > 5) , (b < 2)]
考虑以下条件。
((b > 5) | ((c < 6) & (b < 2)))
结果:
[(b > 5)]
[(c < 6) , (b < 2)]
【问题讨论】:
标签: java tree expression boolean-expression recursive-descent