解释器模式(interpreter)

一句话总结

语法分析工具

内容

解释器是一个简单的语法分析工具,根据规则提取出需要的信息,针对不同的信息进行处理。

场景

解析数学表达式,正则表达式

类图

image.png

代码示例

// 上下文环境类
public class Context extends HashMap {
}
// 抽象表达式
public interface IExpression {
    // 对表达式进行解释
    Object interpret(Context context);
}
// 非终结符表达式
public class NonterminalExpression implements IExpression {
    private IExpression [] expressions;
    public NonterminalExpression(IExpression... expressions) {
        // 每个非终结符表达式都会对其他表达式产生依赖
        this.expressions = expressions;
    }
    @Override
    public Object interpret(Context context) {
        // 进行文法处理
        context.put("","");
        return null;
    }
}
// 终结符表达式
public class TerminalExpression implements IExpression {
    private Object value;
    @Override
    public Object interpret(Context context) {
        // 实现文法中与终结符有关的操作
        context.put("","");
        return null;
    }

}

源码体现

ExpressionParser

spring的ExpressionParser


image.png

Pattern

Pattern对正则表达式的编译和解析

你可能感兴趣的:(解释器模式(interpreter))