书城计算机网络大话设计模式
8183300000197

第197章 6 解释器模式参与者

小A:“解释器模式都有哪些参与者?”

大B:“1、AbstractExpression(抽象表达式)――声明一个抽象的解释操作,这个接口为抽象语法树中所有的节点所共享。2、TerminalExpression(终结符表达式)――实现与文法中的终结符相关联的解释操作。一个句子中的每个终结符需要该类的一个实例。3、NonterminalExpression(非终结符表达式)――对文法中的每一条规则R:=R1R2……Rn都需要一个NonterminalExpression类。为从R1到Rn的每个符号都维护一个AbstractExpression类型的实例变量。为文法中的非终结符实现解释(Interpret)操作。解释(Interpret)一般要递归地调用表示R1到Rn的那些对象的解释操作。4、Context(上下文)――包含解释器之外的一些全局信息。5、Client(客户)――构建(或被给定)表示该文法定义的语言中一个特定的句子的抽象语法树。该抽象语法树由NonterminalExpression和TerminalExpression的实例装配而成。-调用解释操作。”