設計模式 直譯器模式

2022-09-09 01:06:29 字數 1225 閱讀 2974

模型公式,輸入乙個公式,然後輸入其中的引數,然後運算出結果

抽象表示式類

public abstract class expression
變數解析器,根據此,可以獲得儲存在map中的鍵值對

public class varexpress extends expression

// map取

public int interpreter(hashmapvar)

}

抽象運算符號解析器

public abstract class symbolexpression extends expression

}

對加法進行解析

public class addexpression extends symbolexpression

// 進行相加

public int interpreter(hashmapvar)

// 進行相減

public int interpreter(hashmapvar)

}

再次對解析器進行封裝,此為公式

public class calculator

}// 運算結果丟擲

this.expression = stack.pop();

}// 運算

public int run(hashmapvar)

}

在上方中,完成的是對表示式的輸入

最後場景

public class client

// 獲得表示式

public static string getexpstr() throws ioexception

// 獲得值對映

public static hashmapgetvalue(string expstr) throws ioexception}}

return map;}}

直譯器模式不難,核心思想在於構建語法樹,進行運算的時候,進行遞迴呼叫。

具體做法是建立幾個直譯器,在建立乙個直譯器封裝類,在直譯器封裝類中完成語法樹的構建。然後在場景類中完成遞迴呼叫。

設計模式 直譯器模式

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

設計模式 直譯器模式

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

設計模式 直譯器模式

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