小A:“解釋器模式都有哪些參與者?”
大B:“1、AbstractExpression(抽象表達式)——聲明一個抽象的解釋操作,這個接口爲抽象語法樹中所有的節(jié)點所共享。2、TerminalExpression(終結(jié)符表達式)——實現(xiàn)與文法中的終結(jié)符相關(guān)聯(lián)的解釋操作。一個句子中的每個終結(jié)符需要該類的一個實例。3、NonterminalExpression(非終結(jié)符表達式)——對文法中的每一條規(guī)則R:=R1R2……Rn都需要一個NonterminalExpression類。爲從R1到Rn的每個符號都維護一個AbstractExpression類型的實例變量。爲文法中的非終結(jié)符實現(xiàn)解釋(Interpret)操作。解釋(Interpret)一般要遞歸地調(diào)用表示R1到Rn的那些對象的解釋操作。4、Context(上下文)——包含解釋器之外的一些全局信息。5、Client(客戶)——構(gòu)建(或被給定)表示該文法定義的語言中一個特定的句子的抽象語法樹。該抽象語法樹由NonterminalExpression和TerminalExpression的實例裝配而成-調(diào)用解釋操作。”