### IKExpression简易表达式引擎V2.1.0使用说明 #### 1. IK表达式介绍(IKExpressionIntroduction) **IKExpression** 是一款基于 Java 的开源、可扩展且超轻量级的公式化语言解析执行工具包。它不依赖于任何第三方 Java 库,能够轻松集成到各种 Java 应用程序中,包括 Java EE 应用(基于应用服务器)、Java 桌面应用以及 Java Web Start 方式的应用。 ##### 1.1 概要(OverView) IKExpression 采用了逆波兰式算法结合指针栈优化来实现高效的表达式解析。它主要由以下四个部分组成: - **表达式编译**:将用户输入的表达式转换成可执行的内部数据结构。 - **表达式执行**:根据编译后的数据结构来执行计算。 - **变量容器**:用于存储和管理表达式中的变量。 - **函数配置管理**:支持函数的定义、扩展与管理。 IKExpression 支持多种运算符,包括但不限于基础运算符 `+` `-` `*` `/` `%`、逻辑运算符 `!` `&&` `||`、三元运算符 `? :` 以及特有的集合运算符 `#`。此外,还支持括号优先级,并对 `&&`、`||` 和 `? :` 进行了短路优化处理。 ##### 1.2 升级变更(ChangesLog) - **Version 2.1 变更** - 新增 `org.wltea.expression.ExpressionEvaluator.preparedCompile(String expression, Collection<Variable> variables)` 方法和 `org.wltea.expression.PreparedExpression` 类,支持表达式预编译。用户可以像处理 SQL 语句那样,对需要循环执行的相同表达式进行预编译处理,而后设置不同的执行参数,得到不同的计算结果。 - 修订了对声明为 Object 类型的参数传入 Integer、Double、String 等类型的值时,会抛出类型不匹配异常的问题。新版本中,所有 Java 类型默认继承于 Object,无需显式声明。 - 修改了 `ExpressionEvaluator` 的两个 `compile` 方法,不再抛出 `IllegalExpressionException` 异常,而是改为抛出运行期异常,简化用户编码。 - **Version 2.0.5 变更** - 支持表达式的换行编辑,方便表达式的编写和阅读。 - 提供了更多的开放 API,例如表达式验证 API,可以在执行前检查语法正确性。 - 修订了 “?:” 三元操作符的 “:” 号两端对不同类型的数值不兼容的 BUG。 - **Version 2.0.2 变更** - 修订了自定义函数返回类型为 void 时,表达式校验会抛出异常的 BUG。 - **Version 2.0.1 变更** - 添加了对表达式的折行书写的支持,提高了长表达式的可读性。 - **Version 2.0 变更** - 增加了 “?:” 三元操作符。 - 增强了 “+” 操作符,支持对 null 型、Date 型、Boolean 型的连接操作。 - 增加了自定义函数扩展,支持配置方式扩展函数和 API 编码方式扩展函数。 - 增加了函数别名映射功能。 #### 2. 快速入门(QuickStart) 为了帮助初学者快速上手 IKExpression,下面提供了一个简单的示例: ```java import org.wltea.expression.IKExpression; import org.wltea.expression.Variable; public class QuickStart { public static void main(String[] args) { // 创建变量 Variable x = new Variable("x", 10); Variable y = new Variable("y", 20); // 定义表达式 String expression = "x + y"; // 解析并计算表达式 double result = IKExpression.eval(expression, x, y); System.out.println("Result: " + result); // 输出: Result: 30.0 } } ``` #### 3. 表达式公式规范(ExpressionFormulaSpecification) IKExpression 对表达式的语法有着明确的规定,以确保表达式的正确性和可读性。以下是一些基本规则: - **运算符优先级**:IKExpression 支持多种运算符,并定义了它们的优先级。例如,乘除运算的优先级高于加减运算。 - **括号使用**:通过括号可以改变运算符的优先级,使表达式的计算顺序更加明确。 - **变量命名**:变量名称可以包含字母、数字和下划线,但不能以数字开头。同时,IKExpression 支持使用中文作为变量名和函数名。 - **函数调用**:函数调用遵循标准的 Java 函数调用格式,即函数名后跟括号内的参数列表。 - **三元运算符**:使用 `? :` 进行条件判断。例如,`x > 0 ? x * 2 : x / 2` 表示如果 x 大于 0,则返回 x 的两倍,否则返回 x 的一半。 - **集合运算**:使用 `#` 运算符进行集合操作。具体用法请参考官方文档。 #### 4. 高级特性(Advance) IKExpression 除了基本的表达式解析功能外,还提供了一系列高级特性,以满足复杂应用场景的需求: - **表达式预编译**:通过预编译表达式,可以在多个地方重复使用相同的表达式而只需要改变变量值,提高性能。 - **自定义函数**:允许用户自定义函数,扩展 IKExpression 的功能。可以通过配置文件或编程方式实现自定义函数的扩展。 - **API 扩展**:提供了丰富的 API 接口,允许开发者根据自己的需求进行扩展和定制。 - **表达式验证**:支持在执行之前对表达式进行语法验证,确保表达式的正确性。 - **多语言支持**:IKExpression 支持中文变量名和函数名,便于非英语国家的用户使用。 通过上述介绍,我们可以看到 IKExpression 不仅功能强大而且易于使用,非常适合需要图形化配置的应用场合或模拟 Excel 电子表格公式的场景。无论是简单的数学运算还是复杂的逻辑判断,IKExpression 都能够胜任。
剩余22页未读,继续阅读
- 粉丝: 122
- 资源: 54
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助