設計模式 直譯器模式

2021-08-02 14:42:29 字數 641 閱讀 7880

直譯器模式

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

如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。

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

直譯器模式很容易地改變和擴充套件文法,因為該模式使用類來表示文法規則,你可使用繼承來改變或擴充套件該方法。也比較容易實現文法,因為定義抽象語法樹中各個節點的類的實現大體類似,這些類都易於直接編寫。

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

#include

#include

using namespace std;

class context

string  getcontext()

};class abstractexpression

};class terminalexpression : public abstractexpression

return 0;

}

設計模式 直譯器模式

未來機器智慧型化已然成為趨勢,現在手機都能聽懂英語和普通話,那我大中華幾萬種方言的被智慧型化也許也是趨勢,我們的方言雖然和普通話相似,但是還是不一樣的。這可能需要乙個新的語法分析器來幫助我們。我們的直譯器模式就是描述了如何為簡單的語言定義乙個文法,如何在該語言中表示乙個句子,以及如何解釋這些句子。但...

設計模式 直譯器模式

直譯器模式 interpreter pattern 提供了評估語言的語法或表示式的方式,它屬於行為型模式。這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。這種模式被用在 sql 解析 符號處理引擎等。給定乙個語言,定義它的文法表示,並定義乙個直譯器,這個直譯器使用該標識來解釋語言中的句子。...

設計模式 直譯器模式

給定乙個語言,定義它的語法表示,並使用乙個直譯器來解釋語法或表示式 可以用於sql解析,或者特殊符號處理等 此處設計乙個and語法解析器,類圖如下 表示式介面 public inte ce expression package com.glt.designpattern.interpreter 基礎...