c++设计模式--解释器模式

来源:互联网 发布:世界人工智能专业排名 编辑:程序博客网 时间:2024/05/21 18:16

解释器模式(Interpreter)定义了一个类体系,用于实现一个小型语言的解释器。它与组合模式很相似,而且常常利用组合模式来实现语法树的构建。

GOOD:通常当一个语言需要解释执行,并且你可以将该语言中的句子表示成为一个抽象的语法树时,可以使用解释器模式。

 

RES:http://hi.baidu.com/xuehuo_0411/item/41778e77d47f9d43ef1e53e8


C++实现:

#include <iostream>#include <vector>#include <string>using namespace std; class Context{public:string input;string output;}; class AbstractExpression{public:virtual void Interpret(Context* context) = 0;}; class Expression : public AbstractExpression{public:virtual void Interpret(Context* context) { cout << "终端解释器" << endl; }}; class NonTerminalExpression : public AbstractExpression{public:virtual void Interpret(Context* context) { cout << "非终端解释器" << endl; }}; int main(int argc, char* argv[]){Context* context = new Context();vector<AbstractExpression*> express;express.push_back(new Expression());express.push_back(new NonTerminalExpression());express.push_back(new NonTerminalExpression());vector<AbstractExpression*>::iterator it;for (it=express.begin(); it!=express.end(); ++it){(*it)->Interpret(context);}return 0;}