定义: 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
结构图:
AbstractExpression解释器模式抽象类
package ding.study.designpatterns.interpreter;
/**
javaeclipsesdk怎么用。* 解释器模式抽象类
* - 声明一个抽象的Interpret方法,抽象语法树中所有的节点都必须实现该抽象方法。
* @author daniel
*
*/
abstract class AbstractExpression {
状态模式?//解释方法
public abstract void interpret(Context context);
}
Context解释器之外的一些全局信息
package ding.study.designpatterns.interpreter;
/**
解释器。* 解释器之外的一些全局信息
* Interpreter方法所需要的信息的容器,该信息对Interpreter而言全局可见。充当几个AbstractExpresssion
* 实例之间的通讯频道。
*
* @author daniel
*
java applet?*/
public class Context {
private String input;
private String output;
/**
* @return the output
java修饰符?*/
public String getOutput() {
return output;
}
/**
* @param output
策略模式?* the output to set
*/
public void setOutput(String output) {
this.output = output;
}
/**
命令模式?* @return the input
*/
public String getInput() {
return input;
}
/**
java编译,* @param input
* the input to set
*/
public void setInput(String input) {
this.input = input;
}
java、}
NonterminalExpression非终端解释器
package ding.study.designpatterns.interpreter;
/**
* 非终端解释器 另外一个实现了AbstractExpression
* 接口的类,用来处理语法树中非末端节点的语法。它含有下一个AbstractExpression(s)的引用,调用它每个子节点的Interpret方法。
java解释器命令是什么,*
* @author daniel
*
*/
public class NonterminalExpression extends AbstractExpression {
@Override
java编译器和解释器。public void interpret(Context context) {
System.out.println("非终端解释器");
}
}
TerminalExpression终端解释器
package ding.study.designpatterns.interpreter;
java python,/**
* 终端解释器
* - 实现和语法中末端符号相关的Interpret方法。
- 在每个句子的末端符号中均需要一个TerminalExpression实例。
* @author daniel
*
java的string类。*/
public class TerminalExpression extends AbstractExpression {
@Override
public void interpret(Context context) {
System.out.println("终端解释器");
}
java和javascript、}
Client 客户端 ZTestMain
package ding.study.designpatterns.interpreter;
import java.util.ArrayList;
import java.util.List;
/**
java字节码解释器。* 解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。
*
* 输出:
* 终端解释器
非终端解释器
终端解释器
解释器模式?终端解释器
*
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-31 下午2:16:37
*/
public class ZTestMain {
/**
* @param args
*/
public static void main(String[] args) {
Context context = new Context();
List list = new ArrayList();
list.add(new TerminalExpression());
list.add(new NonterminalExpression());
list.add(new TerminalExpression());
list.add(new TerminalExpression());
for (AbstractExpression exp : list) {
exp.interpret(context);
}
}
}
执行结果
源代码
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态