欢迎来到天天文库
浏览记录
ID:39321860
大小:500.50 KB
页数:12页
时间:2019-06-30
《创建自己的语言:解释器模式》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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.使用场合
此文档下载收益归作者所有