码迷,mamicode.com
首页 > 其他好文 > 详细

解释器模式 Interpreter

时间:2017-03-29 23:58:07      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:类型   log   sch   环境   abs   rac   相对   git   包含   

代码例子

参考

1、解释器模式定义

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

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

2、解释器模式的结构

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

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

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

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

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

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

 

3、解释器模式的优点

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

2)实现文法较为容易;

3)符合开闭原则。

4、解释器模式的缺点

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

2)执行效率较低。

 

 

技术分享

 

 

技术分享

 

 

技术分享

 

解释器模式 Interpreter

标签:类型   log   sch   环境   abs   rac   相对   git   包含   

原文地址:http://www.cnblogs.com/rockywood/p/6642479.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!