解释器模式给定一种语言,并定义该语言的语法表示,然后设计一个解析器来解释语言的语法,这种模式长用于SQL解析、符号处理引擎等。
正则表达式解释器:
(1)定义Expression
public interface Expression { public void interpret(Context ctx); }
(2)定义NonterminalExpression类
public class NonterminalExpression implements Expression { private Expression left; private Expression right; public NonterminalExpression(Expression left,Expression right){ this.left = left; this.right = right; } @Override public void interpret(Context ctx){ // 递归调用每一个组成部分的 interpret() // 在递归调用时指定组成部分的连接方式,即非终结符的功能 } }
(3)定义 TerminalExpression
public class TerminalExpression implements Expression{ @Override public void interpret(Context ctx){ // 终结符表达式的解释操作 } }
(4)定义Context
public class Context{ private HashMap map = new HashMap(); public void assign(String key,String value){ // 在环境类中设值 } public String get(String key){ // 获取存储在环境类中的值 return ""; } }
这个呃,,,,没大看懂,但是也抄下来,万一以后看懂了呢