將詞法分析產出的 TokenRecord 列表,依運算子優先級轉換為語法樹。核心演算法採用「高出低入」堆疊原則,配合遞歸處理括號與函數呼叫。
運算子優先級越高,在樹中位置越接近葉節點。例如 3*7+56/8-2*5,乘除優先級高於加減,故乘除節點成為加減節點的子節點。
文中以 3*7+56/8-2*5 為例,逐步展示 12 個分析狀態,對應堆疊內容與樹結構演變圖解,極具教學價值。
SyntaxTreeGetTopTokenAnalyse:主入口,迴圈掃描 Token 列表,遇左括號/函數遞迴處理括號內段落,其他 Token 交給 SyntaxTreeStackAnalyse。SyntaxTreeStackAnalyse:實作「高出低入」邏輯,維護操作符堆疊。SyntaxTreeMethodAnalyse:處理函數參數列表,以逗號分隔遞迴解析各參數段落。SyntaxTreeStackGetTopToken:掃描結束後,將堆疊剩餘節點依序彈出串聯,最後彈出者為根節點。程式碼雖涉及遞迴與堆疊操作略顯繁複,但邏輯嚴謹,可直接套用於自訂表達式解析器。