【发布时间】:2011-01-30 22:14:11
【问题描述】:
如何在 Java 程序中计算运行时生成的复杂布尔表达式?
例子:
(x 和 y 或 z) 和 s
带有 x、y、z 布尔变量 ...
谢谢
【问题讨论】:
-
您的问题不清楚。
if ((x && y || z) && s)怎么了? -
你能给出一个代码示例来说明你是如何表示你的表达式的吗?
-
表达式是从 xml 文件加载的,但是布尔变量根据程序的当前状态取不同的值。所以我不能使用上面建议的 if 因为它并不总是相同的表达式...
-
好吧,那么您将不得不构建一个解析器(没什么大不了的,但支持嵌套 - 所以甚至不要使用正则表达式!),构建一个 AST 并使用映射变量名对其进行评估 = > 布尔值。
-
@delnan 也许更容易使用 PEP ling.ohio-state.edu/~scott/#projects-pep 来解析它,然后按照你的建议做。
标签: java runtime generator boolean-expression expression-evaluation