第19章+解释器模式

第19章+解释器模式

ID:45009198

大小:1009.50 KB

页数:31页

时间:2019-11-07

第19章+解释器模式_第1页
第19章+解释器模式_第2页
第19章+解释器模式_第3页
第19章+解释器模式_第4页
第19章+解释器模式_第5页
资源描述:

《第19章+解释器模式》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第19章解释器模式刘伟weiliu_china@yahoo.cn本章教学内容解释器模式模式动机与定义模式结构与分析模式实例与解析模式效果与应用模式扩展要不要弄个新的编程语言玩玩?解释器模式模式动机如果在系统中某一特定类型的问题发生的频率很高,此时可以考虑将这些问题的实例表述为一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题。解释器模式描述了如何构成一个简单的语言解释器,主要应用在使用面向对象语言开发的编译器中。解释器模式模式动机解释器模式模式定义解释器模式(InterpreterPattern)

2、:定义语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”意思是使用规定格式和语法的代码,它是一种类行为型模式。解释器模式模式定义InterpreterPattern:Givenalanguage,definearepresentationforitsgrammaralongwithaninterpreterthatusestherepresentationtointerpretsentencesinthelanguage.Frequencyofuse:low解释器模式模式结构解释器模式模式结构解释器模式包含如下

3、角色:AbstractExpression:抽象表达式TerminalExpression:终结符表达式NonterminalExpression:非终结符表达式Context:环境类Client:客户类解释器模式模式分析解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。解释器模式模式分析文法规则实例:expression::=value

4、symbolsymbol::=expression'+'expression

5、expression'-'expressionvalue::=an

6、integer//一个整数值在文法规则定义中可以使用一些符号来表示不同的含义,如使用“

7、”表示或,使用“{”和“}”表示组合,使用“*”表示出现0次或多次等,其中使用频率最高的符号是表示或关系的“

8、”。解释器模式模式分析抽象语法树:除了使用文法规则来定义一个语言,在解释器模式中还可以通过一种称之为抽象语法树(AbstractSyntaxTree,AST)的图形方式来直观地表示语言的构成,每一棵抽象语法树对应一个语言实例。解释器模式模式分析抽象语法树描述了如何构成一个复杂的句子,通过对抽象语法树的分析,可以识别出语言中的终结符和

9、非终结符类。在解释器模式中,每一种终结符和非终结符都有一个具体类与之对应,正因为使用类来表示每一个语法规则,使得系统具有较好的扩展性和灵活性。解释器模式模式分析典型的抽象表达式类实现代码:publicabstractclassAbstractExpression{publicabstractvoidinterpret(Contextctx);}解释器模式模式分析典型的终结符表达式类实现代码:publicclassTerminalExpressionextendsAbstractExpression{publicvoidinte

10、rpret(Contextctx){//对于终结符表达式的解释操作}}解释器模式模式分析典型的非终结符表达式类实现代码:publicclassNonterminalExpressionextendsAbstractExpression{privateAbstractExpressionleft;privateAbstractExpressionright;publicNonterminalExpression(AbstractExpressionleft,AbstractExpressionright){this.left=l

11、eft;this.right=right;}publicvoidinterpret(Contextctx){//递归调用每一个组成部分的interpret()方法//在递归调用时指定组成部分的连接方式,即非终结符的功能}}解释器模式模式分析典型的环境类实现代码:publicclassContext{privateHashMapmap=newHashMap();publicvoidassign(Stringkey,Stringvalue){//往环境类中设值}publicStringlookup(Stringkey){//获取存

12、储在环境类中的值}}解释器模式解释器模式实例与解析实例:数学运算解释器现需要构造一个语言解释器,使得系统可以执行整数间的乘、除和求模运算。如用户输入表达式“3*4/2%4”,输出结果为2。使用解释器模式实现该功能。解释器模式解释器模式实例与解析实例:数学运算解释器解释器模式解

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

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

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