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

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

#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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/19925.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NLP】训练chatglm2的评价指标BLEU,ROUGE

当进行一定程度的微调后&#xff0c;要评价模型输出的语句的准确性。由于衡量的对象是一个个的自然语言文本&#xff0c;所以通常会选择自然语言处理领域的相关评价指标。这些指标原先都是用来度量机器翻译结果质量的&#xff0c;并且被证明可以很好的反映待评测语句的准确性&a…

DOCTYPE 是什么作用?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ DOCTYPE 是什么作用&#xff1f;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对Web开发感兴…

Java项目-苍穹外卖-Day01

文章目录 博客介绍软件开发流程项目介绍产品原型技术选型前端环境搭建 博客介绍 从头开始做黑马的苍穹外卖项目 每天记录一下新学的知识点以及对应的开发进度 然后一些在项目中遇到的问题会重点标注 本篇主要是后端的&#xff0c;前端会一笔带过 软件开发流程 流程介绍需求分…

DM开启慢日志监控并用DmLog工具分析数据

工具描述 DMLOG用于对达梦SQL日志进行统计分析&#xff0c;便于SQL优化人员进行查看捕获关键信息&#xff0c;不提供SQL优化建议。DMLOG用java语言编写&#xff0c;不受操作系统平台限制&#xff0c;大小不超过10M&#xff0c;在安装好Java环境后&#xff0c;可在各平台运行。 …

数据挖掘七种常用的方法汇总

数据挖掘(Data Mining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中&#xff0c;提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。这个定义包括几层含义&#xff1a;数据源必须是真实的、大量的、含噪声的&#xff1b;发现的是用户…

花费7元训练自己的GPT 2模型

在上一篇博客中&#xff0c;我介绍了用Tensorflow来重现GPT 1的模型和训练的过程。这次我打算用Pytorch来重现GPT 2的模型并从头进行训练。 GPT 2的模型相比GPT 1的改进并不多&#xff0c;主要在以下方面&#xff1a; 1. GPT 2把layer normalization放在每个decoder block的前…

17、YML配置文件及让springboot启动时加载我们自定义的yml配置文件的几种方式

YML配置文件及加载自定义配置文件的几种方式 ★ YAML配置文件 其实本质和.properties文件的是一样的。 Spring Boot默认使用SnakeYml工具来处理YAML配置文件&#xff0c;SnakeYml工具默认就会被spring-boot-starter导入&#xff0c;因此无需开发者做任何额外配置。 YAML本质…

数据分析基础-Excel图表的美化操作(按照教程一步步操作)

一、原始数据 包含月份和对应的销量和产量。 时间销量产量1月60722月38673月28344月58685月67596月72357月61428月24319月556710月243511月122112月2645 二、原始的图表设计-采用Excel自带模板 三、优化思路 1、删除多余元素 2、弱化次要元素 对于可以弱化的元素&#xff0c…

计算机视觉实验:图像增强应用实践

本次实验主要从基于统计、函数映射的图像增强方法和基于滤波的图像增强方法两种方法中对一些图像增强的算法进行实现。主要的编程语言为python&#xff0c;调用了python自带的PIL图像库用于读取图像&#xff0c;利用numpy进行图像运算&#xff0c;最后使用opencv第三方库进行对…

基于DCT变换和huffman编码的语音压缩算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 多通道滤波 4.2 DCT变换 4.3 量化 4.3 哈夫曼编码 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................…

云上 Index:看「简墨」如何为云原生打造全新索引

拓数派首款数据计算引擎 PieCloudDB Database 是一款全新的云原生虚拟数仓。为了提升用户使用体验&#xff0c;提高查询效率&#xff0c;在实现存算分离的同时&#xff0c;PieCloudDB 设计与打造了全新的存储引擎「简墨」等模块&#xff0c;并针对云场景和分析型场景设计了高效…

网络安全进阶学习第九课——SQL注入介绍

文章目录 一、什么是注入二、什么是SQL注入三、SQL注入产生的原因四、SQL注入的危害五、SQL注入在渗透中的利用1、绕过登录验证&#xff1a;使用万能密码登录网站后台等。2、获取敏感数据3、文件系统操作4、注册表操作5、执行系统命令 六、如何挖掘SQL注入1、SQL注入漏洞分类按…

跨境电商代运营模式,Live Market打造跨境电商出海SaaS服务平台

近年来&#xff0c;我国跨境电商发展取得可喜进展。商务部数据显示&#xff0c;跨境电商货物进出口规模占外贸比重由5年前的不足1%上升到目前的5%左右。私域流量业态在电商领域兴起&#xff0c;品牌企业在线上建立自主经营的手机应用软件直接触达用户。跨境电商的发展模式转向平…

构建易于运维的 AI 训练平台:存储选型与最佳实践

伴随着公司业务的发展&#xff0c;数据量持续增长&#xff0c;存储平台面临新的挑战&#xff1a;大图片的高吞吐、超分辨率场景下数千万小文件的 IOPS 问题、运维复杂等问题。除了这些技术难题&#xff0c;我们基础团队的人员也比较紧张&#xff0c;负责存储层运维的仅有 1 名同…

选择适合你的数据可视化工具:提升洞察力的关键决策

导言&#xff1a; 在当今数据驱动的世界中&#xff0c;数据可视化工具成为了帮助我们理解和传达数据见解的关键工具之一。数据可视化不仅能够将复杂的数据转化为易于理解的可视化形式&#xff0c;还能帮助我们发现数据中的模式、趋势和关联。然而&#xff0c;随着市场上可视化工…

从虚拟化到云原生,企业和工程师应该怎么做?---思考分享

一、背景 1.从物理机到虚拟化再到现在的云原生。推动基础架构革新的主要源头就是业务应用。 2.为了解决业务系统的弹性扩容、业务连续性、高可用性加速催生了云时代的快速迭代。 3.虚拟化时代业务系统无非从物理机迁移到虚拟化环境进行部署&#xff0c;享受到了基础架构迭代到云…

【力扣】92. 反转链表 II <链表指针>

【力扣】92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回反转后的链表。 示例 1 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff…

Eclipse进行debug

目录 基本步骤三种执行方式 -- 键盘快捷键variables面板移除debug过的项目通过eclipse调用具有软件界面的项目进行debug各个variable颜色具有的意义 基本步骤 点击eclipse右上角debug按钮 调出debug面板 点击小蜘蛛图标&#xff08;不是点绿色三角的Run&#xff09; 此时会进…

第一个 vue-cli 项目

一、什么是 vue-cli vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加…

CUDA版本自由切换

首先查看当前cuda版本 ls /usr/local/我们可以看到 bin cuda-11.0 cuda-11.8 cuda-12.0 etc games include lib man sbin share src然后编辑环境变量 vim ~/.bashrc最下面加入11.8的环境变量 ## cuda path# cuda 11.8 export PATH/usr/local/cuda-11.8/bin:$PAT…