1.意圖 給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。 2.動機 如果一種特定類型的問題發生的頻率足夠高,那麼可能就值的將該問題的各個實例表述為一個簡單語言中的句子。這樣就可以構建一個解釋器,該解釋器通過解釋這些句子來解決該問題。 3.適用性 當一 ...
1.意圖
給定一個語言,定義它的文法的一種表示,並定義一個解釋器,這個解釋器使用該表示來解釋語言中的句子。
2.動機
如果一種特定類型的問題發生的頻率足夠高,那麼可能就值的將該問題的各個實例表述為一個簡單語言中的句子。這樣就可以構建一個解釋器,該解釋器通過解釋這些句子來解決該問題。
3.適用性
當一個語言需要解釋執行,並且你可將該語言中的句子表示為一個抽象的語法樹時,可使用解釋器模式。而當存在以下情況時,該模式效果最好:
- 該文法簡單對於複雜的文法,文法的類層次變得龐大而無法管理。此時語法分析程式生成器這樣的工具是更好的選擇。它們無需構建抽象語法樹即可解釋表達式,這樣可以節省空間而且還可以節省時間。
- 效率不是一個關鍵問題,最高效的解釋器不是通過直接解釋語法分析樹實現的,而是首先將它們轉換成另一種形式。
4.結構
5.效果
- 易於改變和擴展文法
- 易於實現文法
- 複雜的文法難以維護
- 增加了新的解釋表達式的方式