一句話總結(jié)
語法分析工具
內(nèi)容
解釋器是一個(gè)簡單的語法分析工具,根據(jù)規(guī)則提取出需要的信息,針對不同的信息進(jìn)行處理。
場景
解析數(shù)學(xué)表達(dá)式,正則表達(dá)式
類圖

image.png
代碼示例
// 上下文環(huán)境類
public class Context extends HashMap {
}
// 抽象表達(dá)式
public interface IExpression {
// 對表達(dá)式進(jìn)行解釋
Object interpret(Context context);
}
// 非終結(jié)符表達(dá)式
public class NonterminalExpression implements IExpression {
private IExpression [] expressions;
public NonterminalExpression(IExpression... expressions) {
// 每個(gè)非終結(jié)符表達(dá)式都會(huì)對其他表達(dá)式產(chǎn)生依賴
this.expressions = expressions;
}
@Override
public Object interpret(Context context) {
// 進(jìn)行文法處理
context.put("","");
return null;
}
}
// 終結(jié)符表達(dá)式
public class TerminalExpression implements IExpression {
private Object value;
@Override
public Object interpret(Context context) {
// 實(shí)現(xiàn)文法中與終結(jié)符有關(guān)的操作
context.put("","");
return null;
}
}
源碼體現(xiàn)
ExpressionParser
spring的ExpressionParser

image.png
Pattern
Pattern對正則表達(dá)式的編譯和解析