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

Reply via email to