理解:可以廣義的理解為創造一種語言,實現該語言的直譯器,然後用創造的語言編寫程式
對比:如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...