JSEL简介JSEL是一个基于逆波兰式结构,采用JS运算规则的简单的表达式解释引擎。 同时他还是一个JSON解析引擎。 基本特征- 运算规则基于JavaScript。
- 基于逆波兰式计算模型,单栈运算,简单高效。
- 支持短路优化(与或、三元算符)。
- 支持JSON编码解码。
- 函数即变量,可扩内置变量(函数)集合。
- 引擎实现的简单,程序体积非常小(JAR文件只有22k,同类工具OGNL 168k)。
适用场合- 模板引擎的表达式实现。
- 适合于嵌入其他对文件大小要求苛刻环境,如需要下载的webstart小程序。
- 语法类似数学表达式,可用于最终用户定义简单运算规则。
基本用法import org.xidea.el.Expression;
import org.xidea.el.ExpressionImpl;
import java.util.HashMap;
public class Test{
public static void main(String[] args){
Expression el = new ExpressionImpl("var1 +2 * var2");
//Expression el = new ExpressionImpl("var1 +2 * var2",new CalculaterImpl());//你也可以定义你自己的运算规则
HashMap context = new HashMap();
context.put("var1",111);
context.put("var2",222);
Object result1 = el.evaluate(context);//555
context.put("var2",333);
Object result2 = el.evaluate(context);//777
System.out.println("result1:");
System.out.println(result1);
System.out.println("result2:");
System.out.println(result2);
}
}语法四则运算:
+,-,*,/
取模运算:
%
正负运算:
+,-
条件运算
==,!=,<,>,>=,<=
Boolean运算(&&和||有条件短路优化)
!,&&,||
三目运算(有条件短路优化)
xxx?yy:zz
括弧(运算优先级控制)
()
List构造器(生成ArrayList)
[1,3,var1,'234']
Map构造器(生成HashMap)
{"key1":1,"key2":[item1,item2]}
全局函数语法:
parseInt("234")
成员函数调用语法:
"abc".startsWith("bc")表达式计算性能- 对于常见表达式计算,暂时还没有做相关性能测试。但是鉴于其基于逆波兰式这种简单的运算模型,他的性能应该会比较理想。
下载
|