Sorry, I misread your original problem; JEXL does follow Java's operator precedence and there is no way to alter this behaviour (besides modifying the grammar in Parser.jjt file).
On 2020/09/23 14:28:33, BENGUIGUI Michael <michael.bengui...@irt-saintexupery.com> wrote: > Dear all, > > I am trying to evaluate the following expression via jexl : x^y > What I've tried, is to extend JexlArithmetic: > > // Extend Arithmetic > public class ExtendedJexlArithmetic extends JexlArithmetic > { > public ExtendedJexlArithmetic(boolean strict){ > super(strict); > } > > public xor(Object l, Object r){ > return Math.pow(l, r); > } > } > > def engine = new > JexlBuilder().cache(512).strict(true).silent(false).namespaces(ns).arithmetic(new > ExtendedJexlArithmetic(true)).create(); > engine.createExpression(model_formula).evaluate(contextMap); > > > However, it does not consider operator priority. As a result, I am still > getting wrong results: > > 2+4^3 -> 216 (instead of 66). > > How can I properly fix this ? > > Thhhx! > --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org