代码例子

参考

1、解释器模式定义

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

说明:解释器模式设计到文法规则和抽象语法树。

2、解释器模式的结构

解释器模式包含四个角色:

1)抽象表达式(AbstractExpress):声明抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。

2)终结符表达式(TerminalExpress):是抽象表达式的子类,实现了与文法中的终结符相关联的解释操作,句子中的每一个终结符都是该类的一个实例。

对于非终结符表达式,其代码相对来说比较复杂,可以通过非终结符表达式组合成更加复杂的结构。

3)非终结符表达式(NonterminalExpress):是抽象表达式的子类,实现了文法中非终结符表达式的解释操作。在非终结符表达式中可以包含终结符表达式,也可以包含非终结符表达式,其解释操作一般用递归来实现。

4)环境类(Context):又称为上下文类,用于存储解释器之外的一些全局信息。在该类中一般包含一个Hashtable或List等类型的集合对象,存储一系列公共信息,例如变量名与值的映射关系(key/value)等。

3、解释器模式的优点

1)易于改变或扩展文法;

2)实现文法较为容易;

3)符合开闭原则。

4、解释器模式的缺点

1)对于复杂文法难以维护;

2)执行效率较低。

最新文章

  1. play-framework的安装与使用
  2. tar打包排除某个目录
  3. study
  4. win10 体验
  5. Python & MapReduce
  6. 【JavaScript】Object.observe()带来的数据绑定变革
  7. SqlServer之游标深入
  8. 【转载】/etc/passwd & /etc/shadow 详解
  9. Creating a settings table that can handle almost any type of value
  10. Student s = new Student();在内存中做了哪些事情?
  11. PCoA主坐标分析
  12. 29.Django session
  13. 使用nginx搭建高可用,高并发的wcf集群
  14. [转帖]优化IMPDP/EXPDP导入导出速度
  15. word2vec并行实现小记
  16. Android开发过程中的坑及解决方法收录(三)
  17. 监控glusterfs
  18. WPF中, 启用添加到RichTextBox中的控件
  19. (最长上升子序列 并记录过程)FatMouse's Speed -- hdu -- 1160
  20. Linux查看文件夹占用空间

热门文章

  1. [GDOI2018]滑稽子图
  2. vue.cli项目中src目录每个文件夹和文件的用法
  3. centos删除用户出错userdel: user xxx is currently used by process 23750
  4. 20170718 关于Mysql 安装于虚拟机Ubuntu中,内网中Windows系统无法访问
  5. Sql server 函数--取值年月
  6. Http服务基础原理
  7. IE无法安装Activex控件
  8. wx鼠标拖动事件
  9. 背景图宽高100%无法无法显示的问题【body设置relative,当前元素absolute】
  10. CentOS6.5 安装Kafka集群