Java设计模式19解释器模式.pdf
《Java设计模式19解释器模式.pdf》由会员分享,可在线阅读,更多相关《Java设计模式19解释器模式.pdf(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第19章第19章解释器模式解释器模式主讲教师:程细柱韶关学院计算机系主讲教师:程细柱韶关学院计算机系本书主编:刘伟清华大学出版社本书主编:刘伟清华大学出版社本章教学内容?解释器模式?模式动机与定义模式动机与定义?模式结构与分析模式结构与分析?模式实例与解析模式实例与解析?模式效果与应用模式效果与应用?模式扩展模式扩展要不要弄个新的编程语言玩玩?要不要弄个新的编程语言玩玩?要不要弄个新的编程语言玩玩?要不要弄个新的编程语言玩玩?解释器模式?模式动机模式动机?如果如果在系统中某一特定类型的问题发生的频率在系统中某一特定类型的问题发生的频率很高很高,此时可以考虑将,此时可以考虑将这些问题的实例表述为
2、这些问题的实例表述为一个语言中的句子一个语言中的句子,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题。,因此可以构建一个解释器,该解释器通过解释这些句子来解决这些问题。?解释器模式描述了如何构成一个简单的语言解解释器模式描述了如何构成一个简单的语言解释器释器,主要应用在使用面向对象语言开发的编译器中。,主要应用在使用面向对象语言开发的编译器中。解释器模式?模式动机解释器模式?模式定义模式定义?解释器模式(Interpreter Pattern):解释器模式(Interpreter Pattern):定义语言的文法定义语言的文法,并且,并且建立一个解释器来解释该语言中的句子建立一
3、个解释器来解释该语言中的句子,这里的,这里的“语言语言”意思是使用规定格式和语法的代码,它是一种意思是使用规定格式和语法的代码,它是一种类行为型模式类行为型模式。解释器模式?模式定义模式定义?Interpreter Pattern:Given a language,define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language.?Frequency of use:low 解释器模式?模式结构C
4、ontextAbstractExpression+interpret(Context ctx)ClientTerminalExpression+interpret(Context ctx)NonterminalExpression+interpret(Context ctx)解释器模式?模式结构模式结构?解释器模式包含如下角色:解释器模式包含如下角色:AbstractExpression:AbstractExpression:抽象表达式抽象表达式 TerminalExpression:TerminalExpression:终结符表达式终结符表达式 NonterminalExpression:N
5、onterminalExpression:非终结符表达式非终结符表达式 Context:Context:环境类环境类 Client:Client:客户类客户类解释器模式?模式分析模式分析?解释器模式解释器模式描述了描述了如何为简单的语言定义一个文法如何为简单的语言定义一个文法,如何在该语言中表示一个句子,如何在该语言中表示一个句子,以及以及如何解释这些句子如何解释这些句子。解释器模式?模式分析模式分析?文法规则文法规则实例:实例:?expression:=value|symbolexpression:=value|symbol?symbol:=expression+expression|exp
6、ression-expressionsymbol:=expression+expression|expression-expression?value:=an integervalue:=an integer/一个整数值/一个整数值?在文法规则定义中可以使用一些符号来表示不同的含义,如使用在文法规则定义中可以使用一些符号来表示不同的含义,如使用“|”表示或,使用表示或,使用“”和和“”表示组合,使用表示组合,使用“*”表示出现0次或多次等,其中使用频率最高的符号是表示或关系的表示出现0次或多次等,其中使用频率最高的符号是表示或关系的“|”。解释器模式?模式分析模式分析?抽象语法树:抽象语法树:
7、除了使用文法规则来定除了使用文法规则来定义一个语言义一个语言,在解释器模式中还可以通过,在解释器模式中还可以通过一种称 之 为一种称 之 为 抽 象 语 法 树抽 象 语 法 树(Abstract Syntax Tree,AST)(Abstract Syntax Tree,AST)的图形方式来直观地表示语言的构成,每一棵抽象语法树对应一个语言实例。的图形方式来直观地表示语言的构成,每一棵抽象语法树对应一个语言实例。解释器模式?模式分析模式分析?抽象语法树描述了抽象语法树描述了如何构成一个复杂的句如何构成一个复杂的句子子,通过对抽象语法树的分析,通过对抽象语法树的分析,可以识别出语言中的终结符和
8、非终结符类可以识别出语言中的终结符和非终结符类。?在解释器模式中,在解释器模式中,每一种终结符和非终结符每一种终结符和非终结符都有一个具体类与之对应都有一个具体类与之对应,正因为使用类来表示每一个语法规则,使得系统具有较好的扩展性和灵活性。,正因为使用类来表示每一个语法规则,使得系统具有较好的扩展性和灵活性。解释器模式?模式分析?典型的抽象表达式类实现代码:典型的抽象表达式类实现代码:public abstract class AbstractExpressionpublic abstract void interpret(Context ctx);解释器模式?模式分析?典型的终结符表达式类实
9、现代码:典型的终结符表达式类实现代码:public class TerminalExpression extends AbstractExpressionpublic void interpret(Context ctx)/对于终结符表达式的解释操作对于终结符表达式的解释操作 解释器模式?模式分析?典型的非终结符表达式类实现代码:典型的非终结符表达式类实现代码:public class NonterminalExpression extends AbstractExpression private AbstractExpression left;private AbstractExpressi
10、on right;public NonterminalExpression(AbstractExpressionleft,AbstractExpression right)this.left=left;this.right=right;public void interpret(Context ctx)/递归调用每一个组成部分的递归调用每一个组成部分的interpret()方法方法/在递归调用时指定组成部分的连接方式,即非终结符的功能在递归调用时指定组成部分的连接方式,即非终结符的功能 解释器模式?模式分析?典型的环境类实现代码:典型的环境类实现代码:public class Contextp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 设计 模式 19 解释
限制150内