I'm looking for a JAVA library to parse & evaluate expression. I searched and tried some libraries like Apache's JEXL and Jeval, but they are not exactly what I need.

My requirements:

  1. Support all value types (i.e. int,double,boolean,String, etc.)
  2. Support all known mathematical & logical operators (+,-,*,<,<=,etc.)
  3. Support variables (without any special notation - for example in Jeval variable a should be written like #{a} - not good enough for me)
  4. Support custom functions - with type enforcement and validation

Any recommendations?

Edit
Report