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

下载本文档

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

文档简介

1、第16章 创建自己的语言:解释器模式16.116.1 创建自己的语言解释器16.2 16.2 模式定义16.316.3 模式分析16.416.4 模式实现16.516.5 设计原则16.616.6 使用场合16.716.7 本章要点16.1 创建自己的语言解释器先简单地定义一下“myida”语言的语法规则:(1)“myida”语言区分大小写;(2)“myida”语言以program开头,end结尾;(3)println表示打印一行并换行;(4)使用forfromtoend表示循环。示例语言内容如下:program println start. for i from 90 to 100 prin

2、tln i end println end.end该句表示的意思是:首先打印“start”换行,然后循环打印“90”换行、“91”换行、“100”换行,最后打印“end”换行。16.216.2 模式定义解释器模式(interpreter pattern),就是给定一个语言的文法表示,并且定义一个解释器,用来解释语言中的句子。解释器模式描述了怎样在有了一个简单的文法后,使用模式设计解释这些语句。16.316.3 模式分析x16.3.1 16.3.1 “myidamyida”语言分析语言分析(1)以program开头。(2)存在两种语句:基础语句和复杂语句。(3)语言的主体部分应该是一个待执行的列

3、表语句集合。(4)复杂语句中含有的是一个列表语句集合,如示例中的for语句中就含有println语句。(5)语言的解释执行是一个递归调用的过程,其中的每一个语句都会递归解释执行,直到一个最基础的语句被执行,然后返回。(6)以end结尾。16.3.1 16.3.1 “myidamyida”语言分析语言分析可以得出“myida”语言的解释树结构图,如图16-1所示。16.3.2 16.3.2 “myidamyida”语言解释器原理语言解释器原理按照“myida”语言的解释结构图,以及语法规则描述的内容,我们很容易得到“myida”语言解释器的活动图,如图16-2所示。16.416.4 模式实现x1

4、6.4.1 16.4.1 创建上下文环境创建上下文环境x16.4.2 16.4.2 创建解析表达式创建解析表达式1 1表达式接口表达式接口iexpressionsiexpressions2 2主表达式主表达式programexpressionprogramexpression3 3列表表达式列表表达式listexpressionlistexpression4 4命令表达式命令表达式commandexperssioncommandexperssion5 5循环表达式循环表达式forexpressionforexpression6 6基础表达式基础表达式primitiveexpressionpri

5、mitiveexpressionx16.4.3 16.4.3 让让“myidamyida”语言解释器开始工作语言解释器开始工作16.516.5 设计原则1 1“开开- -闭闭”原则原则2 2封装变化部分封装变化部分16.6 16.6 使用场合使用场合(1)一种特定类型的问题发生的频率足够高,并且业务规则频繁变化,不断重复出现类似情况。(2)业务规则不是过于复杂烦琐,比较容易抽象出语法规则。(3)效率不是软件系统中主要考虑的因素。16.6 16.6 使用场合使用场合来看一下解释器模式的静态类图,加深对解释器模式的理解,如图16-5所示。16.6 16.6 使用场合使用场合1 1解释器模式中的角色解释器模式中的角色2 2扩展扩展1 1:java sdkjava sdk中的解释器模式中的解释器模式3 3扩展扩展2 2:相关的设计模式:相关的设计模式16

温馨提示

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

评论

0/150

提交评论