PHP設計模式(二十二)—直譯器模式(Interpreter Patt

TigerJin發表於2021-09-09

直譯器模式(Interpreter Pattern): 提供了評估語言的語法或表示式的方式,它屬於行為型模式。這種模式實現了一個表示式介面,該介面解釋一個特定的上下文。這種模式被用在 SQL 解析、符號處理引擎等
(一)為什麼需要直譯器模式

可以將一個需要解釋執行的語言中的句子表示為一個抽象語法樹

(二)直譯器模式UML圖
圖片描述
(三)簡單例項

直譯器模式是開發中最少使用的,因為我們親自編寫語法解析的時候總是非常非常少。而且我能想到的直譯器模式例子,幾乎都是程式碼繁多到我自己怕。所以這裡我只給出直譯器模式的UML圖通用程式碼,感興趣的話可以自己去實現

抽象表示式 
abstract class Expression{
    //任何表示式子類都應該有一種解析任務
    abstract public function interpreter($context);
}
//抽象表示式是生成語法集合(語法樹)的關鍵,每個語法集合完成指定語法解析任務
//抽象表示式透過遞迴呼叫的方法,最終由最小語法單元進行解析完成

//終結符表示式    通常指運算變數
class TerminalExpression extends Expression{
    //終結符表示式通常只有一個
    public function interpreter($context){
        return null; //視具體業務實現
    }
}
//非終結符表示式   通常指運算的符號
class NonterminalExpression extends Expression{
    public function interpreter($context){
        return null;
    }
}<code>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2798765/,如需轉載,請註明出處,否則將追究法律責任。

相關文章