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

全国论坛网站建设公司网站怎么申请

全国论坛网站建设,公司网站怎么申请,快递网站域名更换,建设网站要先给钱才能做作者#xff1a;翟天保Steven 版权声明#xff1a;著作权归作者所有#xff0c;商业转载请联系作者获得授权#xff0c;非商业转载请注明出处 一、解释器模式是什么#xff1f; 解释器模式是一种行为型的软件设计模式#xff0c;定义了一个解释器#xff0c;来解释给定语…作者翟天保Steven 版权声明著作权归作者所有商业转载请联系作者获得授权非商业转载请注明出处 一、解释器模式是什么 解释器模式是一种行为型的软件设计模式定义了一个解释器来解释给定语言和文法的句子。也可以理解为翻译吧比如11翻译为一加上一等于二这样就做成了一个简单的加法计算器。 解释器模式的优点 良好扩展性。语法的翻译通过类来实现扩展类可以扩展其解释能力。易实现。语法树中每个表达式节点类具备一定相似性实现起来相对容易。 解释器模式的缺点 执行效率低。解释器中通常有大量循环和递归语句当被解释句子较复杂时程序的性能受到较大影响。类膨胀。规则较多时类数量也膨胀。 二、解释器模式 2.1 结构图 客户端即Main主函数客户端通过解释器来解析表达式内容表达式又分为终结型和非终结型。就拿计算器举例11,1就是终结符类型表达式可以用它结尾而就是非终结符类型出现了就意味着它前后还有别的表达式字符自然不能作终结。 2.2 代码示例 场景描述实现简单的加减法计算器。 //Interpreter.h /****************************************************/ #pragma once #include iostream #include vector #include string #include algorithm #include stackusing namespace std;// 抽象表达式类 class Expression { public:// 解释virtual int interpret() 0;};// 数字表达式类 class NumberExpression : public Expression { public:// 构造函数NumberExpression(int num) : number(num) {}// 解释virtual int interpret() { return number; }private:int number; };// 加法表达式类 class AddExpression : public Expression { public:// 构造函数AddExpression(Expression* left, Expression* right) : left(left), right(right) {}// 解释virtual int interpret() { return left-interpret() right-interpret(); }private:Expression* left;Expression* right; };// 减法表达式类 class SubExpression : public Expression { public:// 构造函数SubExpression(Expression* left, Expression* right) : left(left), right(right) {}// 解释virtual int interpret() { return left-interpret() - right-interpret(); }private:Expression* left;Expression* right; };// 解释器类 class Interpreter { public:// 构造函数Interpreter(string exp) : expression(exp) {}// 解释int interpret() {stackExpression* s;// 遍历表达式字符for (int i 0; i expression.length(); i) {if (isdigit(expression[i])) {// 识别数字int j i;while (j expression.length() isdigit(expression[j])) {j;}int num stoi(expression.substr(i, j - i));s.push(new NumberExpression(num));i j - 1;}else if (expression[i] ) {// 把左数提取出来Expression* left s.top();s.pop();// 识别右数int j i 1;while (j expression.length() isdigit(expression[j])) {j;}Expression* right new NumberExpression(stoi(expression.substr(i 1, j - (i 1))));// 左数右数的表达式放入栈中s.push(new AddExpression(left, right));i j - 1;}else if (expression[i] -) {// 把左数提取出来Expression* left s.top();s.pop();// 识别右数int j i 1;while (j expression.length() isdigit(expression[j])) {j;}Expression* right new NumberExpression(stoi(expression.substr(i 1, j - (i 1))));// 左数-右数的表达式放入栈中s.push(new SubExpression(left, right));i j - 1;}}return s.top()-interpret();}private:string expression; }; //main.cpp /****************************************************/ #include iostream #include string #include unordered_map #include Interpreter.husing namespace std;int main() {unordered_mapstring, int variables;string input;while (getline(cin, input)) {cout input: input endl;Interpreter interpreter(input);variables[input] interpreter.interpret();cout result: variables[input] endl;}return 0; }程序结果如下。 上述实现的简易计算器也是许多大学C/C课程中的大作业记得以前用MFC实现了一款计算器开心了老半天哈哈梦回大学。感兴趣的同学也可以试试复杂计算器比如引入了括号还有各类运算符。 三、总结 我尽可能用较通俗的话语和直观的代码例程来表述我对解释器模式的理解或许有考虑不周到的地方如果你有不同看法欢迎评论区交流希望我举的例子能帮助你更好地理解解释器模式。 如果文章帮助到你了可以点个赞让我知道我会很快乐~加油
http://www.hyszgw.com/news/118740/

相关文章:

  • 律师微网站制作loop wordpress
  • 专注于网站营销服务高端品牌型 营销型网站建设
  • 微信建设网站哪家好怎么用page打开wordpress
  • 如何在自己电脑上做网站服务器珠海建站公司
  • 合肥大型网站建设公司国外免费舆情网站有哪些软件
  • 游戏网站的导航条怎么做的杭州百度快速排名提升
  • 门户网站是o2o平台都有哪些
  • 广东省建设执业资格注册中心网站西安门户网
  • 贵阳网站建设培训ps5如何定制网络
  • 环保网站建设项目备案系统网站建设与推广范文
  • 关于网站开发人员的薪资建设网络课程平台费用
  • 同城app开发多少钱优化网站制作方法大全
  • 目前网站开发趋势宜昌当阳网站开发
  • 鄂尔多斯市建设厅网站网站建设实训报告
  • 分类网站建设海淀区做网站厂家
  • 中小企业网站的建设实践报告土地流转网站建设项目
  • 西宁电子商务网站建设广州网道营销广告有限公司
  • 苏州资讯网站建设wordpress手机商城
  • 网站建设的摊销企业展示型网站怎么建
  • 学做ppt推荐网站郑州最近新闻事件
  • 什么软件可以找做网站的制作企业网站与app有什么不同
  • 汽车音响网站建设长沙seo推广优化
  • 美术网站建设方案湛江人才网招聘官方网
  • 西宁大型网站建设淄博网站建设兼职
  • php企业网站源码推荐游戏外包公司要不要去
  • 广州网站建设招聘阿里云做网站教程
  • 电商网站开发报告网站规划建设与推广
  • 做网站花了三万块wordpress修改密码
  • 深圳市 交易建设中心网站网站空间使用方法
  • 网站做哪些比较有意思大型网站建站公司