設計模式之直譯器模式

2021-08-05 19:39:30 字數 1153 閱讀 1278

直譯器模式

1.

直譯器模式:

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

如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。比如:在字串中搜尋匹配字元或判斷乙個字串是否符合規定格式。

2.

直譯器模式:

abatractexpress抽象表示式,宣告乙個抽象的解釋操作,這個介面為所有抽象語法樹中所有的節點所共享。

terminalexpression終結符表示式,實現與文法中的終結符相關聯的解釋操作。實現抽象表示式中所要求的介面,主要是乙個interpret方法。

nonterminalexpression非終結符表示式,為文法中非終結符實現解釋操作。

context,包含直譯器之外的一些全域性資訊。

#include #include #include using namespace std;

class context;

class abstractexpression

;class terminalexpression:public abstractexpression

return 0;

}

用直譯器模式,就如同開發了乙個程式語言或指令碼給別人或自己用。

通常當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。

直譯器模式的好處:可以很容易的改變和擴充套件文法,因為該模式使用類來表示文法規則,你可使用繼承來改變或擴充套件該文法。

直譯器模式的不足:直譯器模式為文法中的每一條規則至少定義了乙個類,因此包含許多規則的文法可能難以管理和維護。建議文法非常複雜時,使用其他技術如語法分析程式或編譯器生成器來處理。

設計模式之直譯器模式

直譯器模式是一種類行為型模式,它主要是用來解釋特定語言的特定文法表示,雖然這個在實際生產中不常用到,但是我們學習一下還是有幫助的。定義 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。使用場景 當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙...

設計模式之直譯器模式

解析器模式是一種行為型設計模式。其思想是 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。解析器模式涉及4個角色 結構圖 於網路 下面提供乙個簡單例子。乙個簡易的控制台計算器,要求使用者輸入乙個表示式,如a b c,然後要求使用者輸入每個變數的具體值,如...

設計模式之直譯器模式

interpreter模式也叫直譯器模式,是行為模式之一,它是一種特殊的設計模式,它建立乙個直譯器,對於特定的計算機程式語言,用來解釋預先定義的文法。簡單地說,interpreter模式是一種簡單的語法直譯器構架。換一種解釋就是定義乙個語法,定義乙個直譯器,該直譯器處理該語法句子將某些複雜問題,表達...