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

门户网站建设中存在的问题伟哥seo博客

门户网站建设中存在的问题,伟哥seo博客,销售管理系统业务流程图,dede自定义网站地图定义 给定一个语言,定义它的文法的一种表示,并定义一种解释器,这个解释器使用该表示来解释语言中的句子。 应用场景 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构不断重复出现,如果使用…

定义

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

应用场景

  • 在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。
  • 在这种情况下,将特定领域的问题表达为某种语法规则下的句子,然后构建一个解释器来解释这样的句子,从而达到解决问题的目的。

结构

在这里插入图片描述

代码示例

//Interpreter.h
/****************************************************/
#ifndef INTERPRETER_H
#define INTERPRETER_H
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <stack>using 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() {stack<Expression*> 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;
};#endif
//test.cpp
/****************************************************/
#include "Interpreter.h"#include <unordered_map>
int main()
{unordered_map<string, 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;
}

运行结果
在这里插入图片描述

要点总结

  • Interpreter模式的应用场合是Interpreter模式应用中的难点,只有满足“业务规则频繁变化,且类似的结构不断重复出现,并且容易抽象为语法规则的问题”才适合使用Interpreter模式。
  • 使用Interpreter模式来表示文法规则,从而可以使用面向对象技巧来方便地“扩展”文法。
  • Interpreter模式比较适合简单的文法表示,对于复杂的文法表示,Interperter模式会产生比较大的类层次结构,需要求助于语法分析生成器这样的标准工具。
http://www.mmbaike.com/news/107684.html

相关文章:

  • 网站背景图片素材小学生收集的新闻10条
  • 做网站前期工作做网站哪个公司最好
  • 如何做招聘网站运营火蝠电商代运营靠谱吗
  • 做app网站需要什么条件爱站网关键词挖掘工具熊猫
  • 做网站选云服务器内核百度指数的数据来源
  • 万网做网站多少钱电商网站设计论文
  • 网站界面设计需求班级优化大师免费下载
  • 代做电大网站ui作业网络营销的工作内容包括哪些
  • 余姚网站建设设计云搜索
  • 粉红色的网站首页测试自己适不适合做销售
  • 政府部门网站集约化建设方案域名注册需要什么条件
  • 鼓楼做网站公司哪家好申请网站怎样申请
  • 门户论坛模板seo搜索优化是什么
  • 做黑帽需不需要搭建网站seo搜索引擎优化实训报告
  • 织梦网站地图生成网络营销策划书800字
  • 无锡 做公司网站今日头条热搜榜前十名
  • 前端如何做双语网站橘子seo历史查询
  • 音乐网站html模板app营销策略有哪些
  • 房屋经纪人网站端口怎么做互联网全媒体广告代理
  • 用新域名做网站排名快吗网络推广外包联系方式
  • 做哪类视频网站需要视频牌照灵宝seo公司
  • 优化推广网站淄博最佳搜索引擎磁力
  • 网站服务器如何做热备价怎么做网站广告
  • 中华人民共和国政府网官网长春seo快速排名
  • 我想找网站帮忙做宣传国外网站怎么推广
  • 缪斯设计公司广州网站排名专业乐云seo
  • 人才网站开发文档网站建设公司推荐
  • 网站建设公司浩森宇特制作网站建设入门
  • 芜湖营销网站建设网络整合营销是什么意思
  • 一个人可以建设网站吗免费b站网页推广