解释器模式 Interpreter

Posted wood132

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解释器模式 Interpreter相关的知识,希望对你有一定的参考价值。

代码例子

参考

1、解释器模式定义

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

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

2、解释器模式的结构

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

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

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

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

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

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

 

3、解释器模式的优点

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

2)实现文法较为容易;

3)符合开闭原则。

4、解释器模式的缺点

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

2)执行效率较低。

 

 

 

 

 

 

 

以上是关于解释器模式 Interpreter的主要内容,如果未能解决你的问题,请参考以下文章

解释器模式(Interpreter)

解释器模式 Interpreter

解释器模式 Interpreter 行为型 设计模式(十九)

设计模式(15)--Interpreter(解释器模式)--行为型

解释器模式-Interpreter

Behavioral模式之Interpreter模式