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

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

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值