解释器模式深入分析(2)

电脑杂谈  发布时间:2020-07-01 18:13:42  来源:网络整理

解释器模式_解释器模式 c_解释器模式的优点

解释器模式已在上一章中初步介绍

本章将通过模式的适用环境,解决方案,问题解决方案以及该模式的应用示例来进一步说明和解释其模式

模式定义:

解释器模式: 定义语言的语法,并构建解释器以解释语言中的句子. 这里的“语言”是指使用规定格式和语法的代码. 这是一种行为. 模式.

适用环境:

解释器模式可以在以下情况下使用:

需要解释和执行的语言中的句子可以表示为抽象语法树.

一些反复出现的问题可以用一种简单的语言来表达.

语法相对简单.

效率不是关键问题.

解释器模式的优点_解释器模式 c_解释器模式

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

模式结构

模式结构

解释器模式包括以下角色:

抽象表达: 抽象表达

终端表达: 终端表达

非末端表达: 非末端表达

上下文: 环境类

客户端: 客户端类

解释器模式的优点_解释器模式_解释器模式 c

模式分析

解释器模式描述了如何为一种简单的语言定义语法,如何用该语言表示一个句子以及如何解释这些句子.

解决问题:

例如,加,减,乘,除的四个运算,但公式每次都不同,例如可配置,有时是a + b-cxd,有时是axb + cd等,公式是千变万化的,但全部通过加减法相乘并除以四个非终端符号进行连接,则可以使用解释器模式.

解决方案:

语法规则

语法规则示例:

表达式:: =值|符号

符号:: = expression'+'expression |表达式'-'表达式

value :: =整数//整数值

解释器模式 c_解释器模式_解释器模式的优点

在语法规则的定义中解释器模式的优点,某些符号可用于表示不同的含义,例如“ |”或,“ {”和“}”表示组合,“ *”表示0个或多个出现,等等. 其中,最常用的符号是“ |”代表或关系.

抽象语法树:

除了使用语法规则定义语言之外,在解释器模式下,还可以使用称为抽象语法树(AST)的图形方法来直观地表示语言的组成. 每个摘要语法树都对应一个语言实例.

模式分析

抽象语法树描述了如何形成复杂的句子. 通过对抽象语法树的分析,可以识别该语言中的终端类和非终端类.

在解释器模式下,每个终端符号和非终端符号都有对应的特定类. 由于使用类来表示每个语法规则,因此系统具有更好的可伸缩性和灵活性.

模式优缺点

口译员模式的好处

易于更改和扩展语法.

易于实施语法.

解释器模式的优点_解释器模式 c_解释器模式

添加了一种解释表达式的新方法.

解释器模式的缺点

维护复杂的语法很困难.

执行效率低.

应用场景非常有限.

模式应用示例

(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

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...