c++开发模式,解释器模式

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。文章来源地址https://uudwc.com/A/4PDNW

#include <iostream>
#include <string>
using namespace std;

class Context { };

class Expression {
public:
    virtual ~Expression() { }
    virtual void Interpret(const Context& c) = 0;
};

class TerminalExpression :public Expression {
public:
    TerminalExpression(const string& statement) {
        _statement = statement;
    }

    void Interpret(const Context& c) {
        cout << this->_statement << " -- TerminalExpression" << endl;
    }

private:
    string _statement;
};

class NonterminalExpression :public Expression {
public:
    NonterminalExpression(Expression* expression, int times) {
        _expression = expression;
        _times = times;
    }

    void Interpret(const Context& c) {
        for (int i = 0; i < _times; i++) {
            _expression->Interpret(c);
        }
    }

private:
    Expression *_expression;
    int _times;
};

int main() {
    Context *c = new Context();
    Expression *tp = new TerminalExpression("echo");
    Expression *ntp = new NonterminalExpression(tp, 4);
    ntp->Interpret(*c);

    delete ntp;
    delete tp;
    delete c;

    return 0;
}

原文地址:https://blog.csdn.net/cqltbe131421/article/details/132081774

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

上一篇 2023年08月08日 04:13
vue element table 懒加载 根据滚动条滑动动态加载数据 无分页或分页过大 渲染慢问题
下一篇 2023年08月08日 04:13