
解释器模式已在上一章中初步介绍
本章将通过模式的适用环境,解决方案,问题解决方案以及该模式的应用示例来进一步说明和解释其模式
模式定义:
解释器模式: 定义语言的语法,并构建解释器以解释语言中的句子. 这里的“语言”是指使用规定格式和语法的代码. 这是一种行为. 模式.
适用环境:
解释器模式可以在以下情况下使用:
需要解释和执行的语言中的句子可以表示为抽象语法树.
一些反复出现的问题可以用一种简单的语言来表达.
语法相对简单.
效率不是关键问题.

一些重复的事物包括一系列固定的操作类型,这些操作类型更适合在解释器模式下实现. 如果特定类型的问题经常发生,那么可能值得用简单的语言将每个问题实例表达为一个句子. 这样,可以构造一个解释器,通过解释这些句子Question来解决问题.
模式结构

模式结构
解释器模式包括以下角色:
抽象表达: 抽象表达
终端表达: 终端表达
非末端表达: 非末端表达
上下文: 环境类
客户端: 客户端类

模式分析
解释器模式描述了如何为一种简单的语言定义语法,如何用该语言表示一个句子以及如何解释这些句子.
解决问题:
例如,加,减,乘,除的四个运算,但公式每次都不同,例如可配置,有时是a + b-cxd,有时是axb + cd等,公式是千变万化的,但全部通过加减法相乘并除以四个非终端符号进行连接,则可以使用解释器模式.
解决方案:
语法规则
语法规则示例:
表达式:: =值|符号
符号:: = expression'+'expression |表达式'-'表达式
value :: =整数//整数值

在语法规则的定义中解释器模式的优点,某些符号可用于表示不同的含义,例如“ |”或,“ {”和“}”表示组合,“ *”表示0个或多个出现,等等. 其中,最常用的符号是“ |”代表或关系.
抽象语法树:
除了使用语法规则定义语言之外,在解释器模式下,还可以使用称为抽象语法树(AST)的图形方法来直观地表示语言的组成. 每个摘要语法树都对应一个语言实例.
模式分析
抽象语法树描述了如何形成复杂的句子. 通过对抽象语法树的分析,可以识别该语言中的终端类和非终端类.
在解释器模式下,每个终端符号和非终端符号都有对应的特定类. 由于使用类来表示每个语法规则,因此系统具有更好的可伸缩性和灵活性.
模式优缺点
口译员模式的好处
易于更改和扩展语法.
易于实施语法.

添加了一种解释表达式的新方法.
解释器模式的缺点
维护复杂的语法很困难.
执行效率低.
应用场景非常有限.
模式应用示例
(1)解释器模式已广泛用于使用面向对象语言实现的编译器,例如Smalltalk语言的编译器.
(2)当前解释器模式的优点,有一些基于Java抽象语法树的源代码处理工具. 例如,Eclipse中提供了Eclipse AST. 它是Eclipse JDT的重要组成部分,用于表示Java语言的语法结构. 用户您可以通过扩展其功能来创建自己的语法规则.
(3)您可以使用解释器模式通过C ++,Java,C#和其他面向对象的语言(例如数学表达式解析器,正则表达式解析器等)开发简单的编译器,以增强这些语言的功能,使其添加一些新的语法规则来解释某些特定类型的句子.
转载于:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-264840-1.html
这个教授就一逗比