解释器模式(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对正则表达式的编译和解析

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容