【发布时间】:2010-10-24 21:59:00
【问题描述】:
我正在寻找简单条件表达式的求值器。 表达式应包括变量(只读)、字符串、数字和一些基本运算符。
例如类似这样的表达方式:
${a} == "Peter" && ( ${b} == null || ${c} > 10 )
到目前为止,我实现了一个相当“神奇”的解析器,它返回一个我可以评估的 AST,但我不敢相信我是第一个解决这个问题的人。
我可以使用哪些现有代码?
【问题讨论】:
-
您希望评估哪种语言/语法?是你编出来的吗? Java 与此有什么关系?
-
我猜 OP 想要在 JVM 上运行的东西。
-
我们在一个项目中使用了 JEP (singularsys.com/jep),但我真的很想要一个小的、适应性强的等价物,出于性能原因,它实际上可以为函数生成字节码。出于这个原因,我们放弃了 JEP,最终手工编码了大量的 Java 类。也许拥有 ANTLR 和 BCEL 的进取精神可以做到这一点?
-
@Matt Ball:这个例子是我现在正在使用的一个虚构的语法。但是当我找到一个满足我要求的解析器时,我可以使用它接受的任何语法。我在语法方面的主要目标是使其尽可能简约,因为我们可能在一个集合中拥有许多(最多 200 个)这些微小的条件。因此,可读性和性能是一个问题。
标签: java