Interpreter解析器模式

2021-07-23 13:04:49 字數 621 閱讀 9626

在特定領域中,某些變化雖然頻繁,但可以抽象為某種規則。這時候,結合特定領域,將問題抽象為語法規則,從而給出在該領域下的一般性解決方案。

在軟體構建中,如果某一特定領域的問題比較複雜,類似的結構不斷重複出現,如果使用普通的程式設計方式來實現將面臨非常頻繁的變化。這種情況下,將特定領域的問題表達為某種語法規則下的桔子,然後構建乙個直譯器來解釋這樣的句子,從而達到解決問題的目的。

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

結構如下圖:

●  interpreter模式的應用場合是interpreter模式應用中的難點,只有滿足「業務規則頻繁變化,且類似的結構不斷重複出現,並且容易抽象為語法規則的問題」才適合使用interpreter模式;

●  使用interpreter模式來表示文法規則,從而可以使用物件導向技巧來方便地「擴充套件」文法;

●  interpreter模式比較適合簡單的文法表示,對於複雜的文法表示,interpreter模式會產生較大的類層次結構,需要求助於語法分析生成器這樣的標準工具。

設計模式 解析器模式 Interpreter

意圖 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子 適用性 1 當有乙個語言需要解釋執行,並且你可以把該語言中的句子表示為乙個抽象的語法樹時,可使用直譯器模式 而當存在以下情況時,該模式的效果最好 2 該文法簡單,對於複雜的文法,文法的類層次變得龐大...

使用解析器

使用解析器 使用解析器是非常簡單,可以使用它自己的詞法分析器,但是,用fsyacc.exe 產生的解析器總是要求詞法分析器。在這一小節,我們將討論如何使用自己的詞法分析器,以及與解析器聯合。警告記住f 編譯器不能直接使用.fsl 和 fsy 檔案,需要用fslex.exe 和 fsyacc.exe ...

指令碼解析器

指令碼解析器 命令指令碼解析器,自建立一種指令碼語法,解釋執行它。目前指令碼形式類似於命令,沒有變數型別的概念,關鍵字為 if else while break continue 解釋與c語言一樣。上傳 型別 無型別,全為字串看待。作用域 當前大括號中,以及所有子大括號中,退出當前大括號則清除變數。...