設計模式 二十 直譯器模式 C

2021-10-02 12:10:59 字數 932 閱讀 8095

直譯器模式需要解決的是,如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。

#include #include #include using namespace std;

//包含直譯器之外的一些全域性資訊

class context

~context() {}

};class abstractexpression

virtual void interpret(const context& c) {}

protected:

abstractexpression() {}

};//終結符表示式

class terminalexpression :public abstractexpression

~terminalexpression() {}

void interpret(const context& c)

private:

string _statement;

};//非終結符表示式

class nonterminalexpression :public abstractexpression

~nonterminalexpression() {}

void interpret(const context& c)

private:

string _statement;

};//測試**

int main(int argc, char* ar**)

cin.get();

return 0;

}

設計模式(C 實現)(二十四) 直譯器模式

編寫示例程式,解析json格式資料。像我們程式設計師日常使用的json解析 正規表示式 更甚者編譯器編譯 這些其實都是一種制定了規則,將一些符號進行翻譯,解釋成特定的功能,其實這些都用了直譯器模式的思想。json資料示例 interpreter.h 在該檔案中,實現了解析基類iinterpreter...

c 設計模式 直譯器模式

直譯器模式 interpreter 定義了乙個類體系,用於實現乙個小型語言的直譯器。它與組合模式很相似,而且常常利用組合模式來實現語法樹的構建。good 通常當乙個語言需要解釋執行,並且你可以將該語言中的句子表示成為乙個抽象的語法樹時,可以使用直譯器模式。res c 實現 include inclu...

設計模式 直譯器模式(C 實現)

直譯器模式 interpreter pattern 提供了評估語言的語法或表示式的方式,屬於行為型模式。這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。常被用在 sql 解析 符號處理引擎等。1 當有乙個語言需要解釋執行 並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。而...