|
#Lite 1.1重构计划. Lite1.1重构计划- 逆波兰式=> 运算树
一种尝试吧,原先的逆波兰式解析不但有延迟计算的麻烦,而且做代码翻译的时候还不实用
* EL =>[OP_TYPE,arg1<EL>,arg2<EL>|null,param?]
* =>[VALUE_TYPE,param?]
*
* OP_TYPE =>LITE_OP_TOKENS(....)
* VALUE_TYPE =>LITE_VALUE_TOKEN(VALUE_CONSTANTS,VALUE_VAR,VALUE_NEW_LIST,VALUE_NEW_MAP) 新标准下 VALUE_LAZY 值类型已不再需要。 - 增加二级运算符优先级定义
原先的算符优先级因为只有一级,而且还是相邻的不能自行扩充级别,新定义的标准会预留更多的扩充空间。
* 运算符编号说明:
* 0<<12 | 0<<8 | 0<<6 | 0<<2 |0
* 1111 1111 11 1111 11
* 二级优先级 二级组内序号 参数标志 优先级 组内序号
*
* 参数标志 说明:
* 00 一位操作符
* 01 两位操作符
* 10 保留标志(三位操作符?)
* 11 保留标志(零位/四位操作符?) 新增两种invoke 运算符实现 原先的方法调用都必须构造一个list 作为参数,整个函数调用在java实现中成本较高。
- OP_INVOKE_STATIC_PARAM
- OP_INVOKE_ONE_PARAM
|