如何解析java中复杂的逻辑运算?

How to parse complex logical operations in java?

有什么方法可以解析包含逻辑 and/or 运算符的字符串,并在 java 中得到 true 或 false 的结果?例如

    (1 OR 0 AND 1 AND 0 OR(0 AND 0))

我找不到任何图书馆。其实我有一些想法,但它们太复杂了。也许有更简单的方法?

您可以使用已经提到的脚本引擎:

String expression = "(1 || 0 && 1 && 0 ||(0 && 0))";
Object result = new ScriptEngineManager().getEngineByName("JavaScript").eval(expression);
System.out.println(result);

或spring表达语言:

String data = "(true OR false AND true AND false OR(false AND false))";
ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression(data);
result = exp.getValue();
System.out.println(result);

请注意,在这两种情况下,都需要通过替换八个局部运算符或逻辑常量来修改原始表达式。