設計模式系列 直譯器模式

2021-10-10 21:21:41 字數 2016 閱讀 8807

直譯器模式,給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。

在直譯器模式中由於語法是由很多類表示的,當語法規則更改時,只需修改相應的非終結符表示式即可;若擴充套件語法時,只需新增相應非終結符類即可。

特徵:為了解釋一種語言,而為語言建立的直譯器。

給出乙個運算表示式,根據直譯器模式計算出相應的結果

類結構圖

數字計算直譯器介面 iarithmeticinterpreter

public inte***ce iarithmeticinterpreter
直譯器統一抽象類 interpreter

public abstract class interpreter implements iarithmeticinterpreter 

}

加法直譯器 addinterpreter

public class addinterpreter extends interpreter 

@override

public int interpret()

}

減法直譯器 subinterpreter

public class subinterpreter extends interpreter 

@override

public int interpret()

}

乘法直譯器 multiinterpreter

public class multiinterpreter extends interpreter 

@override

public int interpret()

}

除法直譯器 divinterpreter

public class divinterpreter extends interpreter 

@override

public int interpret()

}

數字值解析器 numinterpreter

public class numinterpreter implements iarithmeticinterpreter 

@override

public int interpret()

}

計算器入口 selfcalculator

public class selfcalculator 

private void parse(string expression) else

} }public int calculate()

}

操作符工具類 operatorutil

public class operatorutil 

public static interpreter getinterpreter(iarithmeticinterpreter left, iarithmeticinterpreter right,string symbol) else if (symbol.equals("-")) else if (symbol.equals("*")) else if (symbol.equals("/"))

return null;

}}

測試 test

PHP設計模式系列 直譯器模式

直譯器模式 用於分析乙個實體的關鍵元素,並且針對每個元素提供自己的解釋或相應動作。直譯器模式非常常用,比如php的模板引擎 就是非常常見的一種直譯器模。直譯器模式 用於分析乙個實體的關鍵元素,並且針對每個元素提供自己的解釋或相應動作 直譯器模式非常常用,比如php的模板引擎 就是非常常見的一種直譯器...

設計模式系列之 直譯器模式

這種型別的設計模式屬於行為型模式,它他解決了方法的合理呼叫 直譯器模式用於對表示式 字串的解析 如espl 正規表示式等 可以通過自定義規則來使用直譯器建立一種語法簡易 如espl 直譯器需要的角色 解析器類 用來制定規則按情況呼叫不同的表示式類完成解析 抽象表示式類 在此類生成結果 具體表示式 類...

設計模式 直譯器模式

未來機器智慧型化已然成為趨勢,現在手機都能聽懂英語和普通話,那我大中華幾萬種方言的被智慧型化也許也是趨勢,我們的方言雖然和普通話相似,但是還是不一樣的。這可能需要乙個新的語法分析器來幫助我們。我們的直譯器模式就是描述了如何為簡單的語言定義乙個文法,如何在該語言中表示乙個句子,以及如何解釋這些句子。但...