How to parse complex logical operations in java?

Mrkrky :

Is there any way to parse strings which include logical and/or operators and get result as true or false in java? For example

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

I couldn't find any library. Actually I have some ideas but they are so complex. Maybe some easier way?

Daniil :

You could use already mentioned script engine:

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

or spring expression language:

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);

Please note, that in both cases there was needed to modify original expression by replacing eighter lofical operators or logical constants.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=4445&siteId=1