代码例子

参考

1、解释器模式定义

给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。

说明:解释器模式设计到文法规则和抽象语法树。

2、解释器模式的结构

解释器模式包含四个角色:

1)抽象表达式(AbstractExpress):声明抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。

2)终结符表达式(TerminalExpress):是抽象表达式的子类,实现了与文法中的终结符相关联的解释操作,句子中的每一个终结符都是该类的一个实例。

对于非终结符表达式,其代码相对来说比较复杂,可以通过非终结符表达式组合成更加复杂的结构。

3)非终结符表达式(NonterminalExpress):是抽象表达式的子类,实现了文法中非终结符表达式的解释操作。在非终结符表达式中可以包含终结符表达式,也可以包含非终结符表达式,其解释操作一般用递归来实现。

4)环境类(Context):又称为上下文类,用于存储解释器之外的一些全局信息。在该类中一般包含一个Hashtable或List等类型的集合对象,存储一系列公共信息,例如变量名与值的映射关系(key/value)等。

3、解释器模式的优点

1)易于改变或扩展文法;

2)实现文法较为容易;

3)符合开闭原则。

4、解释器模式的缺点

1)对于复杂文法难以维护;

2)执行效率较低。

转载于:https://www.cnblogs.com/rockywood/p/6642479.html

解释器模式 Interpreter相关推荐

  1. java interpreter_解释器模式(Interpreter)Java

    定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 结构图: AbstractExpression解释器模式 ...

  2. 【白话设计模式二十二】解释器模式(Interpreter)

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 白话设计模式 工厂模式 单例模式 [白话设计模式一]简单工厂模式(Simple Factory) [白话设计模式二] ...

  3. 设计模式之解释器模式(Interpreter)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  4. 解释器模式(interpreter)解析例子

    摘要:本文深入浅出的讲述了设计模式中的解释器模式,并给出了简单的示例,例子浅显易懂,并附带源代码. 解释器模式属于行为型模式,其意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该 ...

  5. 设计模式的理解:解释器模式 Interpreter

    解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式.这种模式实现了一个表达式接口,该接口解释一个特定的上下文.这种模式被用在 SQL 解析.符号处 ...

  6. 35解释器模式(Interpreter Pattern)

    动机(Motivate):     在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化.     在这种情况下,将特定领域的问题 ...

  7. [设计模式-行为型]解释器模式(Interpreter)

    一句话 看起来是用来解释一种语言的文法.(类似不同的解释器子类解释不同的字符) 和编译器类似的解释器, 实际状况可能使用的比较少. 概括 解析 INTERPRETER-俺有一个<泡MM真经> ...

  8. 设计模式循序渐进(9)解释器模式 Interpreter

    通过解释器模式实现阿拉伯数字与罗马数字的相互转换. 具体的模式分析解说日后补发. Delphi代码: unit uInt2RomeInterpreter; { 单元说明:将整数转换为罗马数字      ...

  9. 设计模式之15 - 解释器模式Interpreter

    1. 解释器模式(Interpreter Pattern)的定义 (1)定义 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. ①文法:即语法规则.在解 ...

  10. 设计模式之略见一斑(解释器模式Interpreter)

    解释器模式是一种比较难理解的模式,但如果你对Command(命令模式)和Composite(组合模式)很了解的话,你会发现其实解释器模式就是这两种的组合.为何要使用解释器模式,如何用解释器模式呢,这就 ...

最新文章

  1. 系统管理员在企业中的职业定位及发展方向 连载(三)
  2. IE8不兼容你的网页 怎么办? - 简单开启兼容模式
  3. 1619. [HEOI2012]采花
  4. Centos7安装NVIDIA的驱动的坑
  5. Mac环境下安装配置Redis
  6. P90音频播放无声音问题(ACC音频文件)
  7. Ubuntu下安装python3
  8. Linux下iwconfig权限,Linux中用iwconfig配置wireless-tools
  9. 软件项目管理测试文档,软件项目管理具体方法体系示例
  10. JavaScript制作游戏摇杆方向盘
  11. 服务器显示阵列卡升级,Systemx服务器在BIOS中刷新阵列卡微码
  12. [Vani有约会]雨天的尾巴
  13. android+video+自动播放源码,华为手机浏览器使用Video.js无法自动播放
  14. 百度、快手、商汤、旷视等重磅嘉宾确认出席AI ProCon 2019,你还剩1天早鸟票特权!...
  15. 创业者、如何可以投资小,又可以依附互联网去创业?
  16. 最好的降噪蓝牙耳机有哪些?目前最好的降噪蓝牙耳机推荐
  17. .h5文件转.csv文件
  18. java web excel导入数据库
  19. Docker 修改容器端口
  20. svm兵王_飞彩网福利彩

热门文章

  1. 入侵检测系统的性能的辨别(3)
  2. ECCV 2020 | CV “造车”,生成内容一致的车辆数据集 |
  3. ECCV 2020 Oral | BorderDet : 用边界特征做检测
  4. mysql killed状态连接_MySQL: kill connection的实现简析
  5. 学3D建模,工作后薪资一般是多少
  6. ACM MM2021 | 快手获得Grand Challenge第一名
  7. 干货收藏!639页《深度学习:Deep Learning》图文并茂课程PPT
  8. Facebook官方出品~时域音频分离模型登GitHub热榜
  9. float php 运算_PHP面试经典题目
  10. HTML中制作循环广告条,一种循环展示广告的广告箱的制作方法