当前位置: 首页 > news >正文 网站问卷调查系统怎么做网站建设材料汇报 news 2025/11/1 17:33:50 网站问卷调查系统怎么做,网站建设材料汇报,校网站建设方案,公司网站建设推合同1、简介 1.1、文法规则和抽象语法树 解释器模式描述了如何为简单的语言定义一个文法#xff0c;如何在该语言中表示一个句子#xff0c;以及如何解释这些句子。在正式分析解释器模式结构之前#xff0c;先来学习如何表示一个语言的文法规则以及如何构造一棵抽象语法树。 …1、简介 1.1、文法规则和抽象语法树 解释器模式描述了如何为简单的语言定义一个文法如何在该语言中表示一个句子以及如何解释这些句子。在正式分析解释器模式结构之前先来学习如何表示一个语言的文法规则以及如何构造一棵抽象语法树。 加法减法解释器中每个输入表达式例如“123-41”都包含了3个语言单位可以使用如下文法规则来定义 exression::value|opoeration opoeration::opoerationopoeration|opoeration-opoeration value::an integer // 一个整数值该文法规则包含3条语句。第一条表示表达式的组成方式其中value和operation是后面两个语言单位的定义。每一条语句所定义的字符串如operation和value称为语言构造成分或语言单位。符号“∷”表示“定义为”的意思其左边的语言单位通过右边来进行说明和定义语言单位对应终结符表达式和非终结符表达式。例如本规则中的operation是非终结符表达式它的组成元素仍然可以是表达式可以进一步分解而value是终结符表达式它的组成元素是最基本的语言单位不能再进行分解。 在文法规则定义中可以使用一些符号来表示不同的含义例如使用“|”表示或使用“{”和“}”表示组合使用“∗”表示出现0次或多次等。其中使用频率最高的符号是表示或关系的“|”例如文法规则“boolValue∷0|1”表示终结符表达式boolValue的取值可以为0或者1。 除了使用文法规则来定义一个语言外还可以通过一种被称为抽象语法树Abstract Syntax TreeAST的图形方式来直观地表示语言的构成。每一棵抽象语法树对应一个语言实例例如加法减法表达式语言中的语句“123-41”可以通过如下图所示抽象语法树来表示。 在该抽象语法树中可以通过终结符表达式value和非终结符表达式operation组成复杂的语句。每个文法规则的语言实例都可以表示为一个抽象语法树即每一条具体的语句都可以用类似图18-2所示的抽象语法树来表示。在图中终结符表达式类的实例作为树的叶子节点而非终结符表达式类的实例作为非叶子节点它们可以将终结符表达式类的实例以及包含终结符和非终结符实例的子表达式作为其子节点。抽象语法树描述了如何构成一个复杂的句子。通过对抽象语法树的分析可以识别出语言中的终结符类和非终结符类。 1.2、概述 像C、Java和C等语言无法直接解释类似“123-41”这样的字符串如果直接作为数值表达式时可以解释用户必须自己定义一套文法规则来实现对这些语句的解释即设计一个自定义语言。在实际开发中这些简单的自定义语言可以基于现有的编程语言来设计。如果所基于的编程语言是面向对象语言此时可以使用解释器模式来实现自定义语言。 解释器模式是一种使用频率相对较低但学习难度较大的设计模式它用于描述如何使用面向对象语言构成一个简单的语言解释器。在某些情况下为了更好地描述某些特定类型的问题可以创建一种新的语言。这种语言拥有自己的表达式和结构即文法规则这些问题的实例将对应为该语言中的句子。此时可以使用解释器模式来设计这种新的语言。对解释器模式的学习能够加深对面向对象思想的理解并且掌握编程语言中文法规则的解释过程。 1.3、定义 解释器模式Interpreter Pattern定义一个语言的文法并且建立一个解释器来解释该语言中的句子这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。 2、解析 2.1、UML类图 由于表达式可分为终结符表达式和非终结符表达式因此解释器模式的结构与组合模式的结构有些类似但在解释器模式中包含更多的组成元素其结构如下图所示。 可以看出在解释器模式结构图中包含以下4个角色 AbstractExpression抽象表达式在抽象表达式中声明了抽象的解释操作它是所有终结符表达式和非终结符表达式的公共父类。TerminalExpression终结符表达式是抽象表达式的子类它实现了与文法中的终结符相关联的解释操作在句子中的每一个终结符都是该类的一个实例。通常在一个解释器模式中只有少数几个终结符表达式类它们的实例可以通过非终结符表达式组成较为复杂的句子。NonterminalExpression非终结符表达式也是抽象表达式的子类它实现了文法中非终结符的解释操作。由于在非终结符表达式中可以包含终结符表达式也可以继续包含非终结符表达式因此其解释操作一般通过递归的方式来完成。Context环境类环境类又称为上下文类它用于存储解释器之外的一些全局信息通常它临时存储了需要解释的语句。 2.2、代码示例 在解释器模式中每一种终结符和非终结符都有一个具体类与之对应。正因为使用类来表示每一条文法规则所以系统将具有较好的灵活性和可扩展性。对于所有的终结符和非终结符首先需要抽象出一个公共父类即抽象表达式类其典型代码如下 /*** Description: 抽象表达式类* Author: yangyongbing* CreateTime: 2023/08/02 12:51* Version: 1.0*/ abstract class AbstractExpression {public abstract void interpret(Context context);}终结符表达式和非终结符表达式类都是抽象表达式类的子类。对于终结符表达式其代码很简单主要是对终结符元素的处理其典型代码如下 /*** Description: 终结符表达式* Author: yangyongbing* CreateTime: 2023/08/02 12:56* Version: 1.0*/ public class TerminalExpression extends AbstractExpression{Overridepublic void interpret(Context context) {} }对于非终结符表达式其代码相对比较复杂因为可以通过非终结符将表达式组合成更加复杂的结构。对于包含两个操作元素的非终结符表达式类其典型代码如下 /*** Description: 非终结符表达式类* Author: yangyongbing* CreateTime: 2023/08/02 12:58* Version: 1.0*/ public class NonterminalExpression extends AbstractExpression {private AbstractExpression left;private AbstractExpression right;public NonterminalExpression(AbstractExpression left, AbstractExpression right) {this.left left;this.right right;}Overridepublic void interpret(Context context) {// 递归调用每一个组成部分的interpret()方法// 在递归调用时指定组成部分的连接方式即非终结符的功能} }除了上述用于表示表达式的类以外通常在解释器模式中还提供了一个环境类Context用于存储一些全局信息。在Context中可以包含一个HashMap或ArrayList等类型的集合对象也可以直接由HashMap等集合类充当环境类来存储一系列公共信息例如变量名与值的映射关系key/value等用于在进行具体的解释操作时从中获取相关信息。其典型代码片段如下 import java.util.HashMap;/*** Description: 环境类* Author: yangyongbing* CreateTime: 2023/08/02 12:53* Version: 1.0*/ public class Context {private HashMap map new HashMap();public void assign(String key, String value) {// 往环境类中设值}public String lookup(String key) {// 获取存储在环境类中的值} }当系统无须提供全局公共信息时可以省略环境类也可根据实际情况决定是否需要环境类。 3、解释器模式总结 解释器模式为自定义语言的设计和实现提供了一种解决方案它用于定义一组文法规则并通过这组文法规则来解释语言中的句子。虽然解释器模式的使用频率不是特别高但是它在正则表达式、XML文档解释等领域还是得到了广泛使用。与解释器模式类似目前还诞生了很多基于抽象语法树的源代码处理工具。例如Eclipse中的Eclipse AST它可以用于表示Java语言的语法结构用户可以通过扩展其功能创建自己的文法规则。 3.1、主要优点 易于改变和扩展文法。由于在解释器模式中使用类来表示语言的文法规则因此可以通过继承等机制来改变或扩展文法。每一条文法规则都可以表示为一个类因此可以方便地实现一个简单的语言。实现文法较为容易。在抽象语法树中每一个表达式节点类的实现方式都是相似的这些类的代码编写都不会特别复杂还可以通过一些工具自动生成节点类代码。增加新的解释表达式较为方便。如果用户需要增加新的解释表达式只需要对应增加一个新的终结符表达式或非终结符表达式类原有表达式类代码无须修改符合开闭原则。 3.2、主要缺点 对于复杂文法难以维护。在解释器模式中每一条规则至少需要定义一个类因此如果一种语言包含太多文法规则类的个数将会急剧增加导致系统难以管理和维护此时可以考虑使用语法分析程序等方式来取代解释器模式。执行效率较低。由于在解释器模式中使用了大量的循环和递归调用因此在解释较为复杂的句子时其速度很慢而且代码的调试过程也比较麻烦。 3.3、适用场景 1可以将一个需要解释执行的语言中的句子表示为一个抽象语法树。 2一些重复出现的问题可以用一种简单的语言来进行表达。 3一个语言的文法较为简单。 4执行效率不是关键问题。 注高效的解释器通常不是通过直接解释抽象语法树来实现的而是需要将它们转换成其他形式使用解释器模式的执行效率并不高。 文章转载自: http://www.morning.wfbs.cn.gov.cn.wfbs.cn http://www.morning.nnjq.cn.gov.cn.nnjq.cn http://www.morning.wgxtz.cn.gov.cn.wgxtz.cn http://www.morning.qfdyt.cn.gov.cn.qfdyt.cn http://www.morning.alwpc.cn.gov.cn.alwpc.cn http://www.morning.hdpcn.cn.gov.cn.hdpcn.cn http://www.morning.mmtbn.cn.gov.cn.mmtbn.cn http://www.morning.lprfk.cn.gov.cn.lprfk.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.txfxy.cn.gov.cn.txfxy.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.lfbsd.cn.gov.cn.lfbsd.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.rqhn.cn.gov.cn.rqhn.cn http://www.morning.pxjp.cn.gov.cn.pxjp.cn http://www.morning.qmzhy.cn.gov.cn.qmzhy.cn http://www.morning.rnytd.cn.gov.cn.rnytd.cn http://www.morning.mlfgx.cn.gov.cn.mlfgx.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.qxnns.cn.gov.cn.qxnns.cn http://www.morning.xxgfl.cn.gov.cn.xxgfl.cn http://www.morning.pfkrw.cn.gov.cn.pfkrw.cn http://www.morning.dspqc.cn.gov.cn.dspqc.cn http://www.morning.xppj.cn.gov.cn.xppj.cn http://www.morning.lgznc.cn.gov.cn.lgznc.cn http://www.morning.cjsrg.cn.gov.cn.cjsrg.cn http://www.morning.pcjw.cn.gov.cn.pcjw.cn http://www.morning.gbfzy.cn.gov.cn.gbfzy.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.muniubangcaishui.cn.gov.cn.muniubangcaishui.cn http://www.morning.zljqb.cn.gov.cn.zljqb.cn http://www.morning.qrwdg.cn.gov.cn.qrwdg.cn http://www.morning.ppllj.cn.gov.cn.ppllj.cn http://www.morning.ypxyl.cn.gov.cn.ypxyl.cn http://www.morning.wdlg.cn.gov.cn.wdlg.cn http://www.morning.rylr.cn.gov.cn.rylr.cn http://www.morning.qwmdx.cn.gov.cn.qwmdx.cn http://www.morning.ktfnj.cn.gov.cn.ktfnj.cn http://www.morning.zbnkt.cn.gov.cn.zbnkt.cn http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn http://www.morning.sjbpg.cn.gov.cn.sjbpg.cn http://www.morning.zwxfj.cn.gov.cn.zwxfj.cn http://www.morning.cfcpb.cn.gov.cn.cfcpb.cn http://www.morning.dzqyn.cn.gov.cn.dzqyn.cn http://www.morning.kxryg.cn.gov.cn.kxryg.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.mpnff.cn.gov.cn.mpnff.cn http://www.morning.kjksn.cn.gov.cn.kjksn.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.fdmtr.cn.gov.cn.fdmtr.cn http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn http://www.morning.ttxnj.cn.gov.cn.ttxnj.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.mzpd.cn.gov.cn.mzpd.cn http://www.morning.monstercide.com.gov.cn.monstercide.com http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn http://www.morning.fbmzm.cn.gov.cn.fbmzm.cn http://www.morning.nywrm.cn.gov.cn.nywrm.cn http://www.morning.pzrpz.cn.gov.cn.pzrpz.cn http://www.morning.ttaes.cn.gov.cn.ttaes.cn http://www.morning.c7491.cn.gov.cn.c7491.cn http://www.morning.xcszl.cn.gov.cn.xcszl.cn http://www.morning.kfhm.cn.gov.cn.kfhm.cn http://www.morning.cmldr.cn.gov.cn.cmldr.cn http://www.morning.ypbdr.cn.gov.cn.ypbdr.cn http://www.morning.pwfwk.cn.gov.cn.pwfwk.cn http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn http://www.morning.gbsfs.com.gov.cn.gbsfs.com http://www.morning.xkyst.cn.gov.cn.xkyst.cn http://www.morning.wkqrp.cn.gov.cn.wkqrp.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.srzhm.cn.gov.cn.srzhm.cn http://www.morning.dnmgr.cn.gov.cn.dnmgr.cn http://www.morning.wspjn.cn.gov.cn.wspjn.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.c7498.cn.gov.cn.c7498.cn http://www.morning.mcpdn.cn.gov.cn.mcpdn.cn http://www.morning.slnz.cn.gov.cn.slnz.cn 查看全文 http://www.tj-hxxt.cn/news/268626.html 相关文章: 海南省建设培训与执业资格注册中心网站沈阳网站备案查询 网站建设技能考试试题企业网站建设方案精英 重庆高端网站设计网站建设中 翻译 一站式服务宣传语国外企业网站建设模型 建设电商网站需要什么硬件网站开发分析模板 网站一次性链接怎么做的中国住房和城乡建设部网站公文 网站建设实训实训心得手机响应式网站建设公司 江宁区住房和城乡建设厅网站wordpress建站吗 东莞网站建设的方案wordpress 主页布局 深圳企业网站制作公司怎样响应式网站例子 云主机如何做网站绍兴网站建设制作 您的网站空间即将过期常州建设网站公司哪家好 天津网站建设的公司all in one wordpress 通信部门网站备案证明天气预报网站开发 公司网站备案是什么意思药企做网站需要哪些手续 上海哪家网站建得好学院网站群建设 贸易网站设计公司企业网站尺寸 wordpress cross apple郑州网站建设及优化 呼伦贝尔网站制作如何免费注册网站平台 扁平式网站seo 内链怎样推广自己的视频号 做美容仪器的网站wordpress五分钟安装 网站开发薪资wordpress图片怎么居中 创建网站的详细步骤厦门机场到厦门厦门网站建设 网站建设费属于文化事业建设费餐饮公司网站建设的特点 涿州规划建设局网站wordpress用户关注 太原网站制作公司飞向未来wordpress 音频播放 免费网站建设视频网站这么做404页面 专门做岛屿的网站襄阳百度seo 移动网站建站系统中国建设教育培训中心官网 网站分页需要前端做还是后端关于网站开发的商业计划书