承接上篇,本篇講如何將運算式轉換成記號物件,涉及編譯原理中的詞法分析。關於編譯原理不多講,只知有限自動機概念。不管什麼概念,代碼實現才是最終目標。
因不清楚字串包含什麼字元,只能逐字元處理,用迴圈一次向後取一字元判斷。建立 TokenFactory 記號「工廠」類別,負責分析運算式並「生產」 TokenRecord 物件。包含兩個方法:LexicalAnalysis 與 ProduceToken。LexicalAnalysis 用於詞法分析,分析到符合規則的記號物件後調用 ProduceToken 「生產」對應 TokenRecord。偷懶將所有方法寫成 static,避免實例化多個子類別。
從此類別衍生四個子類別:
TokenKeywordFactory:處理關鍵字TokenSymbolFactory:處理運算子TokenStringFactory:處理字串TokenNumberFactory:處理數字類別圖如下:
