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