码迷,mamicode.com
首页 > 编程语言 > 详细

Interpreter模式(C++解释器模式)

时间:2014-12-11 00:18:41      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   使用   sp   for   on   

Interpreter模式提供了一个实现语法解释器的框架,其目的就是使用一个解释器为用户提供一个一门定义语言语法表示的解释器,并且通过这个解释器来解释语言中的句子。

    Interpreter模式使用类来表示文法规则,因此方便于文法的扩展。

 

代码如下:

#include <iostream>
#include <string>
using namespace std;
class Context
{
public:
	Context(){}
	~Context(){}
};


class AbstractExpression
{
public:
	virtual ~AbstractExpression(){}
	virtual void Interpret(const Context& c){}
protected:
	AbstractExpression(){}
};


class TerminalExpression:public AbstractExpression
{
public:
	TerminalExpression(const string& statement)
	{m_statement=statement;}
	~TerminalExpression(){}
	void Interpret(const Context& c)
	{cout<<"TEMINALEXPRESSION"<<endl;}
private:
	string m_statement; 
};


class NonterminalExpression:public AbstractExpression
{
public:
	NonterminalExpression(AbstractExpression* ex,int times)
	{
		m_ex=ex;
		m_times=times;
	}
	~NonterminalExpression(){};
	void Interpret(const Context& c)
	{
		for(int i=0;i < m_times; i++)
			m_ex->Interpret(c);
	}
private:
	AbstractExpression* m_ex;
	int m_times;
};


void main()
{
	Context* c=new Context();
	AbstractExpression* abs=new TerminalExpression("Hello");
	AbstractExpression* nabs=new NonterminalExpression(abs,2);
	nabs->Interpret(*c);

	delete nabs;
	delete abs;
	delete c;
}


 

Interpreter模式(C++解释器模式)

标签:style   blog   io   color   os   使用   sp   for   on   

原文地址:http://blog.csdn.net/yc7369/article/details/41855923

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!