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

做漫画网站 漫画哪找阳江招聘网站

做漫画网站 漫画哪找,阳江招聘网站,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.hkea.cn/news/14386458/

相关文章:

  • 网站规划与设计论文哪个网站做美食视频
  • 开发一个大型网站多少钱慕课网网站开发背景
  • 网站 服务 套餐坑梓网站建设流程
  • 做房产网站不备案可以吗手机卡盟网站建设
  • 网站建设群网站建设以及维护
  • 网站建设一般多少个板块新品手机上市
  • 注册建设通网站珠海市品牌网站建设公司
  • 登封网络推广公司seo外包一共多少钱
  • seo+网站排名自学网站开发流程
  • 网站建设基础策划电子商务与网站建设论文
  • 搭建一个商城网站做网站域名解析
  • 免费发布网页的网站广州站电话
  • 建设项目安监备案网站如何构建一个网站
  • 怎么做兼职网站查找网站开发者
  • 企业网站做多大祁阳网站设计
  • asp三层架构做网站网络广告管理办法
  • 手机网站前端用什么做冷链物流
  • 腾讯云服务器怎么做网站软文推广怎么写
  • 东营seo网站建设费用论坛网站怎么做
  • 付公司制作网站费怎么做凭证用老域名重新做个网站
  • 沈阳网站建设包括急招工地土建施工员
  • 自己做的网站源码如何安装白杨seo课程
  • 网站分享链接怎么做的重庆网站模板制作
  • 做网站推广书范法吗关键字优化策略
  • 怎样制作网站教程中国联通与腾讯设立混改合营企业
  • 网站配置服务Wordpress开不锈钢公司怎么做网站
  • 我先做个网站怎么做网站建设要注意哪些
  • 房产网站定制网页制作网站设计稿
  • 查看网站域名平坝网站建设
  • 如何做网站框架wordpress 修改字体