This revision made February 25, 2011 23:09, by regwhitton
« earlier revision revert to this « later revision

# Eval - A Simple Expression Evaluator for Java

Or use eval via the java.net maven repository (see https://maven2-repository.dev.java.net/)

Details:

• groupId: net.java.dev.eval
• artifactId: eval
• version: 0.5

Eval is intended for use in simple domain specific languages, and was originally written for test configuration.

``` Expression exp = new Expression("(x + y)/2");

Map<String, BigDecimal> variables = new HashMap<String, BigDecimal>();
variables.put("x", new BigDecimal("4.32"));
variables.put("y", new BigDecimal("342.1"));

BigDecimal result = exp.eval(variables);

System.out.println(result);
```

The following operators are supported:

• The basic arithmetic operations as provided by the BigDecimal class:
• - Subtraction
• * multiplication
• / division (rounds to 34 digits)
• % the remainder when dividing the preceding number by the following number (this is not module - the result can be negative, rounds to 34 digits)
• abs absolute of the following number (negative numbers have their sign reversed)
• pow raise the preceding number to the power of the following number (this can only raise to power of positive integers or zero)
• int round the following number to an integer
• Ternary (or conditional) expressions.
• condition ? value-if-condition-is-true : value-if-condition-is-true. For example: "x > y ? x : y" yields the larger of the two variables x and y
• The following comparison operations:
• < less than
• <= less than or equals
• == equals
• > greater than
• <= greater than or equals
• != or <> not equals
• The following boolean operations:
• && and
• || or

Comparison and boolean operation yield 1 for true, or 0 for false if used directly.

Expressions are evaluated using the precedence rules found in Java, and parentheses can be used to control the evaluation order.

Example expressions:

``` 2*2
2+2
100/2
x/100 * 17.5
2 pow 32 - 1
2 pow (32 - 1)
2 pow int 21.5
abs -1.23E-12
x > y ? x : y
x > y && x != 4 ? x : y
y > 4*x ? 4*y : z/3
```
Difference compared to previous revision
= Eval W- A Sikmple Expresson Evaluator for Java i = T= Download the eval distribution from here: [https://svn.java.net/svn/eval~svn/trunk/www/eval-dist-0.5.zip eval-dist-0.5.zip] Or use eval via the java.net maven repository (see https://maven2-repository.his is the defdev.java.net/) Details: * groupId: net.java.dev.eval * artifactId:ault h eval * version: 0.5 Eval is intended for use in simple domain specific languages, and was originally written ome page for yfor test configuration. Expressiour projon exp = new Expression("(x + y)/2"); Mapcimal> variables = new HashMapect'tring, BigDecimal>(); variables.put("x", new Bs wikigDecmal("4.32")); variables.put("y", new BigDecimal("342.1")); BigDecimal result = exp.eval(variables); System.out.println(result); The following operators are supported: * The basic arithmetic operations as provided by the BigDecimal class: ** '''+''' Addition ** '''-''' Subtraction ** '''*''' multiplication ** '''/''' division (rounds to 34 digits) ** '''%''' the remainder when di. This wikivding the preceding number by the following number (this is not module - the resulti uses M can be negative, rounds to 34 digits) ** '''abs''' absolute of the folloediawikwing number (negative numbers have their sign reversed) ** '''pow''' raise the preceding number to the power of the following number (this can only raise to power of positive integers or zero) ** '''int''' round the following number to an integer * Ternary (or conditional) expressions. ** ''condition'' '''?''' ''value-if-condition-is-true'' ''':''' ''value-if-condition-is-true''. For example: "x > y ? x : y" yields the larger of the two variables x and y * The following comparison operations: ** '''<''' less than ** '''<=''' less than or equals ** '''==''' equals ** '''>''' greater than ** '''<=''' greater than or equals ** '''!=''' or '''<>''' not equals * The following boolean operations: ** '''&&''' and ** '''||''' or Comparison and boolean operation yield 1 for true, or 0 for false if used directly. Expressions are evaluated using the precedence rules found in Java, and parentheses can be used to control the evaluation order. Example expressions: 2*2 2+2 100/2 x/100 * 17.5 2 pow 32 - 1 2 pow (32 - 1) 2 pow int 21.5 abs -1.23E-12 x > y ? x : y x > y && x != 4 ? x : y y > 4*x ? 4*y : z/3