1 简介
解释器模式(Interpreter Pattern)定义:定义语言的语法,并建立一个解释器来解释该语言中的句子,这里的“语言”指使用规定格式和语法的代码。它用于描述如何构成一个简单的语言解释器,主要应用于使用面向对象语言开发的编译器和解释器设计。
2 代码
(1)环境类(Context)
import java.util.HashMap;
public class Context {
//存储公共信息,用于在进行具体的解释操作时从中获取相关信息
private HashMap<String,Object> map=new HashMap();
public void assign(String key,String value) {
//往环境类中设值
}
public Object lookup(String key) {
//获取存储在环境中的值
return map.get(key);
}
}
(2)抽象表达式
public abstract class Expression {
public abstract void interpret(Context ctx);
}
(3)终结符表达式
public class TerminalExpression extends Expression {
@Override
public void interpret(Context ctx) {
//对终结表达式的解释操作
}
}
(4)非终结符表达式
public class NonterminalExpression extends Expression {
private Expression left;
private Expression right;
NonterminalExpression(Expression left,Expression right){
this.left=left;
this.right=right;
}
@Override
public void interpret(Context ctx) {
//递归调用每一个组成部分的 interpret() 方法
//在递归调用时指定组成部分的连接方式,即非终结符的功能
}
}