您的位置:首页 > 其它

设计模式(15)-行为型模式-INTERPRETER模式

2014-06-01 16:24 253 查看

1.1  INTERPRETER模式

1.2.1      功能

                Interpreter模式描述语法解析器的设计模式。

1.2.2      结构图



•  A b s t r a c t E x p r e s s i o n (抽象表达式,如Re g u l a r E x p r e s s i o n )

— 声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。

•  T e r m i n a l E x p r e s s i o n (终结符表达式,如L i t e r a l E x p r e s s i o n )

— 实现与文法中的终结符相 关联的解释操作。

— 一个句子中的每个终结符需要该类的一个实例。

•N o n t e r m i n a l E x p r e s s i o n ( 非终结符表达式,如 AlternationExpression,RepetitionExpression,SequenceExpressions)

— 对文法中的每一条规则R ::= R1R2R3…Rn都需要一个N o n t e r m i n a l E x p r e s s i o n类。

— 为从R1到Rn的每个符号都维护一个A b s t r a c t E x p r e s s i o n类型的实例变量

— 为文法中的非终结符实现解释( I n t e r p r e t )操作。解释(I n t e r p r e t )一般要递归地调用表示R1到Rn的那些对象的解释操作。

•  C o n t e x t(上下文)

— 包含解释器之外的一些全局信息。

•  C l i e n t(客户)

— 构建(或被给定)  表示该文法定义的语言中一个特定的句子的抽象语法树。该抽象语

法树由No n t e r m i n a l E x p r e s s i o n和Te r m i n a l E x p r e s s i o n的实例装配而成。

— 调用解释操作。

协作:

•C l i e n t构建(或被给定)一个句子,  它是N o n t e r m i n a l E x p r e s si o n和Ter m i n a l E x p r e s s i o n的实例的一个抽象语法树 .  然后初始化上下文并调用解释操作。

• 每一非终结符表达式节点定义相应子表达式的解释操作。而各终结符表达式的解释操作构成了递归的基础。

•  每一节点的解释操作用上下文来存储和访问解释器的状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息