直譯器模式

2021-09-07 13:06:17 字數 1635 閱讀 2588

public

abstract

class expression

public

abstract

class

symbolexpression

extends

expression

}

/**

* 減法解析器

*@author administrator

*/public

class

subexpression

extends

symbolexpression

/* 左右兩個表示式相減 */

public

intinterpreter(hashmapvar)

}

/**

* * 加法解析器

*@author administrator

*/public

class

addexpression

extends

symbolexpression

/* 把左右兩個表示式運算的結果加起來 */

public

intinterpreter(hashmapvar)

}

/**

* 封裝解析器

*@author administrator

*/public

class

calculator

}/* 把運算結果丟擲來 */

this.expression = stack.pop();

}/**

* 開始運算

*@param var

*/public

intrun(hashmapvar)

}

public

class

terminalexpression

extends

expression

/* 通常終結符表示式僅僅有乙個,可是有多個物件 */

public

intinterpreter(hashmapvar)

}

/**

* 直譯器模式

*@author administrator

*/public

class

client

/* 獲得表示式 */

public

static string getexpstr() throws ioexception

/* 獲得值對映 */

public

static hashmapgetvalue(string expstr) throws ioexception}}

return map;

}}

執行結果:

請輸入表示式:

a+b-c

請輸入 a 的值:

100請輸入 b 的值:

2請輸入 c 的值:

101運算結果為:a+b-c=1

直譯器模式

include include include include include using namespace std 直譯器模式 給定一種語言,定義它的文法的一種表示,並定義乙個直譯器 該直譯器使用該表示來解釋語言中的句子 類似於程式語言或者指令碼 假設情景是乙個指令碼控制系統 wasd上下左右方...

直譯器模式

1 模式定義 直譯器模式 interpreter pattern 定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 意思是使用規定格式和語法的 它是一種類行為型模式。2 模式結構 直譯器模式包含如下角色 abstractexpression 抽象表示式 terminalexpre...

直譯器模式

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