我需要计算一个 boolean 表达式。 目的是过滤一组标记的项目。 标签可以是任何名称(比如 Java 标识符)。
例如:
foo OR (bar AND !baz)
这对于标记的项目来说是正确的:
- foo 费用
- foo bar boo
- 酒吧
我事先不知道需要哪些名字。 我检查过 JEXL 但它有 JexlContext ,它基本上是一个需要在评估之前填充的 Map。
我需要一些库来调用回调函数来确定标识符是真还是假。或者任何其他允许在评估之前未知标识符的机制。
它必须像啤酒一样免费(用于 Maven 插件),所以 Jep 是不可能的。
我可以使用什么?
最佳答案
您可以提供不依赖于 Map
的 JexlContext
实现。您可以将其对 has
、get
的检查视为回调,而忽略对 set
的调用,而不是在求值之前填充它。
关于Java:用于表达式解析和评估的库,其标识符事先未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8479063/