概述
The Interpreter pattern defines a representation for the grammar of a language and provides the ability to interpret sentences of that language.?
解釋器模式是指檐束,為多個(gè)句子定義一種語(yǔ)法埠居,并且這個(gè)解釋器還可以通過(guò)語(yǔ)法解析這些句子妻味。
解釋器(Interpreter)模式的定義:給分析對(duì)象定義一個(gè)語(yǔ)言,并定義該語(yǔ)言的文法表示着撩,再設(shè)計(jì)一個(gè)解析器來(lái)解釋語(yǔ)言中的句子。也就是說(shuō)妆偏,用編譯語(yǔ)言的方式來(lái)分析應(yīng)用中的實(shí)例刨肃。這種模式實(shí)現(xiàn)了文法表達(dá)式處理的接口古拴,該接口解釋一個(gè)特定的上下文。
解釋器模式包含以下主要角色
抽象表達(dá)式(Abstract Expression)角色:定義解釋器的接口真友,約定解釋器的解釋操作黄痪,主要包含解釋方法 interpret()。
終結(jié)符表達(dá)式(Terminal??? Expression)角色:是抽象表達(dá)式的子類盔然,用來(lái)實(shí)現(xiàn)文法中與終結(jié)符相關(guān)的操作桅打,文法中的每一個(gè)終結(jié)符都有一個(gè)具體終結(jié)表達(dá)式與之相對(duì)應(yīng)。
非終結(jié)符表達(dá)式(Nonterminal Expression)角色:也是抽象表達(dá)式的子類轻纪,用來(lái)實(shí)現(xiàn)文法中與非終結(jié)符相關(guān)的操作油额,文法中的每條規(guī)則都對(duì)應(yīng)于一個(gè)非終結(jié)符表達(dá)式。
環(huán)境(Context)角色:通常包含各個(gè)解釋器需要的數(shù)據(jù)或是公共的功能刻帚,一般用來(lái)傳遞被所有解釋器共享的數(shù)據(jù)潦嘶,后面的解釋器可以從這里獲取這些值。
客戶端(Client):主要任務(wù)是將需要分析的句子或表達(dá)式轉(zhuǎn)換成使用解釋器對(duì)象描述的抽象語(yǔ)法樹(shù)崇众,然后調(diào)用解釋器的解釋方法掂僵,當(dāng)然也可以通過(guò)環(huán)境角色間接訪問(wèn)解釋器的解釋方法。
本文類圖
實(shí)際上就是Context利用終結(jié)表達(dá)式(TerminalExpression)和非終結(jié)表達(dá)式(AndExperssion)組成的語(yǔ)義來(lái)解析句子顷歌。