C#设计模式—解释器模式

来源:互联网 发布:知乎 唯一视觉怎么样 编辑:程序博客网 时间:2024/05/01 13:38

1、解释器模式定义

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

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

2、解释器模式的结构

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

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

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

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

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

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

 

3、解释器模式的优点

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

2)实现文法较为容易;

3)符合开闭原则。

4、解释器模式的缺点

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

2)执行效率较低。

0 0
原创粉丝点击