Atitit. 解释器模式框架选型 and应用场景attilax总结 oao
来源:互联网 发布:网络直播行业报告 编辑:程序博客网 时间:2024/05/16 09:59
Atitit. 解释器模式框架选型 and应用场景attilax总结 oao
1. 解释器模式结构描述 1
2. 如何实现(简单的解释器模式,仅仅通过词法分析即可实现,而无需token流进行处理。 2
3. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类 2
3.1. 操作符(运算符 )::: 2
3.2. 4.界符:“;”分号,“{}”大括号,单引号,双引号3
4. TerminalExpression和NonterminalExpression是两个实现。3
5. 应用场景 3
5.1. 汉字转化为数字 3
5.2. Sql,hql,Criteria 转换hibernate 3
5.3. 表达式解析 4
5.4. 翻译词典 4
6. 解释器框架选型 4
1. 解释器模式结构描述
Context存储的全局上下文环境,AbstractExpression是所有表达式必须继承的接口,TerminalExpression和NonterminalExpression是两个实现。
除了上述用于表示表达式的类以外,通常在解释器模式中还提供了一个环境类Context,用于存储一些全局信息,通常在Context中包含了一个HashMap或ArrayList等类型的集合对象(也可以直接由HashMap等集合类充当环境类),存储一系列公共信息,如变量名与值的映射关系(key/value)等,用于在进行具体的解释操作时从中获取相关信息。其典型代码片段如下:
class Context {
private HashMap map = new HashMap();
public void assign(String key, String value) {
//往环境类中设值
}
public String lookup(String key) {
//获取存储在环境类中的值
}
}
当系统无须提供全局公共信息时可以省略环境类,可根据实际情况决定是否需要环境类。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 如何实现(简单的解释器模式,仅仅通过词法分析即可实现,而无需token流进行处理。
事实上,有些简单的解释器模式,仅仅通过词法分析即可实现,功能可以写在状态改变函数中,而无需对产生的token流进行处理。
3. 单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类
3.1. 操作符(运算符 ):::
() [] -> .
? :
条件
由右向左
() [] -> .
括号(函数等),数组,两种结构成员访问
由左向右
,
逗号(顺序)
+ -
加,减
由左向右
括号,纺括号,等号
参考
编译器DIY——词法分析 - GodLike - 博客频道 - CSDN.NET.htm
操作符要使用一个状态来描述的...
3.2. 4.界符:“;”分号,“{}”大括号,单引号,双引号
界符在处理的时候儿,林吧过滤...
4. TerminalExpression和NonterminalExpression是两个实现。
通常来说,操作符(运算符 )要使用NonterminalExpression来实现,建立一个class 来实现,
一个op一个class
5. 应用场景
5.1. 汉字转化为数字
的项目中,随着需要解析的汉字数据越来越大,需要解析方法能够随之处理更大级别的数据(万,亿…),通过扩展Express类,产生能够解析新增的级别的处理方法
5.2. Sql,hql,Criteria 转换hibernate
Criteria 2sql 可以使用hb的api
5.3. 表达式解析
5.4. 翻译词典
6. 解释器框架选型
6.0.1.1. 最佳实践
解释器模式在实际的系统开发中使用的非常少,因为它会引起效率、性能以及维护等问题,一般在大中型的框架型项目能够找到它的身影,比如一些数据分析工具、 报表设计工具、科学计算工具等等,若你确实遇到“一种特定类型的问题发生的频率足够高”的情况,准备使用解释器模式时,可以考虑一下 Expression4J、MESP(Math Expression String Parser)、Jep等开源的解析工具包(这三个开源产品都可以百度、Google中搜索到,请读者自行查询),功能都异常强大,而且非常容易使用,效 率也还不错,实现大多数的数学运算完全没有问题,自己没有必要从头开始编写解释器,有人已经建立了一条康庄大道,何必再走自己的泥泞小路呢?
Expression4J 百度28个
MESP 解释器 20个
参考
自定义语言的实现——解释器模式(三) - 刘伟技术博客 - 博客频道 - CSDN.NET.htm
- Atitit. 解释器模式框架选型 and应用场景attilax总结 oao
- Atitit. 构造ast 语法树的总结attilax oao
- Atitit xml框架类库选型 attilax总结
- atitit.自己动手开发编译器and解释器(1) ------词法分析--attilax总结
- atitit.自己动手开发编译器and解释器(2) ------语法分析,语义分析,代码生成--attilax总结
- atitit.orm的缺点与orm框架市场占有率,选型attilax总结
- atitit.html编辑器的设计要点与框架选型 attilax总结
- atitit.loading的设计与实现控件选型attilax 总结
- atitit.loading的设计与实现控件选型attilax 总结
- Atitit 开发2d游戏的技术选型attilax总结
- atitit 项目硬件平台选型attilax总结4blg.docx
- Atitit 工具选型的因素与方法 attilax总结
- atitit.项目设计模式---ioc attilax总结
- Atitit. Attilax企业框架 AEF的发展里程总结
- atitit。ocr框架类库大全 attilax总结
- Atitit 知识点 文章 框架 结构 attilax总结.docx
- Atitit.异步的实现模式attilax大总结
- atitit.RESTful服务的概览and框架选型
- 感悟(1)——论如何在三年内做一个成功的自己
- jbpm4.4环境搭建和插件引入
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛) 拆地毯
- 大型网站网络结构过渡与软件架构的黄金搭档
- Android:BadgeView使用介绍
- Atitit. 解释器模式框架选型 and应用场景attilax总结 oao
- python 书籍
- 刷题前动员
- Spring管理事物应用到实际的项目中--编程式事物
- C语言从stdin读取一行字符串的几种方法
- 文档 ID 457926.1
- ARM汇编之合法立即数的快速判断方法
- Atitit.注解and属性解析(2)---------语法分析 生成AST attilax总结 java .net
- HDU 2005 第几天?