创建自己的语言:解释器模式.ppt_第1页
创建自己的语言:解释器模式.ppt_第2页
创建自己的语言:解释器模式.ppt_第3页
创建自己的语言:解释器模式.ppt_第4页
创建自己的语言:解释器模式.ppt_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第16章 创建自己的语言:解释器模式,16.1 创建自己的语言解释器,16.2 模式定义,16.3 模式分析,16.4 模式实现,16.5 设计原则,16.6 使用场合,16.7 本章要点,16.1 创建自己的语言解释器,先简单地定义一下“myida”语言的语法规则: (1)“myida”语言区分大小写; (2)“myida”语言以PROGRAM开头,END结尾; (3)PRINTLN表示打印一行并换行; (4)使用FORFROMTOEND表示循环。 示例语言内容如下: PROGRAM PRINTLN start. FOR i FROM 90 TO 100 PRINTLN i END PRIN

2、TLN end.END 该句表示的意思是:首先打印“start”换行,然后循环打印“90”换行、“91”换行、“100”换行,最后打印“end”换行。,16.2 模式定义,解释器模式(Interpreter Pattern),就是给定一个语言的文法表示,并且定义一个解释器,用来解释语言中的句子。解释器模式描述了怎样在有了一个简单的文法后,使用模式设计解释这些语句。,16.3 模式分析,16.3.1 “myida”语言分析 (1)以PROGRAM开头。 (2)存在两种语句:基础语句和复杂语句。 (3)语言的主体部分应该是一个待执行的列表语句集合。 (4)复杂语句中含有的是一个列表语句集合,如示例

3、中的FOR语句中就含有PRINTLN语句。 (5)语言的解释执行是一个递归调用的过程,其中的每一个语句都会递归解释执行,直到一个最基础的语句被执行,然后返回。 (6)以END结尾。,16.3.1 “myida”语言分析,可以得出“myida”语言的解释树结构图,如图16-1所示。,16.3.2 “myida”语言解释器原理,按照“myida”语言的解释结构图,以及语法规则描述的内容,我们很容易得到“myida”语言解释器的活动图,如图16-2所示。,16.4 模式实现,16.4.1 创建上下文环境 16.4.2 创建解析表达式 1表达式接口IExpressions 2主表达式ProgramEx

4、pression 3列表表达式ListExpression 4命令表达式CommandExperssion 5循环表达式ForExpression 6基础表达式PrimitiveExpression 16.4.3 让“myida”语言解释器开始工作,16.5 设计原则,1“开-闭”原则 2封装变化部分,16.6 使用场合,(1)一种特定类型的问题发生的频率足够高,并且业务规则频繁变化,不断重复出现类似情况。 (2)业务规则不是过于复杂烦琐,比较容易抽象出语法规则。 (3)效率不是软件系统中主要考虑的因素。,16.6 使用场合,来看一下解释器模式的静态类图,加深对解释器模式的理解,如图16-5所示。,16.6 使用场合,1解释器模式中的角色 2扩展1:Java SDK中的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论