JEXL 2.1.1-表达字符串中的大十进制字符字符串导致解析误差



我试图在表达式字符串中使用bigdecimal字符串
我正在使用jexl 2.1.1
我正在使用http://commons.apache.org/jexl/reference/reference/syntax.html#literals

中提到的文字后缀'h'
JexlEngine expressionFactory = new JexlEngine();
JexlContext context = new MapContext();
context.set ( "a", new BigDecimal( "0.0002" ));
Expression expression = expressionFactory.createExpression(" a > 42.0h "  );
boolean result=(Boolean)expression.evaluate( context );

我要低于异常

org.apache.commons.jexl2.JexlException$Parsing: h@1:24 parsing error near '... , missing  ...'
at             org.apache.commons.jexl2.parser.JexlParser.jjtreeCloseNodeScope(JexlParser.java:126)
at org.apache.commons.jexl2.parser.Parser.ExpressionStatement(Parser.java:274)
at org.apache.commons.jexl2.parser.Parser.Statement(Parser.java:140)
at org.apache.commons.jexl2.parser.Parser.JexlScript(Parser.java:72)
at org.apache.commons.jexl2.parser.Parser.parse(Parser.java:24)
at org.apache.commons.jexl2.JexlEngine.parse(JexlEngine.java:1248)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:435)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:419)

它看起来像文档错误。正确的大十进音后缀为" b"(而不是'h')
正确的大整数后缀为" h"(而不是" b")
可以通过查看astnumberliteral.java

可以清楚地验证这一点。

我提出了这个问题https://issues.apache.org/jira/browse/jexl-141

最新更新