編輯說明
回到首頁
給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。
用編譯語言的方式來分析應用中的例項。
///抽象直譯器(表示式)
/// public
abstract
class
abstractexpression
//////非終端直譯器(表示式)
/// public
class
nonterminalexpression : abstractexpression
}
//////終端直譯器(表示式)
/// public
class
terminalexpression : abstractexpression
}
//////上下文(環境)
/// public
class
context
set
}private
string
output;
public
string
output
set }}
//////客戶端
可擴充套件性比較好,靈活。
增加了新的解釋表示式的方式。
易於實現簡單文法。
這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。這種模式被用在 sql 解析、符號處理引擎等。
可以將乙個需要解釋執行的語言中的句子表示為乙個抽象語法樹。
一些重複出現的問題可以用一種簡單的語言來進行表達。
乙個簡單語法需要解釋的場景。
可利用場景比較少。
對於複雜的文法比較難維護。
直譯器模式會引起類膨脹。
demo
直譯器模式
include include include include include using namespace std 直譯器模式 給定一種語言,定義它的文法的一種表示,並定義乙個直譯器 該直譯器使用該表示來解釋語言中的句子 類似於程式語言或者指令碼 假設情景是乙個指令碼控制系統 wasd上下左右方...
直譯器模式
1 模式定義 直譯器模式 interpreter pattern 定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 意思是使用規定格式和語法的 它是一種類行為型模式。2 模式結構 直譯器模式包含如下角色 abstractexpression 抽象表示式 terminalexpre...
直譯器模式
給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。要解決的問題 如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構造乙個直譯器,該直譯器通過解釋這些句子來解決該問題。的好處 當有乙個語言需要解...