Java 简单自定义表达式解析器

Java 简单自定义表达式解析器,java,parsing,antlr,javacc,parser-generator,Java,Parsing,Antlr,Javacc,Parser Generator,我在网上查看了一些可用的解析器,但并不真正了解什么最适合我的自定义表达式。 (根据我的需要,Antlr似乎有点重,但这只是第一印象) 我有以下表达式,需要验证其格式是否正确: IF(var1>var2;15;IF(var3首先,写一个语法。否则,什么是合法的或不合法的就不清楚了。(你写的东西不精确;例如,你可以在一个关系后面加一个数字吗?一个变量作为IF的else部分?) 其次,如果您的语法只接受表达式,那么可以使用手工编写的递归下降语法轻松地对其进行编码:。这样的解析器将完成您想要的所有健全性

我在网上查看了一些可用的解析器,但并不真正了解什么最适合我的自定义表达式。 (根据我的需要,Antlr似乎有点重,但这只是第一印象)

我有以下表达式,需要验证其格式是否正确:

IF(var1>var2;15;IF(var3首先,写一个语法。否则,什么是合法的或不合法的就不清楚了。(你写的东西不精确;例如,你可以在一个关系后面加一个数字吗?一个变量作为IF的else部分?)

其次,如果您的语法只接受表达式,那么可以使用手工编写的递归下降语法轻松地对其进行编码:。这样的解析器将完成您想要的所有健全性检查


如果您试图解析一种非常复杂的语言,那么JavaCC或ANTLR是更好的选择。

那么问题是什么?您可以尝试使用Spring的SpEL解析器(而不是使用三元运算符)。它与ExpressionParser=new SpelExpressionParser();Expression=parser.parseExpression(“1+2”)一样简单*(2+7*(1+5));System.out.println(exp.getValue());支持变量和其他功能。