一句话总结
语法分析工具
内容
解释器是一个简单的语法分析工具,根据规则提取出需要的信息,针对不同的信息进行处理。
场景
解析数学表达式,正则表达式
类图
代码示例
// 上下文环境类
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
Pattern
Pattern对正则表达式的编译和解析