哪个网站是专门做男人衣服的,石家庄网站建设招聘,有没有什么网站免费做名片,北京开发app目录
1、解释器模式#xff08;Interpreter Pattern#xff09;含义
2、解释器模式的UML图学习
3、解释器模式的应用场景
4、解释器模式的优缺点
5、C实现解释器模式的实例 1、解释器模式#xff08;Interpreter Pattern#xff09;含义 解释器模式#xff08;Interp…目录
1、解释器模式Interpreter Pattern含义
2、解释器模式的UML图学习
3、解释器模式的应用场景
4、解释器模式的优缺点
5、C实现解释器模式的实例 1、解释器模式Interpreter Pattern含义 解释器模式Interpreter Pattern给定一个语言定义它的方法的一种表示并定义一个解释器这个解释适使用该表示来解释语言中的句子。【DP】 解释器模式Interpreter Pattern是一种行为型设计模式它定义了一种语言的文法并且建立一个解释器来解释该语言中的句子。通过使用解释器模式可以将一个复杂的问题分解成一系列简单的表达式然后通过解释器逐个解释这些表达式。 2、解释器模式的UML图学习 解释器模式主要包含以下几个角色
1抽象表达式Abstract Expression声明了一个抽象的解释操作所有具体表达式都必须实现这个接口。
2终结符表达式Terminal Expression表示语法规则中的终结符它是解释器模式中最基本的元素。
3非终结符表达式Non-terminal Expression表示语法规则中的非终结符它由终结符和其他非终结符组成。
4上下文Context包含解释器之外的一些全局信息。 3、解释器模式的应用场景
1当有一个语言需要解释执行并且可以将该语言的句子表示为一个抽象语法树时。
2当需要对语言进行扩展或修改时可以考虑使用解释器模式。 4、解释器模式的优缺点
1优点 1可扩展性可以方便地增加新的表达式和解释器。 2易于实现语法规则可以通过解释器模式直接定义语法规则而无需使用复杂的编译器或解析器。
2缺点 1可能导致类的数量增加每个文法规则都需要一个具体的表达式类可能会导致类的数量过多。 2可能导致性能问题解释器模式通常使用递归调用来解释表达式可能会导致性能问题。 5、C实现解释器模式的实例 #include iostream
#include unordered_map// 抽象表达式
class Expression
{
public:virtual int interpret(std::unordered_mapchar, int context) 0;
};// 终结符表达式
class TerminalExpression : public Expression
{
private:char variable;public:TerminalExpression(char var) : variable(var) {}int interpret(std::unordered_mapchar, int context) override {return context[variable];}
};// 非终结符表达式
class NonterminalExpression : public Expression
{
private:Expression* left;Expression* right;public:NonterminalExpression(Expression* l, Expression* r) : left(l), right(r) {}int interpret(std::unordered_mapchar, int context) override {return left-interpret(context) right-interpret(context);}
};int main()
{std::unordered_mapchar, int context;context[a] 5;context[b] 10;// 构建语法树Expression* expression new NonterminalExpression(new TerminalExpression(a),new TerminalExpression(b));// 解释执行表达式int result expression-interpret(context);std::cout 解释结果: result std::endl;delete expression;return 0;
}在上述示例中抽象表达式Expression定义了一个抽象的解释操作所有具体表达式都必须实现这个接口。
终结符表达式Terminal Expression表示语法规则中的终结符它是解释器模式中最基本的元素。
非终结符表达式Non-terminal Expression表示语法规则中的非终结符它由终结符和其他非终结符组成。
上下文Context包含解释器之外的一些全局信息。