直譯器模式 詳解

2021-07-14 19:03:15 字數 1401 閱讀 4015

給定一種語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中句子;

行為型模式

從網上找到的例圖

*/// 抽象表示式

var expression = function

() ;

};// 具體表示式

var variable = function

(value) ;

variable.prototype = new expression();

variable.prototype.interpret = function

(context) ;

// 具體表示式

var add = function

(variable1, variable2) ;

add.prototype = new expression();

add.prototype.interpret = function

(context) ;

// 環境類定義出從變數到布林值的乙個對映

var context = function

() ;

context.prototype.assign = function

(variable, value) ;

context.prototype.lookup = function

(variable) ;

//主函式

var x = new variable(0);

var y = new variable(1);

var context = new context(x, y);

context.assign(x, "x");

context.assign(y, "y");

var result = new add(x, y);

console.log(result.interpret(context));

實現結果:

為xy

該程式實現了字串的+表示式,其實就是」x」 + 「y」 = 「xy」

可以將乙個需要直譯器執行的語言中的句子表示為乙個抽象語法樹;

一些重複出現的問題可以用簡單的語言來進行表達;

乙個語言的文法較為簡單;

可以讓多個環境物件共享乙個狀態物件,從而減少系統中物件的個數;

注意的是

1. 對於複雜文法難以維護;

行為型設計模式 直譯器模式詳解

直譯器模式 interpreter pattern 提供了評估語言的語法或表示式的方式,它屬於行為型模式。這種模式實現了乙個表示式介面,該介面解釋乙個特定的上下文。給定乙個語言,定義它的文法表示,並定義乙個直譯器,這個直譯器使用該標識來解釋語言中的句子。該模式對於複雜的場景實現起來比較困難,實際應用...

直譯器模式

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

直譯器模式

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