当前位置: 首页 > news >正文

网站宣传册wordpress七牛远程图片

网站宣传册,wordpress七牛远程图片,杜集网站建设,wordpress远程写作目录 解释器模式#xff08;Interpreter Pattern#xff09; 实际应用 算术表达式解释器 布尔表达式解释器 总结 解释器模式#xff08;Interpreter Pattern#xff09; 解释器模式是一种行为设计模式#xff0c;它定义了一种语言的文法表示#xff0c;并使用解释器…目录 解释器模式Interpreter Pattern 实际应用 算术表达式解释器 布尔表达式解释器 总结 解释器模式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_mapchar, int context) 0; };// 终结符表达式变量 class VariableExpression : public Expression { private:char name; public:VariableExpression(char name) : name(name) {}int interpret(const std::unordered_mapchar, int context) override {return context.at(name);} };// 非终结符表达式加法 class AddExpression : public Expression { private:std::shared_ptrExpression left, right; public:AddExpression(std::shared_ptrExpression left, std::shared_ptrExpression right) : left(left), right(right) {}int interpret(const std::unordered_mapchar, int context) override {return left-interpret(context) right-interpret(context);} };// 非终结符表达式减法 class SubtractExpression : public Expression { private:std::shared_ptrExpression left, right; public:SubtractExpression(std::shared_ptrExpression left, std::shared_ptrExpression right) : left(left), right(right) {}int interpret(const std::unordered_mapchar, int context) override {return left-interpret(context) - right-interpret(context);} };// 客户端代码解析并计算表达式 int main() {std::string expr ab-c;std::unordered_mapchar, int context {{a, 5}, {b, 3}, {c, 2}};std::stackstd::shared_ptrExpression stack;for (char token : expr) {if (isalpha(token)) {stack.push(std::make_sharedVariableExpression(token));} else if (token ) {auto right stack.top(); stack.pop();auto left stack.top(); stack.pop();stack.push(std::make_sharedAddExpression(left, right));} else if (token -) {auto right stack.top(); stack.pop();auto left stack.top(); stack.pop();stack.push(std::make_sharedSubtractExpression(left, right));}}auto expression stack.top();int result expression-interpret(context);std::cout Result: result std::endl;return 0; }布尔表达式解释器 布尔表达式解释器 -- 可以解析和计算包含与AND和或OR的布尔表达式。 #include iostream #include string #include stack #include memory #include unordered_map// 抽象表达式 class Expression { public:virtual ~Expression() default;virtual bool interpret(const std::unordered_mapstd::string, bool context) 0; };// 终结符表达式变量 class VariableExpression : public Expression { private:std::string name; public:VariableExpression(const std::string name) : name(name) {}bool interpret(const std::unordered_mapstd::string, bool context) override {return context.at(name);} };// 非终结符表达式与操作 class AndExpression : public Expression { private:std::shared_ptrExpression left, right; public:AndExpression(std::shared_ptrExpression left, std::shared_ptrExpression right) : left(left), right(right) {}bool interpret(const std::unordered_mapstd::string, bool context) override {return left-interpret(context) right-interpret(context);} };// 非终结符表达式或操作 class OrExpression : public Expression { private:std::shared_ptrExpression left, right; public:OrExpression(std::shared_ptrExpression left, std::shared_ptrExpression right) : left(left), right(right) {}bool interpret(const std::unordered_mapstd::string, bool context) override {return left-interpret(context) || right-interpret(context);} };// 客户端代码解析并计算布尔表达式 int main() {std::string expr a AND b OR c;std::unordered_mapstd::string, bool context {{a, true}, {b, false}, {c, true}};std::stackstd::shared_ptrExpression stack;std::istringstream iss(expr);std::string token;while (iss token) {if (token a || token b || token c) {stack.push(std::make_sharedVariableExpression(token));} else if (token AND) {auto right stack.top(); stack.pop();auto left stack.top(); stack.pop();stack.push(std::make_sharedAndExpression(left, right));} else if (token OR) {auto right stack.top(); stack.pop();auto left stack.top(); stack.pop();stack.push(std::make_sharedOrExpression(left, right));}}auto expression stack.top();bool result expression-interpret(context);std::cout Result: std::boolalpha result std::endl;return 0; }总结 解释器模式可以帮助我们定义和解释特定语言的语法规则并将这些规则应用于不同的上下文。
http://www.w-s-a.com/news/581534/

相关文章:

  • 特价旅游机票网站建设i营销
  • 如何成立网站深圳创业项目
  • 建设商业网站惠州网站建设推荐乐云seo
  • 如何申请免费域名做网站免费推广神器
  • 自媒体人专用网站安岳网站建设
  • 特乐网站建设做网站推广要多少钱
  • 山东省建设安全生产协会网站义乌跨境电商公司前十名
  • 做网站优化就是发文章吗起飞页自助建站平台的特点
  • 做网站还是做app好慈溪机械加工网
  • 上传下载文件网站开发的php源码腾讯企点
  • 给分管领导网站建设情况汇报怎么写网络运营的岗位职责及任职要求
  • 电线电缆技术支持中山网站建设广告设计培训学校有哪些
  • 如何禁止通过ip访问网站wordpress无法调用主题布局和图片
  • 江西建设工程信息网站重庆网站推广大全
  • 南浔区住房城乡建设局网站网页设计基础学什么
  • 萧山做网站的企业网站建设 西安
  • 江西省城乡建设厅网站百度站长资源平台
  • 本地搭建linux服务器做网站免费查企业信息查询
  • 电商网站建设与运营网上购物哪个网站最好
  • 做app做网站从何学起网站设计需要什么证
  • 设计网站最重要的是要有良好的短网址还原
  • 大连建设银行招聘网站做seo是要先有网站吗
  • 中山做网站的wordpress建站教程百科
  • 湛江专业网站制作做网站需要工具
  • 做音箱木工网站吉林平安建设网站
  • 品牌网站建设咨询灯光设计网站推荐
  • 温州网站运营打开百度一下网页版
  • 网站有情链接怎么做住房公积金个体工商户
  • 内蒙古网站开发网站开发验收资料
  • 温州网站建设首选国鼎网络网络营销方法可分为两类