创建自己的语言:解释器模式

创建自己的语言:解释器模式

ID:39321860

大小:500.50 KB

页数:12页

时间:2019-06-30

创建自己的语言:解释器模式_第1页
创建自己的语言:解释器模式_第2页
创建自己的语言:解释器模式_第3页
创建自己的语言:解释器模式_第4页
创建自己的语言:解释器模式_第5页
资源描述:

《创建自己的语言:解释器模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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)使用FOR…FROM…TO…END表示循环。示例语言内容如下:PROGRAMPRINTLNstart...FORiFROM90TO100PRINTLNiENDPRINTLN

2、end...END该句表示的意思是:首先打印“start…”换行,然后循环打印“90”换行、“91”换行、……“100”换行,最后打印“end…”换行。16.2模式定义解释器模式(InterpreterPattern),就是给定一个语言的文法表示,并且定义一个解释器,用来解释语言中的句子。解释器模式描述了怎样在有了一个简单的文法后,使用模式设计解释这些语句。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.表

4、达式接口——IExpressions2.主表达式——ProgramExpression3.列表表达式——ListExpression4.命令表达式——CommandExperssion5.循环表达式——ForExpression6.基础表达式——PrimitiveExpression16.4.3让“myida”语言解释器开始工作16.5设计原则1.“开-闭”原则2.封装变化部分16.6使用场合(1)一种特定类型的问题发生的频率足够高,并且业务规则频繁变化,不断重复出现类似情况。(2)业务规则不是过于复杂烦琐,比较容易抽象出语法规则。(3)

5、效率不是软件系统中主要考虑的因素。16.6使用场合来看一下解释器模式的静态类图,加深对解释器模式的理解,如图16-5所示。16.6使用场合1.解释器模式中的角色2.扩展1:JavaSDK中的解释器模式3.扩展2:相关的设计模式16.7本章要点1.解释器模式2.设计原则3.模式中的角色4.相关的设计模式5.使用场合

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。