本表达式解析器使用java语言实现。
支持算术运算、逻辑运算、比较运算,
支持if分支结构的解析,
支持在表达式中使用自定义函数,
支持多种数据类型:数字、日期、字符、字符串、布尔。
(源码和文档见我的资源:Expression_Analyzer_Reference 不需积分)
首先简单介绍表达式解析器的词法规则
- 数据类型
支持五种数据类型:数字、日期、布尔、字符、字符串
- 数字
数字类型在解析过程中将被转化成BigDecimal类型,支持以下格式:
整数123;
小数123.333;
指数1.2E2 或 1.2e2(即120)
- 日期
支持两种形式的日期数据,一种是精确到日的,写法为[yyyy-MM-dd],如[2012-03-31];另一种精确到秒,写法为[yyyy-MM-dd HH:mm:ss],如[2012-03-31 09:06:10]。
在表达式解析过程中日期类型将转化为java.util.Calendar。
- Boolean
布尔常量的写法可以是true、TRUE、false、FALSE。
字符
字符分普通字符和转义字符。
普通字符:’a’、’_’
转义字符:’\n’、’\r’
- 字符串
字符串用双引号表示,可包含转义字符,如”Hello World”、”Hello \r\n World”。
变量
变量名以字母或下划线开头,只能包含字母、数字、下划线,如:abc、_abc、_a1。