大话设计模式
字体: 16 + -

第197章

小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的实例装配而成-调用解释操作。”