設計模式21 直譯器模式

2021-09-18 06:38:55 字數 665 閱讀 9181

直譯器模式

是一種按照規定語法進行解析的方案,在現在專案中使用較少。

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

優點:最顯著的優點是擴充套件性。

缺點:1、直譯器模式會引起類膨脹;2、直譯器模式採用遞迴呼叫方法;3、效率問題。

使用場景:

1、重**生的問題可以使用直譯器模式;

2、乙個簡單語法需要解釋的場景。

目前在開發中運用的非常少,因為會引起效率、效能、以及維護等問題。

//抽象直譯器:具體的解釋任務由各實現類完成。

public abstract class expression

//非終結符表示式:文法中的每條規則對應於乙個非終結表示式。

public class nonterminalexpression extends expression

@override

public object interpreter(context ctx)

}//但有多個例項,對應不同的終結符

public class terminalexpression extends expression

}//環境角色

public class context

21 直譯器模式

一 直譯器模式 直譯器模式定義如下 給定一種語言,定義它的文法表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。典型的直譯器模式中會有終結符和非終結符之說,語法也根據兩種終結符,決定語句最終含義。模擬吉他示例 要開發乙個自動識別譜子的結他模擬器,達到錄入譜即可按照譜發聲的效果。除了發聲裝...

C語言和設計模式(直譯器模式)21

直譯器模式雖然聽上去有些費解,但是如果用示例說明一下就不難理解了。我們知道在c語言中,關於變數的定義是這樣的 乙個不以數字開始的由字母 數字和下劃線構成的字串。這種形式的表示式可以用狀態自動機解決,當然也可以用直譯器的方式解決。cpp view plain copy print typedef st...

設計模式 直譯器模式

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