直譯器模式

2021-08-09 12:48:15 字數 569 閱讀 1836

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

直譯器是乙個簡單的語法分析工具,它最顯著的優點就是擴充套件性,修改語法規則只需要修改相應的非終結符就可以了,若擴充套件語法,只需要增加非終結符類就可以了。

但是直譯器模式會引起類的膨脹,每個語法都需要產生乙個非終結符表示式,語法規則比較複雜時,就可能產生大量的類檔案,為維護帶來非常多的麻煩。同時,由於採用遞迴呼叫方法,每個非終結符表示式只關心與自己相關的表示式,每個表示式需要知道最終的結果,必須通過遞迴方式,無論是物件導向的語言還是面向過程的語言,遞迴都是乙個不推薦的方式。由於使用了大量的迴圈和遞迴,效率是乙個不容忽視的問題。特別是用於解釋乙個解析複雜、冗長的語法時,效率是難以忍受的。

直譯器模式真的是乙個比較少用的模式,因為對它的維護實在是太麻煩了,想象一下,一坨一坨的非終結符直譯器,假如不是事先對文法的規則瞭如指掌,或者是文法特別簡單,則很難讀懂它的邏輯。直譯器模式在實際的系統開發中使用的很少,因為他會引起效率、效能以及維護等問題

直譯器模式

include include include include include using namespace std 直譯器模式 給定一種語言,定義它的文法的一種表示,並定義乙個直譯器 該直譯器使用該表示來解釋語言中的句子 類似於程式語言或者指令碼 假設情景是乙個指令碼控制系統 wasd上下左右方...

直譯器模式

1 模式定義 直譯器模式 interpreter pattern 定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的 語言 意思是使用規定格式和語法的 它是一種類行為型模式。2 模式結構 直譯器模式包含如下角色 abstractexpression 抽象表示式 terminalexpre...

直譯器模式

給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。要解決的問題 如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子。這樣就可以構造乙個直譯器,該直譯器通過解釋這些句子來解決該問題。的好處 當有乙個語言需要解...