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

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;
}
时间: 2024-08-05 12:29:34

Interpreter模式(C++解释器模式)的相关文章

行为型模式之解释器模式

概述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它用于描述如何使用面向对象语言构成一个简单的语言解释器.在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应为该语言中的句子.此时,可以使用解释器模式来设计这种新的语言.对解释器模式的学习能够加深我们对面向对象思想的理解,并且掌握编程语言中文法规则的解释过程 定义 解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立

设计模式-行为型模式,解释器模式(12)

解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文.这种模式被用在 SQL 解析.符号处理引擎等. 对每个应用来说,至少有以下两种不同的用户分类.? 基本用户:这类用户只希望能够凭直觉使用应用.他们不喜欢花太多时间配置或学习应用的内部.对他们来说,基本的用法就足够了.? 高级用户:这些用户,实际上通常是少数,不介意花费额外的时间学习如何使用应用的高级特性.如果知道学会之后能得到以下好处

浅谈架构模式之解释器模式

1定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. ·文法:即语法规则.在解释器模式中每一个语法都将对应一个解释器对象,用来处理相应的语法规则.它对于扩展.改变文法以及增加新的文法规则都很方便. ·句子:解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子. · 抽象语法树:在解释器模式中可以通过一种称之为抽象语法树(Abstract Syntax Tree, AST)的图形方式来直观地表示语言的构成

深入浅出设计模式——解释器模式(Interpreter Pattern)

模式动机 如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题.解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中. 模式定义解释器模式(Interpreter Pattern) :定义语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码,它是一种类行为型模式.Interpreter Pattern: Give

解释器模式(Interpreter)

一.解释器模式介绍 解释器模式:给定一个语言,定义它的文法一种表示.并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 也就是说,如果你想自己开发一种语言来解释执行某些语言的特定语法,可以考虑使用解释器模式. 该模式对于我们开发人员来说,基本上都用不到.除非你想自己开发一种语言. 解释器模式真正开发起来很难,就相当于自己开发了一种语言给别人用. 解释器模式UML图: 二.应用场景 通常来说,当有一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象语法树叶,则可以使用解释器模式.

设计模式之解释器模式--- Pattern Interpreter

模式的定义 类型 行为类 模式的使用场景 优点 缺点 UML类图 角色介绍 模式的通用源码 输出结果 Android源码中的模式实现 杂谈 参考资料 (1).设计模式之禅-第27章 解释器模式 (2)解释器模式 https://github.com/simple-android-framework/android_design_patterns_analysis

设计模式(行为型)之解释器模式(Interpreter Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(行为型)之访问者模式(Visitor Pattern)>http://blog.csdn.net/yanbober/article/details/45536787 概述 解释器模式是类的行为模式.给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个

第17章 行为型模式—解释器模式

1. 解释器模式(Interpreter Pattern)的定义 (1)定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. ①文法:即语法规则.在解释器模式中每一个语法都将对应一个解释器对象,用来处理相应的语法规则.它对于扩展.改变文法以及增加新的文法规则都很方便. ②解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子. ③在解释器模式中可以通过一种称之为抽象语法树(Abstract Syntax T

设计模式--19、解释器模式

定义:给定一种语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中句子. 类型:行为类模式 类图: 解释器模式是一个比较少用的模式,本人之前也没有用过这个模式.下面我们就来一起看一下解释器模式. 解释器模式的结构 抽象解释器:声明一个所有具体表达式都要实现的抽象接口(或者抽象类),接口中主要是一个interpret()方法,称为解释操作.具体解释任务由它的各个实现类来完成,具体的解释器分别由终结符解释器TerminalExpression和非终结符解释器Nontermi