是指給定乙個語言(表示式),定義它的文法的一種表示,並定義乙個直譯器,使用該直譯器來解釋語言中的句子(表示式)
場景:實現四則運算
先輸入表示式的形式,比如 a+b+c-d+e, 要求表示式的字母不能重複
再分別輸入 a ,b, c, d, e 的值
最後求出結果
abstract
class
expression
// 運算符號直譯器,每個運算符號,都只和自己左右兩個數字有關係
class
symbolexpression
extends
expression
@override
public
intinterpreter
(map
map)
}// 變數的直譯器
class
varexpression
extends
expression
@override
public
intinterpreter
(map
map)
}// 加法直譯器
class
addexpression
extends
symbolexpression
public
intinterpreter
(map
map)
}// 減法直譯器
class
subexpression
extends
symbolexpression
public
intinterpreter
(map
map)
}class
calculator
}this
.expression = stack.
pop();
}public
intrun
(hashmap
var)
}public
class
client
public
static string getexpstr()
throws ioexception
public
static hashmap
getvalue
(string expstr)
throws ioexception }}
return map;
}}
直譯器模式
include include include include include using namespace std 直譯器模式 給定一種語言,定義它的文法的一種表示,並定義乙個直譯器 該直譯器使用該表示來解釋語言中的句子 類似於程式語言或者指令碼 假設情景是乙個指令碼控制系統 wasd上下左右方...
直譯器模式
1 模式定義 直譯器模式 interpreter pattern 定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 意思是使用規定格式和語法的 它是一種類行為型模式。2 模式結構 直譯器模式包含如下角色 abstractexpression 抽象表示式 terminalexpre...
直譯器模式
給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。要解決的問題 如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構造乙個直譯器,該直譯器通過解釋這些句子來解決該問題。的好處 當有乙個語言需要解...