设计模式目录 http://blog.csdn.net/fenglailea/article/details/52733435 风.fox
给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子
JAVA
//抽象表达式 public abstract class Expression { //每个表达式必须有一个解析任务 public abstract Object interpreter(Context ctx); } //终结符表达式 public class TerminalExpression extends Expression[ //通常终结符表达式只有一个,但是有多个对象 public Object interpreter(Context ctx){ return null; } } //非终结符表达式 public class NonterminalExpression extends Expression[ //每个终结符表达式都会对其他表达式产生依赖 public NonterminalExpression(Expression... expression){ } public Object interpreter(Context ctx){ //进行文法处理 return null; } } //场景 public class Client{ public static void main(String[] arg){ Context ctx = new Context(); //通常定义一个语法容器,容纳一个具体的表达式,通常为ListArray,LinkedList,Stack等等 Stack&Expression>stack =null; for(;;){ ..... } //产生一个完整的语法树,由各个具体的语法分析进行解析 Expression exp=stack.pop(); //具体元素进入场景 exp.interpreter(ctx); } }重复发生的问题 一个简单语法需要解释的场景
