一执虹、概念
1.1捕透、定義
定義了一個解釋器丝格,來解釋給定語言和文法的句子撑瞧。其實質是把語言中的每個符號定義成一個(對象)類,從而把每個程序轉換成一個具體的對象樹显蝌。
82C492DE-4309-4073-A622-97B87AE98641.png
- AbstractExpression预伺,抽象表達式類:核心類,主要定了解析器的解析方法入口曼尊。
- Terminal Expression酬诀,終結符表達式類:如其名,代表了文法中的終結符骆撇。
- Nonterminal Expression瞒御,非終結符表達式類:文法中其他非終結符的所有字符
- Context,環(huán)境類:一般神郊,存儲各個解釋器需要的共同數(shù)據(jù)或是公共的功能肴裙。
1.2、解決的問題
- 解決問題:針對需要解析一些固定文法的涌乳,需要構建一個解釋句子的解釋器蜻懦。
- 模式解決思路:將文法劃分為 終結符表達式類 和 非終結符表達式類,然后通過Context來管理解析過程的上下文環(huán)境夕晓。
二宛乃、模式的應用和優(yōu)缺點
2.1、應用場景
- 實例:編譯器蒸辆、運算表達式計算征炼。
- 實例:有一定文法規(guī)則文本解析,例如公交車卡的讀卡器程序吁朦。
2.2柒室、優(yōu)缺點
-
優(yōu)點:
- 易于實現(xiàn)渡贾,且解析語言場景下擴張性好逗宜。
-
缺點:
- 效率差:模式中通常使用大量的循環(huán)和遞歸調用,當要解釋的句子較復雜時空骚,其運行速度很慢纺讲。還有代碼的調試過程很麻煩,很痛苦囤屹。
- 應用場景很少熬甚,正如其名,解析器模式基本用語編程語言的解析中肋坚。