設計模式 interpreter模式

2022-07-20 06:15:09 字數 1404 閱讀 3817

理解:可以廣義的理解為創造一種語言,實現該語言的直譯器,然後用創造的語言編寫程式

對比:如xml就是一種語言,解析xml的**就是直譯器

例子:

//目標:定義4中幾種命令,使用c++解析

//如下:

//command go end

//command back end

//command right end

//command left end

//repeat 4 go back end

//command left left left end

class command

;class gocommand: public command

};class backcommand: public command

};class leftcommand: public command

};class rightcommand: public command

};class commandlist: public command }

void addcommand(command* command)

~commandlist() }

};class repeatcommand: public commandlist

virtual void excute()

}}};

commandlist *program = null;

void splitstring(const string& s, vector& v, const string& c)

if(pos1 != s.length())

v.push_back(s.substr(pos1));

return;

}void parseline(vector& v, commandlist* commandlist)

else

} else if(v.front() == string("repeat"))

else

}else if(v.front() == string("go")) }

else if(v.front() == string("back")) }

else if(v.front() == string("left")) }

else if(v.front() == string("right")) }

else }

void parse(string name)

infile.close();

}

int main() 

設計模式 直譯器模式 Interpreter

直譯器模式是我們暫時的最後一講,一般主要應用在 oop 開發中的編譯器的開發中,所以適用面比較窄 context 類是乙個上下文環境類,plus 和 minus 分別是用來計算的實現 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子 當有乙個語言需要解釋...

C 設計模式之Interpreter

名稱 interpreter 結構 意圖 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。適用性 當有乙個語言需要解釋執行,並且你可將該語言中的句子表示為乙個抽象語法樹時,可使用直譯器模式。而當存在以下情況時該模式效果最好 該文法簡單對於複雜的文法,文...

Interpreter 直譯器 設計模式

宣告 本博文篇幅短,適合review。一 概念 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。二 模式結構圖 三 例子 class context void setinput string input string getoutput void se...