Java設計模式之直譯器模式

2021-09-21 14:21:39 字數 867 閱讀 9042

定義:一種語法分析工具,用來分步解釋乙個複雜的運算過程,複雜運算拆分成多個小運算。

需求:計算(1+2)*(3+4)的值。

必備元素:

建立直譯器介面,裡面包含乙個解釋操作的方法

public

inte***ce

expression

建立終結符表示式,裡面計算加法

public

class

terminalexpression

implements

expression

@override

public

intinterpret()

}

建立非終結符表示式,裡面計算乘法

public

class

mulexpression

implements

expression

@override

public

intinterpret()

}

建立環境角色,因為計算值不複雜,就直接寫在test中。

public

class

test

}

列印結果:

計算結果為:21
直譯器模式實際使用了遞迴,使用時候需要謹慎。

直譯器模式適用於有規律的語句解析,比方手sql語句。

直譯器模式適合一些頻繁出現的運算,比方說例子中的計算。

Java設計模式之直譯器模式

直譯器模式用於描述如何構成乙個簡單的語言直譯器,主要應用於使用物件導向語言開發的直譯器的設計。當需要開發乙個新的語言時可以考慮使用直譯器模式。在某些情況下,為了更好地描述某些特定型別的問題可以建立一種新的語言,這種語言擁有自己的表示式和結構,即文法規則,這些問題的例項將對應為該語言中的句子,此時可以...

Java設計模式筆記之直譯器模式

1.定義 直譯器模式 interpreter 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。2.uml圖 角色介紹 3.通用模式 抽象表示式 public abstract class abstractexpression 3.2 終結表示式 終結符...

JAVA設計模式 直譯器模式

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