行為型模式 直譯器

2021-10-13 07:39:44 字數 522 閱讀 8432

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

直譯器模式(interpreter)是一種針對特定問題設計的一種解決方案。例如,匹配字串的時候,由於匹配條件非常靈活,使得通過**來實現非常不靈活。舉個例子,針對以下的匹配條件:

因此,需要一種通用的表示方法——正規表示式來進行匹配。正規表示式就是乙個字串,但要把正規表示式解析為語法樹,然後再匹配指定的字串,就需要乙個直譯器。

實現乙個完整的正規表示式的直譯器非常複雜,但是使用直譯器模式卻很簡單:

string s = "+861012345678";

system.out.println(s.matches("^\\+\\d+$"));

類似的,當我們使用jdbc時,執行的sql語句雖然是字串,但最終需要資料庫伺服器的sql直譯器來把sql「翻譯」成資料庫伺服器能執行的**,這個執行引擎也非常複雜,但對於使用者來說,僅僅需要寫出sql字串即可。

行為型模式 直譯器

直譯器模式 interpreter 是一種針對特定問題設計的一種解決方案。例如,匹配字串的時候,由於匹配條件非常靈活,使得通過 來實現非常不靈活。舉個例子,針對以下的匹配條件 因此,需要一種通用的表示方法 正規表示式來進行匹配。正規表示式就是乙個字串,但要把正規表示式解析為語法樹,然後再匹配指定的字...

行為型模式 直譯器模式

定義乙個語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 是指使用規定格式和語法的 直譯器模式是一種類行為型模式。abstract class abstractexpression class terminalexpression extends abstractexpression...

行為型模式 直譯器 interpreter

給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子.main.cc include include context.h include terminal expression.h include operator nonterminal expressio...