- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
自定义语言的实现——解释器模式,c语言解释器的实现,c语言解释器,解释器模式,语言解释器,解释器模式java,python解释器实现,c解释器模式,类c语言解释器,脚本语言解释器
?????自定义语言的实现——解释器模式
/lovelion/article/details/7713567有朋友一直在等待我的解释器模式文稿,,现把某个版本发在博客上,欢迎大家讨论!
?????? 虽然目前计算机编程语言有好几百种,但有时候我们还是希望能用一些简单的语言来实现一些特定的操作,我们只要向计算机输入一个句子或文件,它就能够按照预先定义的文法规则来对句子或文件进行解释,从而实现相应的功能。例如提供一个简单的加法/减法解释器,只要输入一个加法/减法表达式,它就能够计算出表达式结果,如图18-1所示,当输入字符串表达式为“1 + 2 + 3 – 4 + 1”时,将输出计算结果为3。
图18-1? 加法/减法解释器示意图
?????? 我们知道,像C++、Java和C#等语言无法直接解释类似“1+ 2 + 3 – 4 + 1”这 样的字符串(如果直接作为数值表达式时可以解释),我们必须自己定义一套文法规则来实现对这些语句的解释,即设计一个自定义语言。在实际开发中,这些简单 的自定义语言可以基于现有的编程语言来设计,如果所基于的编程语言是面向对象语言,此时可以使用解释器模式来实现自定义语言。
18.1 机器人控制程序
?????? Sunny软件公司欲为某玩具公司开发一套机器人控制程序,在该机器人控制程序中包含一些简单的英文控制指令,每一个指令对应一个表达式(expression),该表达式可以是简单表达式也可以是复合表达式,每一个简单表达式由移动方向(direction),移动方式(action)和移动距离(distance)三部分组成,其中移动方向包括上(up)、下(down)、左(left)、右(right);移动方式包括移动(move)和快速移动(run);移动距离为一个正整数。两个表达式之间可以通过与(and)连接,形成复合(composite)表达式。
?????? 用户通过对图形化的设置界面进行操作可以创建一个机器人控制指令,机器人在收到指令后将按照指令的设置进行移动,例如输入控制指令:up move 5,则“向上移动5个单位”;输入控制指令:down? run 10 and left move 20,则“向下快速移动10个单位再向左移动20个单位”。 ?????? Sunny软件公司开发人员决定自定义一个简单的语言来解释机器人控制指令,根据上述需求描述,用形式化语言来表示该简单语言的文法规则如下:
expression ::= direction action distance | composite //表达式
composite ::= expression and expression //复合表达式
direction ::= up | down | left | right //移动方向
action ::= move | run //移动方式
distance ::= an integer //移动距离 ?????? 上述语言一共定义了五条文法规则,对应五个语言单位,这些语言单位可以分为两类,一类为终结符(也称为终结符表达式),例如direction、action和distance,它们是语言的最小组成单位,不能再进行拆分;另一类为非终结符(也称为非终结符表达式),例如expression和composite,它们都是一个完整的句子,包含一系列终结符或非终结符。
?????? 我们根据上述规则定义出的语言可以构成很多语句,计算机程序将根据这些语句进行某种操作。为了实现对语句的解释,可以使用解释器模式,在解释器模式中每一 个文法规则都将对应一个类,扩展、改变文法以及增加新的文法规则都很方便,下面就让我们正式进入解释器模式的学习,看看使用解释器模式如何来实现对机器人 控制指令的处理。
18.2 文法规则和抽象语法树
?????? 解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。在正式分析解释器模式结构之前,我们先来学习如何表示一个语言的文法规则以及如何构造一棵抽象语法树。
?????? 在前面所提到的加法/减法解释器中,每一个输入表达式,例如“1 + 2 + 3 – 4 + 1”,都包含了三个语言单位,可以使用如下文法规则来定义:
expression ::= value | operation
operation ::= expression + expression | expression -? expression
value ::= an integer //一个整数值 ?????? 该文法规则包含三条语句,第一条表示表达式的组成方式,其中value和operation是后面两个语言单位的定义,每一条语句所定义的字符串如operatio
您可能关注的文档
- 股票小常识.doc
- 股票术语英汉对照表.doc
- 股经:大智慧交易系统指标的编制.doc
- 股骨头坏死的功能锻炼.ppt
- 肥胖高血压患者的饮食方法.doc
- 肩膀酸痛原因及解决方法?.doc
- 肺功能检查指标及其临床意义.doc
- 肺栓塞诊治临床思维(蔡映云).ppt
- 肺癌的五大肺外症状.doc
- 肽的生产方法和肽产品中苦味的消除措施.doc
- 年产50万顶户外帐篷生产线项目可行性研究报告模板-拿地立项申报.doc
- 年产100万立方蒸压加气制品节能减碳及固废综合利用改造项目可行性研究报告模板-申批备案.doc
- 年产5000吨菌草生物质纤维产业化研发中试项目可行性研究报告模板申批拿地用.doc
- 年产体外受精显微操作管项目可行性研究报告模板拿地备案立项.doc
- 年产5000吨冷拉扁钢项目可行性研究报告模板-立项备案.doc
- 年产600吨PAVE中试项目可行性研究报告模板拿地申报.doc
- 信阳市2024-2025学年七年级英语下学期期末考试试题(附答案).docx
- 年产100万台人形机器人及汽车行星滚柱丝杠产业化项目可行性研究报告模板-立项拿地.doc
- 年产1200万米塑料软管项目可行性研究报告模板申批拿地用.doc
- 年产3万台套人形机器人关节模组产业化项目可行性研究报告模板-拿地备案.doc
最近下载
- 《福建省建筑工程施工文件管理规程》(DBJT13-56-2011).docx VIP
- 九年级上册体育《足球-运球绕杆》单元作业设计 (优质案例22页) .pdf VIP
- 老年人健康体检情况分析报告65岁老年人健康体检分析报告.pdf VIP
- IPC-AJ-820A 中文 CN 组装和连接手册 2012.pdf VIP
- 酱酒知识培训资料.docx VIP
- 监督检查消防设施整改方案.docx VIP
- 制造业信息系统安全应急计划.docx VIP
- 防控基孔肯雅热2025年秋季开学第一课.pptx VIP
- Canon佳能数码摄像机HG HV系列HG21HG20 HG21 使用说明书.pdf
- 校园防欺凌教师培训资料(3篇).docx VIP
文档评论(0)