41 lines
835 B
C++
41 lines
835 B
C++
/**
|
||
* @name 解释器模式
|
||
* @brief: 定义语言的语法表示
|
||
* @note 场景:SQL解析、正则表达式、数学公式计算
|
||
*/
|
||
|
||
class Expression {
|
||
public:
|
||
virtual int interpret() = 0;
|
||
};
|
||
|
||
class Number : public Expression {
|
||
public:
|
||
Number(int value) : value(value) {}
|
||
int interpret() override { return value; }
|
||
private:
|
||
int value;
|
||
};
|
||
|
||
class Add : public Expression {
|
||
public:
|
||
Add(Expression* left, Expression* right)
|
||
: left(left), right(right) {}
|
||
int interpret() override {
|
||
return left->interpret() + right->interpret();
|
||
}
|
||
private:
|
||
Expression* left;
|
||
Expression* right;
|
||
};
|
||
|
||
// 使用:构建表达式树 (2 + (3 + 4))
|
||
Expression* expr = new Add(
|
||
new Number(2),
|
||
new Add(new Number(3), new Number(4))
|
||
);
|
||
|
||
int main()
|
||
{
|
||
int result = expr->interpret(); // 输出9
|
||
} |