解释器模式
来源:互联网 发布:英雄无敌3末日之刃mac 编辑:程序博客网 时间:2024/06/05 04:23
1、概念:
给定一门语言,定义他的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。
2、角色和职责:
AbstractExpression
抽象解释器,具体的解释任务由各个实现类完成,具体的解释器分别由TerminalExpression和NonterminalExpression完成
TerminalExpression
终结符表达式,实现与文法中的元素相关的解释操作,通常一个解释器模式中只能有一个终结符表达式,但有多个实例,敌营不同的终结符
NonterminalExpression
非终结符,文法中的每条规则对应一个非终结表达式。
Contex
t环境角色
3、示例代码:
#include<iostream>using namespace std;class Context{ public:Context(int num){m_num = num;}int getNum(){return m_num;}int getRes(){return m_res;}void setNum(int num){m_num = num;}void setRes(int res){m_res = res;}private:int m_num;int m_res;};class Expression{public:virtual void interpreter(Context *context) = 0;private:Context *m_contex;};// 加法class PlusExpression :public Expression{public:PlusExpression(){}virtual void interpreter(Context *context){int num = context->getNum();num++;context->setNum(num);context->setRes(num);}};// 减法class SubExpression :public Expression{public:SubExpression(){}virtual void interpreter(Context *context){int num = context->getNum();num--;context->setNum(num);context->setRes(num);}};int main(void){Expression *expression = NULL;Expression *expression2 = NULL;Context*contex = NULL;contex = new Context(10);cout << contex->getNum() << endl;expression = new PlusExpression;expression->interpreter(contex);cout << contex->getNum() << endl;expression2 = new SubExpression;expression2->interpreter(contex);cout << contex->getNum() << endl;delete expression;delete expression2;delete contex;return 0;}
阅读全文
0 0
- 深入浅出解释器模式
- 解释器(Interpreter )模式
- Interpreter解释器模式
- Interperter 解释器模式
- 解释器模式 InterpretePattern
- 解释器模式
- 解释器模式
- 深入浅出解释器模式
- 解释器模式(python)
- 解释器模式
- 解释器模式 详解
- 解释器模式
- Java解释器模式
- 解释器模式
- Interpreter 解释器模式
- java 解释器模式
- 解释器模式
- 解释器模式
- 初步认识Spring-boot
- Git使用命令
- Webix学习之template
- jquery+ajax渲染,简单的拼接字符串
- Wannafly挑战赛2 B-travel spfa思路
- 解释器模式
- hdu 2236 无题II
- jsoup教程004-从一个URL加载一个Document
- python去掉 unicode 字符串前面的 u
- 普通广播与本地广播
- 基于python 编写的萤火虫算法(GSO)
- JavaScript学习笔记-04this绑定
- Java 反射机制获取Class中的方法 和字段
- 在网狐荣耀版添加房卡游戏时,经常有网友遇到进房卡房间弹出到大厅登录界面