直譯器模式

2021-10-02 06:36:50 字數 574 閱讀 1464

個人部落格

直譯器模式是一種用得比較少的行為型模式,其提供了一種解釋語言的語法或表示式的方式,該模式定義了乙個表示式介面,通過該介面解釋乙個特定的上下文。

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

如果某個簡單的語言需要解釋執行而且可以將該語言中的語句表示為乙個抽象語法樹時,可以考慮使用直譯器模式。

在某些特定的領域出現不斷重複的問題時,可以將該領域的問題轉化為一種語法規則下的語句,然後構建直譯器來解釋該語句。

略…優點

靈活的擴充套件性。當我們想對方法規則進行擴充套件延伸時,只需要增加相應的非終結符直譯器,並在構建抽象語法樹時,使用到新增的直譯器物件進行具體的解釋即可。

缺點

因為對於每一條方法都可以對應至少乙個直譯器,其會生成大量的類,導致後期維護困難,同時,對於過於複雜的方法,構建抽象語法樹會顯得異常煩瑣,甚至有可能會出現需要構建多棵抽象語法樹的情況,因些,對於複雜的文件並不推薦使用直譯器模式。

直譯器模式

include include include include include using namespace std 直譯器模式 給定一種語言,定義它的文法的一種表示,並定義乙個直譯器 該直譯器使用該表示來解釋語言中的句子 類似於程式語言或者指令碼 假設情景是乙個指令碼控制系統 wasd上下左右方...

直譯器模式

1 模式定義 直譯器模式 interpreter pattern 定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 意思是使用規定格式和語法的 它是一種類行為型模式。2 模式結構 直譯器模式包含如下角色 abstractexpression 抽象表示式 terminalexpre...

直譯器模式

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