解释器模式(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;
}