版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大纲(dgng)w 解释器模式概述w 文法规则和抽象语法树w 解释器模式的结构与实现w 解释器模式的应用实例w 解释器模式的优缺点与适用(shyng)环境第1页/共25页第一页,共25页。解释器模式(msh)概述 加法( jif)/减法解释器示意图第2页/共25页第二页,共25页。解释器模式(msh)概述 分析 C#语言无法直接解释( jish)类似“1 + 2 + 3 4 + 1”这样的字符串 定义一套文法规则来实现对这些语句的解释( jish),即设计一个自定义语言 基于现有的编程语言 面向对象编程语言 解释( jish)器模式第3页/共25页第三页,共25页。解释器模式(msh)概述 解
2、释器模式的定义(dngy) 类行为型模式解释器模式:解释器模式:给定一个语言,定义它的文法的一种表示定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的解释语言中的句子句子。Interpreter Pattern: Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.第4页/共25页第四页,共25页。解释器模式(msh)概
3、述 解释器模式的定义 在解释器模式的定义中所指的“语言”是使用规定格式和语法的代码 是一种(y zhn)使用频率相对较低但学习难度相对较大的设计模式,用于描述如何使用面向对象语言构成一个简单的语言解释器 能够加深对面向对象思想的理解,并且理解编程语言中文法规则的解释过程第5页/共25页第五页,共25页。文法规则(guz)和抽象语法树 文法规则 1 + 2 + 3 4 + 1 “:=”表示“定义为” “|”表示“或” “”和“”表示“组合(zh)” “*”表示“出现0次或多次”expression := value | operationoperation := expression + exp
4、ression | expression - expressionvalue := an integer /一个整数值第6页/共25页第六页,共25页。文法规则和抽象(chuxing)语法树 抽象语法树 抽象语法树(Abstract Syntax Tree, AST) 描述了如何构成一个(y )复杂的句子,通过对抽象语法树的分析,可以识别出语言中的终结符类和非终结符类非终结符表达式终结符表达式第7页/共25页第七页,共25页。解释器模式的结构(jigu)与实现 解释器模式(msh)的结构第8页/共25页第八页,共25页。解释器模式的结构(jigu)与实现 解释器模式的结构 解释器模式包含以下(
5、yxi)4个角色: AbstractExpression(抽象表达式) TerminalExpression(终结符表达式) NonterminalExpression(非终结符表达式) Context(环境类)第9页/共25页第九页,共25页。解释器模式的结构(jigu)与实现 解释器模式的实现 典型的抽象(chuxing)表达式类代码:abstract class AbstractExpression public abstract void Interpret(Context ctx);第10页/共25页第十页,共25页。解释器模式(msh)的结构与实现 解释器模式(msh)的实现 典型
6、的终结符表达式类代码:class TerminalExpression : AbstractExpression public override void Interpret(Context ctx) /终结符表达式的解释操作 第11页/共25页第十一页,共25页。解释器模式(msh)的结构与实现 解释器模式(msh)的实现 典型的非终结符表达式类代码:class NonterminalExpression : AbstractExpressionprivate AbstractExpression left;private AbstractExpression right;public No
7、nterminalExpression(AbstractExpression left, AbstractExpression right) this.left = left;this.right = right;public override void Interpret(Context ctx) /递归调用每一个组成部分的递归调用每一个组成部分的interpret()方法方法 /在递归调用时指定组成部分的连接方式,即非终结符的功能在递归调用时指定组成部分的连接方式,即非终结符的功能第12页/共25页第十二页,共25页。解释器模式的结构(jigu)与实现 解释器模式的实现 环境类Contex
8、t: 用于存储一些全局信息,一般包含一个Hashtable或List等类型的集合对象(也可以直接由Hashtable等集合类充当环境类),存储一系列公共信息,例如变量名与值的映射关系(gun x)(key/value)等,用于在执行具体的解释操作时从中获取相关信息 可以在环境类中增加一些所有表达式解释器都共有的功能,以减轻解释器的职责 当系统无须提供全局公共信息时可以省略环境类,根据实际情况决定是否需要环境类第13页/共25页第十三页,共25页。解释器模式(msh)的结构与实现 解释器模式的实现 典型的环境(hunjng)类代码:using System.Collections;class C
9、ontext private Hashtable ht = new Hashtable(); /往集合对象中设值 public void Assign(string key, string value) ht.Add(key,value); /获取存储在集合对象中的值 public string Lookup(string key) return (string)htkey; 第14页/共25页第十四页,共25页。解释器模式(msh)的应用实例 实例(shl)说明某软件公司要开发一套机器人控制程序,在该机器人控制程序中包含一些简单的英文控制指令,每一个指令对应一个表达式(expression)
10、,该表达式可以是简单表达式也可以是复合表达式。每一个简单表达式由移动方向(direction),移动方式(action)和移动距离(distance)三部分组成,其中,移动方向包括向上(up)、向下(down)、向左(left)、向右(right);移动方式包括移动(move)和快速移动(run);移动距离为一个正整数。两个表达式之间可以通过与(and)连接,形成复合(composite)表达式。用户通过对图形化的设置界面进行操作可以创建一个机器人控制指令,机器人在收到指令后将按照指令的设置进行移动,例如输入控制指令“up move 5”将“向上移动5个单位”;输入控制指令“down run
11、10 and left move 20”将“向下快速移动10个单位再向左移动20个单位”。现使用解释器模式来设计该程序并模拟实现。第15页/共25页第十五页,共25页。解释器模式(msh)的应用实例 实例分析及类图 文法规则(guz) 终结符表达式direction、action和distance对应DirectionNode类、ActionNode类和DistanceNode类 非终结符表达式expression和composite对应SentenceNode类和AndNode类expression := direction action distance | composite /表达式c
12、omposite := expression and expression /复合表达式direction := up | down | left | right /移动方向action := move | run /移动方式distance := an integer /移动距离第16页/共25页第十六页,共25页。解释器模式的应用(yngyng)实例 实例(shl)分析及类图 抽象语法树 down run 10 and left move 20第17页/共25页第十七页,共25页。解释器模式(msh)的应用实例 实例(shl)分析及类图机器人控制程序结构图第18页/共25页第十八页,共25
13、页。解释器模式(msh)的应用实例 实例代码 (1) AbstractNode:抽象结点类,充当抽象表达式角色 (2) AndNode:And结点类,充当非终结符表达式角色 (3) SentenceNode:简单句子结点类,充当非终结符表达式角色 (4) DirectionNode:方向结点类,充当终结符表达式角色 (5) ActionNode:动作结点类,充当终结符表达式角色 (6) DistanceNode:距离结点类,充当终结符表达式角色 (7) InstructionHandler:指令处理(chl)类,工具类 (8) Program:客户端测试类演示演示参考参考(cnko)代码代码
14、(DesignPatternInterpreterSample)第19页/共25页第十九页,共25页。解释器模式(msh)的应用实例 结果( ji gu)及分析down run 10 and left move 20up move 5 and down run 10 and left move 5第20页/共25页第二十页,共25页。解释器模式(msh)的优缺点与适用环境 模式优点 易于改变和扩展文法(wnf) 可以方便地实现一个简单的语言 实现文法(wnf)较为容易(有自动生成工具) 增加新的解释表达式较为方便第21页/共25页第二十一页,共25页。解释器模式的优缺点与适用(shyng)环境 模式缺点 对于复杂文法难
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届内蒙古乌兰察布市名校物理九上期末教学质量检测模拟试题含解析
- 2026中国汽车MCU芯片短缺背景下供应链重构策略
- 2026石榴粥行业市场供需分析及投资评估规划分析研究报告
- 2026中国网球行业市场分析供需及投资评估规划分析研究报告
- 2026中国工业软件云化转型与制造业数字孪生系统实施路径报告
- 2027届山东省曲阜市昌平中学九年级化学第一学期期末联考试题含解析
- 2026生产行业市场深度调研与发展规划与投资战略研究报告
- 2026生物医药行业市场动态分析及发展方向与投资管理策略研究报告
- 2026江西吉安市中医院面向社会招聘聘用制医师3人考前冲刺密卷及答案详解(各地真题)
- 2026年福建省漳州开发区公开招聘编内教师18人笔试题库带答案详解(夺分金卷)
- 关键员工培育管理办法
- 离婚房屋过户子女协议书
- 口腔耗材管理指南
- 输变电工程多维立体参考价(2025年版)
- PE室外给水管道安装施工组织设计
- 《雅思阅读》课件
- 心外科临床小讲课
- 计算机基础教程电子版
- 《统计分析与SPSS的应用(第7版)》课件 第7-12章 SPSS的非参数检验-SPSS的判别分析
- 电子信息导论第七章控制科学与工程
- 石油化工设备维护检修规程设备完好标准SHS010012023年
评论
0/150
提交评论