- 浏览: 18300 次
- 性别:
- 来自: 西安
最新评论
Interpreter Pattern:其意图是给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子.
Expression.java
package com.flyingh.dp.interpreter; public abstract class Expression { public abstract int interpret(Context ctx); }
Constant.java
package com.flyingh.dp.interpreter; public class Constant extends Expression { private int value; public Constant(int value) { super(); this.value = value; } @Override public int interpret(Context ctx) { // TODO Auto-generated method stub return value; } }
Variable.java
package com.flyingh.dp.interpreter; public class Variable extends Expression { @Override public int interpret(Context ctx) { // TODO Auto-generated method stub return ctx.lookup(this); } }
Add.java
package com.flyingh.dp.interpreter; public class Add extends Expression { private Expression left; private Expression right; public Add(Expression left, Expression right) { super(); this.left = left; this.right = right; } @Override public int interpret(Context ctx) { // TODO Auto-generated method stub return left.interpret(ctx) + right.interpret(ctx); } }
Minus.java
package com.flyingh.dp.interpreter; public class Minus extends Expression { private Expression left; private Expression right; public Minus(Expression left, Expression right) { super(); this.left = left; this.right = right; } @Override public int interpret(Context ctx) { // TODO Auto-generated method stub return left.interpret(ctx) - right.interpret(ctx); } }
Context.java
package com.flyingh.dp.interpreter; import java.util.HashMap; import java.util.Map; public class Context { private Map<Variable, Integer> map = new HashMap<Variable, Integer>(); public int lookup(Variable var) { // TODO Auto-generated method stub int value = 0; try { value = map.get(var); } catch (Exception e) { // TODO Auto-generated catch block System.out.println(var + "还没有赋值!"); } return value; } public void assign(Variable var, int value) { map.put(var, value); } }
Client.java
package com.flyingh.dp.interpreter; public class Client { public static void main(String[] args) { Variable var1 = new Variable(); Variable var2 = new Variable(); Expression con = new Constant(1); Context ctx = new Context(); ctx.assign(var1, 5); ctx.assign(var2, 8); Expression add = new Add(new Constant(3), var1); System.out.println(add.interpret(ctx)); Expression add2 = new Add(con, var1); System.out.println(add2.interpret(ctx)); System.out.println("*************"); ctx.assign(var1, 10); ctx.assign(var2, 5); Expression minus = new Minus(var1, var2); System.out.println(minus.interpret(ctx)); System.out.println(new Minus(var2, new Constant(4)).interpret(ctx)); } }
程序运行结果如下:
8 6 ************* 5 1
发表评论
文章已被作者锁定,不允许评论。
-
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 662Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 651享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 658Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 660Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 677State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 793Composite Pattern:意图是将对象组合成树形结构 ... -
Iterator
2011-11-16 16:56 889Iterator Pattern:其意图是提供一种方法顺序访问 ... -
Template Method
2011-11-16 11:43 659模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 596Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 630Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5721).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 570装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 600观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
GCode Interpreter是用于解析和执行G代码指令的软件组件,它将这些指令转化为机器可以理解的信号,进而驱动设备进行工作。 在Arduino环境下,GCode Interpreter通常被用于构建简易的CNC控制器或者3D打印控制器。...
### CentOS安装软件时遇到“/lib/ld-linux.so.2: bad ELF interpreter”错误的解决方案 在使用CentOS操作系统的过程中,我们可能会遇到这样的问题:在安装某些软件时,系统会报错“/lib/ld-linux.so.2: bad ELF ...
Interpreter模式是一种行为设计模式,它允许我们定义一个语言的文法,并提供一个解释器来处理该语言中的句子。在这个场景中,我们将运用Interpreter模式来实现一个简单的计算器,它能够执行基本的算术运算,如加法、...
We'll start with 0 lines of code and end up with a fully working interpreter for the Monkey* programming language. Step by step. From tokens to output. All code shown and included. Fully tested. ...
本资源"robotframework-interpreter-0.6.4.tar.gz"就是一个这样的库,专注于Robot Framework的解释器功能。 Robot Framework是一个开源自动化测试框架,它支持创建可读性高的测试用例,广泛应用于软件测试、配置...
标题提到的"snikeguo-nf-interpreter-master.zip"是一个可能包含相关源代码和工具的压缩包,而"开发平台.zip"可能提供了用于视频采集和通信的开发环境。我们将围绕这些关键点,讲解C#在嵌入式系统中的应用,TCP协议...
**Python库 Django-Python-Interpreter 0.0.1** `django-python-interpreter-0.0.1.tar.gz` 是一个包含Python库的压缩包,主要用于在Django框架内运行Python代码。Django是一个用Python编写的开源Web框架,它遵循...
标题《How to build a monadic interpreter in one day》和描述中提到的“使用Haskell和Monad技术实现一个解释器。又学Monad也学解释器。”,已经明确指出了本文的核心内容。该内容将介绍如何通过Haskell98标准来...
(How to Write a (Lisp) Interpreter (in Python))和(An ((Even Better) Lisp) Interpreter (in Python))的翻译,对解释器实现原理和函数式编程敢兴趣的可以下载看看!
1. Go语言编程:文档标题提到了“writing an interpreter in go”,这表明本书是关于使用Go语言来编写解释器的教程。Go语言以其简洁、高效和并发处理能力强而著称,它允许开发者快速构建出性能优越的应用程序。解释...
" Ball - Writing An Interpreter In Go" 本资源主要讲述如何使用 Go 语言编写一个解释器,作者 Thorsten Ball 通过一步步的指导 Teaching 读者如何从头开始创建一个 Monkey 编程语言的解释器。 在本书中,作者...
“Interpreter模式”是设计模式中的一种,主要应用于解决表达式问题,它为特定语言提供了表达式接口,使得程序可以理解和执行这些表达式。在Java中实现Interpreter模式,可以创建一个灵活的、可扩展的解析系统,允许...
Interpreter(解释器)模式是一种行为设计模式,它提供了一种方式来表示一种语言的文法,并创建一个解释器来解释语言中的句子。这种模式主要用于解析简单的语言或表达式,例如计算表达式、配置文件等。在计算机科学...
从提供的文件信息中,我们可以推断该课件《C++设计模式课件25_Interpreter.pdf》是关于C++语言实现设计模式中的解释器模式(Interpreter Pattern)的一部分教学资料。文件中出现的网站***和网易云课堂是指两个在线...
《Writing An Interpreter In Go》是一本深入探讨如何使用Go语言编写解释器的书籍。作者通过清晰易懂的方式,引领读者逐步构建一个完整的编程语言解释器。这本书覆盖了编译器构造的基础知识,对于想要理解编程语言...
Writing An Interpreter In Go 英文mobi 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
C#面向对象设计模式 (行为型模式) Interpreter 解释器模式 视频讲座下载
给一个自定义语法的语言写一个解释器(Interpreter),首先写了Parser,然后存入剖析树(Parse Tree)对象中,最后根据Parse Tree的结构执行程序,计算出结果。 语法如下: <prog> ::= program <decl seq> ...
在《Writing An Interpreter In Go》这本书中,作者Thorsten Ball引领读者一起构建一个名为Monkey的编程语言的解释器。本书采用逐步的方式,从零代码开始,直到构建出一个完全功能的Monkey编程语言解释器。书中的...