3_11 InterpreterMode 解释器模式

// 定义:给定一个语言,定义他的文法一种表示,并定义一个解释器,
//     这个解释器使用该表示来解释语言中的句子
//
// 模式举例:sql语句解析,编译器语法解析,计算器语法解析
//	
// 模式特点:
//	
//#include
#include
#include
using namespace std;class Expression
{
public:virtual int interpreter(map var)=0;
};class VarExpression : public Expression
{
public:VarExpression(char key){this->key = key;}virtual int interpreter(map var){return var[key];}private:char key;
};class SymbolExpression : public Expression
{
public:SymbolExpression(Expression * l,Expression * r):left(l),right(r){}protected:Expression * left;Expression * right;
};class AddExpression : public SymbolExpression
{
public:AddExpression(Expression * l,Expression * r):SymbolExpression(l,r){}virtual int interpreter(map var){return left->interpreter(var) + right->interpreter(var);}
};class SubExpression : public SymbolExpression
{
public:SubExpression(Expression * l,Expression * r):SymbolExpression(l,r){}virtual int interpreter(map var){return left->interpreter(var) - right->interpreter(var);}
};//解析字符串
Expression * analyse(string expStr)
{stack expStack;Expression * left = nullptr;Expression * right = nullptr;for(int i=0;i var;var.insert(make_pair('a',5));var.insert(make_pair('b',2));var.insert(make_pair('c',1));var.insert(make_pair('d',6));Expression * expression = analyse(expStr);int result = expression->interpreter(var);cout<

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部