大话设计模式笔记 解释器模式
2015-10-11 10:55
204 查看
解释器模式(interpreter),给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
![](http://images2015.cnblogs.com/blog/790513/201510/790513-20151011103043049-730411260.png)
编译原理的内容,定义一种语言,总结其文法,将其翻译成另一种语言(代码)。
package interpreter; public abstract class AbstractExpression { public abstract void interpret(String context); }
package interpreter; public class NonTerminalExpression extends AbstractExpression{ @Override public void interpret(String context) { System.out.println("NonTerminalExpression "+context); } }
package interpreter; import java.util.ArrayList; //终结符表达式,对终结符的解释操作。 public class TerminalExpression extends AbstractExpression { @Override public void interpret(String context) { //对终结符的解释操作。 System.out.println("TerminalExpression "+context); } public static void main(String[] args) { String context="context"; ArrayList<AbstractExpression> expressions=new ArrayList<AbstractExpression>(); expressions.add(new TerminalExpression()); expressions.add(new NonTerminalExpression()); expressions.add(new TerminalExpression()); expressions.add(new TerminalExpression()); for (AbstractExpression abstractExpression : expressions) { abstractExpression.interpret(context); } } }
复杂的文法,应该使用语法分析程序。
相关文章推荐
- 如何建立测试管理体系
- POJ 3087 Shuffle'm Up(BFS)
- C# Lambda表达式
- myeclipse 2015 ci 添加tomcat图文教程
- 三、机器学习系统设计笔记之聚类
- 机房收费系统—上下机
- 面向对象第三次作业
- 使用etree.HTML的编码问题
- Linux 硬中断和软中断
- Python Scapy(2.3.1)文档学习(五):构建自己的工具
- Fedora安装Texlive2013时出现Can't locate Digest/MD5.pm的解决方法
- Android 各类功能效果源代码集合
- [51MCU] Chapter1:reg51.h
- C语言入门之流程控制语句及运算符号
- HDU3987 Harry Potter and the Forbidden Forest(边数最少的最小割)
- dump pcm数据和一些备忘
- 信息安全系统设计基础第四周学习总结
- 最简单的基于FFMPEG的音频编码器(PCM编码为AAC)
- 欢迎使用CSDN-markdown编辑器
- 二、机器学习系统设计笔记之对真实样本分类