解释器模式 Interpreter
2024-10-19 00:24:07
1、解释器模式定义
给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
说明:解释器模式设计到文法规则和抽象语法树。
2、解释器模式的结构
解释器模式包含四个角色:
1)抽象表达式(AbstractExpress):声明抽象的解释操作,它是所有终结符表达式和非终结符表达式的公共父类。
2)终结符表达式(TerminalExpress):是抽象表达式的子类,实现了与文法中的终结符相关联的解释操作,句子中的每一个终结符都是该类的一个实例。
对于非终结符表达式,其代码相对来说比较复杂,可以通过非终结符表达式组合成更加复杂的结构。
3)非终结符表达式(NonterminalExpress):是抽象表达式的子类,实现了文法中非终结符表达式的解释操作。在非终结符表达式中可以包含终结符表达式,也可以包含非终结符表达式,其解释操作一般用递归来实现。
4)环境类(Context):又称为上下文类,用于存储解释器之外的一些全局信息。在该类中一般包含一个Hashtable或List等类型的集合对象,存储一系列公共信息,例如变量名与值的映射关系(key/value)等。
3、解释器模式的优点
1)易于改变或扩展文法;
2)实现文法较为容易;
3)符合开闭原则。
4、解释器模式的缺点
1)对于复杂文法难以维护;
2)执行效率较低。
最新文章
- play-framework的安装与使用
- tar打包排除某个目录
- study
- win10 体验
- Python &; MapReduce
- 【JavaScript】Object.observe()带来的数据绑定变革
- SqlServer之游标深入
- 【转载】/etc/passwd &; /etc/shadow 详解
- Creating a settings table that can handle almost any type of value
- Student s = new Student();在内存中做了哪些事情?
- PCoA主坐标分析
- 29.Django session
- 使用nginx搭建高可用,高并发的wcf集群
- [转帖]优化IMPDP/EXPDP导入导出速度
- word2vec并行实现小记
- Android开发过程中的坑及解决方法收录(三)
- 监控glusterfs
- WPF中, 启用添加到RichTextBox中的控件
- (最长上升子序列 并记录过程)FatMouse's Speed -- hdu -- 1160
- Linux查看文件夹占用空间
热门文章
- [GDOI2018]滑稽子图
- vue.cli项目中src目录每个文件夹和文件的用法
- centos删除用户出错userdel: user xxx is currently used by process 23750
- 20170718 关于Mysql 安装于虚拟机Ubuntu中,内网中Windows系统无法访问
- Sql server 函数--取值年月
- Http服务基础原理
- IE无法安装Activex控件
- wx鼠标拖动事件
- 背景图宽高100%无法无法显示的问题【body设置relative,当前元素absolute】
- CentOS6.5 安装Kafka集群