我正在寻找一个简单条件表达式的求值器.表达式应包括变量(只读),字符串,数字和一些基本运算符.
例如这样的表达式:
${a} == "Peter" && ( ${b} == null || ${c} > 10 )
Run Code Online (Sandbox Code Playgroud)
到目前为止,我实现了一个相当"神奇"的解析器,它返回一个我可以评估的AST,但我无法相信我是第一个解决这个问题的人.
我可以使用哪些现有代码?
and*_*soj 14
这是他们的一个简单例子:
// The compiled expression is serializable and can be cached for re-use.
CompiledExpression compiled = MVEL.compileExpression("x * y");
Map vars = new HashMap();
vars.put("x", new Integer(5));
vars.put("y", new Integer(10));
// Executes the compiled expression
Integer result = (Integer) MVEL.executeExpression(compiled, vars);
assert result.intValue() == 50;
Run Code Online (Sandbox Code Playgroud)
另外(回答我自己的问题)MVEL似乎为字节码生成提供了一些支持.
其他选择,从上述答案和我自己的答案中剔除:
SPEL(Spring Expression Lang)怎么样; http://static.springsource.org/spring/docs/3.0.x/reference/expressions.html