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

昆明网站建设要多少钱百度竞价渠道户

昆明网站建设要多少钱,百度竞价渠道户,谁家做电商商城网站便宜,会员管理系统怎么用模式定义 解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现…

模式定义

解释器模式(Interpreter Pattern)是一种行为型设计模式,用于为特定语言(如数控系统的G代码)定义文法规则,并构建解释器来解析和执行该语言的语句。它通过将语法规则分解为多个类,实现复杂指令的逐层解析。


模式结构

抽象表达式(Abstract Expression)

  • 定义interpret()接口,声明解释操作的抽象方法(如void interpret(Context& context))。
    终结符表达式(Terminal Expression)
  • 实现文法中的基本元素(如G代码指令G00G01),直接处理具体操作。
    非终结符表达式(Non-terminal Expression)
  • 处理复合语法结构(如嵌套指令组合),通过递归调用子表达式实现复杂逻辑。
    上下文(Context)
  • 存储解释器所需的全局信息(如机床坐标、刀具状态)。

适用场景

数控系统G代码解析:将G00 X100 Y200等指令转换为机床运动控制。
数学公式计算:解析并执行如(3+5)*2的表达式。
自定义脚本引擎:实现简单控制逻辑的脚本语言。


C++示例(数控G代码解析)

场景说明:
设计一个解释器,解析数控系统的G代码指令(如G00快速定位、G01直线插补),并更新机床坐标。

#include 
#include 
#include 
#include // 上下文类:存储机床坐标
class Context {
public:float x, y;Context() : x(0), y(0) {}
};// 抽象表达式
class Expression {
public:virtual void interpret(Context& context) = 0;virtual ~Expression() = default;
};// 终结符表达式:G00指令(快速移动)
class G00Command : public Expression {
private:float targetX, targetY;
public:G00Command(float x, float y) : targetX(x), targetY(y) {}void interpret(Context& context) override {context.x = targetX;context.y = targetY;std::cout << "快速定位至 (" << context.x << ", " << context.y << ")\n";}
};// 终结符表达式:G01指令(直线插补)
class G01Command : public Expression {
private:float targetX, targetY;
public:G01Command(float x, float y) : targetX(x), targetY(y) {}void interpret(Context& context) override {context.x = targetX;context.y = targetY;std::cout << "直线插补至 (" << context.x << ", " << context.y << ")\n";}
};// 解析器:将字符串指令转换为表达式对象
Expression* parseCommand(const std::string& input) {std::istringstream iss(input);std::string cmd;float x, y;iss >> cmd >> x >> y;if (cmd == "G00") return new G00Command(x, y);else if (cmd == "G01") return new G01Command(x, y);return nullptr;
}// 客户端使用
int main() {Context context;std::string code = "G00 100 200\nG01 300 150";  // 模拟G代码输入std::istringstream stream(code);std::string line;while (std::getline(stream, line)) {Expression* expr = parseCommand(line);if (expr) {expr->interpret(context);delete expr;}}return 0;
}

代码解析
上下文类:存储机床的当前坐标xy
表达式类:

  • G00CommandG01Command为终结符表达式,直接修改坐标并输出动作。
    解析逻辑:parseCommand将输入字符串拆解为指令和参数,生成对应表达式对象。
    执行过程:逐行解析G代码,调用interpret()更新坐标状态。
http://www.hkea.cn/news/335908/

相关文章:

  • 做网站的艰辛免费个人网站申请
  • 网站改版需要多久网站设计与制作毕业论文范文
  • 深圳横岗网站建设网站建设的推广渠道
  • 有没有什么网站免费做名片2023年新闻小学生摘抄
  • 新网金商网站外链查询工具
  • 网站建设的进度竞价托管选择微竞价
  • 网站快速网站推广怎么做一个公司网站
  • 旅游网站模板htmlseo品牌优化整站优化
  • 方圆网站建设aso优化重要吗
  • 做购实惠网站的意义好用的搜索引擎有哪些
  • 怎么把自己笔记本做服务器做个网站搭建网站基本步骤
  • jeecms做企业网站成都网站建设公司排名
  • 沈阳招聘网站开发地推项目平台
  • 798艺术区成都seo达人
  • 平度网站建设抖音代运营收费详细价格
  • 株洲网站优化找哪家seo优化的价格
  • 找印度人做网站sem竞价推广公司
  • 山西网站推广公司网站关键词优化怎么弄
  • 微信分销是什么重庆优化seo
  • 武汉企业网站推广方案永久免费无代码开发平台网站
  • 网站开发岗位群怎样推广产品
  • 桐城市美丽乡村建设专题网站石家庄整站优化技术
  • 北京建网站的公司哪个比较好郑州seo价格
  • 进空间的网站网络营销常见的工具
  • wordpress发文章的id怎么不连续如何做好搜索引擎优化工作
  • 交互式网站如何做seo推广软件排名
  • 西部建设网站惠州seo排名优化
  • 做环球资源网站有没有效果2024百度下载
  • 织梦 安装网站网站搭建需要多少钱
  • 做网站购买备案域名性价比高seo的排名优化