【发布时间】:2016-10-27 14:23:17
【问题描述】:
我查看了网上可用的解析器,但并不真正了解什么最适合我的自定义表达式。 (Antlr 对我的需求来说似乎有点重量级,但这只是第一印象)
我有以下表达式需要验证它的格式是否正确:
IF(var1>var2;15;IF(var3
表达式转换为: 如果条件为真,则结果为 15,否则为其他表达式。
我只需要验证它的格式是否正确(没有额外的括号,总是有第一个和第二个分支,正确使用了 IF 关键字,嵌套的 IF 等等。)
【问题讨论】:
-
那么问题是什么?
-
您可以尝试使用 Spring 的 SpEL 解析器(而不是 if 您应该使用三元运算符)docs.spring.io/spring/docs/current/spring-framework-reference/…。它就像 ExpressionParser parser = new SpelExpressionParser();表达式 exp = parser.parseExpression("1+2*(2+7*(1+5))"); System.out.println(exp.getValue()); 支持变量和其他特性。
标签: java parsing antlr javacc parser-generator