編譯原理研究從源代碼到可執行程序的轉換過程。經典編譯器包含 7 大步驟:詞法分析、語法分析、語義分析、中間代碼生成、代碼優化、代碼生成、目標代碼優化。前四屬前端,後三屬後端。詞法分析是編譯器第一步,也是本系列主題。
詞法分析器讀入字符流,輸出詞法單元流。將源程序「切」成有意義的片段(詞素),每個詞素產生一個 Token。Token 包含:
示例:12+34*9 → digit(12) + operator(+) digit(34) operator(*) digit(9)。空白/註釋可被過濾。
模式描述詞法單元可能形式。如 digit = [0-9]+、operator = [+\-*/]。詞法分析器據此識別 12 為詞素而 2+3 不是。正則表達式是模式的標準表示,僅保留字符串匹配能力,無分組/替換等高級功能。
O(k)兩者識別能力相等,均等價於正則表達式。詞法分析器採用 DFA 執行。
目標:構建可用的詞法分析器庫,雖未達 Flex 從定義文件生成代碼級別,但核心功能完備。