目录
解释器模式(Interpreter Pattern)
解释器模式是一种行为设计模式,它定义了一种语言的文法表示,并使用解释器来解释这些文法。该模式适用于那些有特定语法规则的场景,比如编译器、正则表达式引擎和计算器。
实际应用
算术表达式解释器
算术表达式解释器 -- 可以解析和计算包含加法和减法的算术表达式。
#include <iostream>
#include <string>
#include <stack>
#include <memory>
#include <unordered_map>
// 抽象表达式
class Expression {
public:
virtual ~Expression() = default;
virtual int interpret(const std::unordered_map<char, int>& context) = 0;
};
// 终结符表达式(变量)
class VariableExpression : public Expression {
private:
char name;
public:
VariableExpression(char name) : name(name) {}
int interpret(const std::unordered_map<char, int>& context) override {
return context.at(name);
}
};
// 非终结符表达式(加法)
class AddExpression : public Expression {
private:
std::shared_ptr<Expression> left, right;
public:
AddExpression(std::shared_ptr<Expression> left, std::shared_ptr<Expression> right)
: left(left), right(right) {}
int interpret(const std::unordered_map<char, int>& context) override {
return left->interpret(context