一。概述
給定一個(gè)語言刨肃,定義它的文法的一種表示古拴,并表示一個(gè)解析器,這個(gè)解析器使用該表示來解釋語言中的句子真友。
二黄痪。適用性
當(dāng)有一個(gè)語言需要解釋執(zhí)行,并且你可將語言中的句子表示為一個(gè)抽象語法樹時(shí)盔然,可使用解釋器模式桅打。而當(dāng)存在一下情況時(shí)該模式效果最好:
1.該文法簡(jiǎn)單對(duì)于復(fù)雜的文法是嗜,文法的類層次變得龐大而無法管理。
2.效率不是一個(gè)關(guān)鍵問題最高效的解析器通常不是通過直接解釋語法分析樹實(shí)現(xiàn)的挺尾,而是首先將它們轉(zhuǎn)換成另一種形式鹅搪。
三。參與者遭铺。
1.AbstractExpression聲明一個(gè)抽象的解釋操作丽柿,這個(gè)接口為抽象語法中所有的節(jié)點(diǎn)所共享。
2.TerminalExpression實(shí)現(xiàn)與文法中的終結(jié)符相關(guān)的解釋操作魂挂。一個(gè)句子中的每個(gè)終結(jié)符需要該類的一個(gè)實(shí)例甫题。
3.NonterminalExpression為文法中的非終結(jié)符實(shí)現(xiàn)解釋Interpret操作。
4.Context包含解析器之外的一些全局信息涂召。
5.Client構(gòu)建表示該文法定義的語言中一個(gè)特定的句子的抽象法樹坠非。該抽象語法書樹由NonterminalExpression和TerminalExpression的實(shí)力裝配而成,調(diào)用解析操作果正。
四炎码。類圖。
五秋泳。實(shí)例
AbstractExpression
Expression
Context
Test
result