直譯器模式

2022-09-10 01:03:19 字數 1232 閱讀 2849

編輯說明

回到首頁

給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。

用編譯語言的方式來分析應用中的例項。

///抽象直譯器(表示式)

/// 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...

直譯器模式

給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。要解決的問題 如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構造乙個直譯器,該直譯器通過解釋這些句子來解決該問題。的好處 當有乙個語言需要解...