编译原理之词法分析
作為從被人類理解的語言,到被計算機理解的文本的第一步,詞法分析可通過掃描程序將源程序讀入,并進行理解和分割為若干記號。由于掃描程序是格式匹配的一種特殊情況,所以需要研究在掃描過程中的格式說明和識別方法,其中最主要的就是正則表達式和有窮自動機。
詞法分析的通常做法是:
1. 寫出各類記號的正則表達式。
2. 根據正則表達式構造NFA。
3. 將NFA轉為DFA。
4. 根據DFA就可以實現詞法分析器。
?
下面根據C-Minus的詞法來構造一個詞法分析器。
以ID|NUM為例
首先寫出ID和NUM的正則表達式
ID = letter letter*
NUM = digit digit*
letter = [a-zA-Z]
digit = [0-9]
然后利用Thompson結構將正則表達式ID|NUM轉換為NFA。
首先構造letter和digit構建機器
?
接著構造ID和NUM的構建機器
?
最后構造ID|NUM的NFA
?
接著再利用子集構造將生成的NFA轉換為DFA
?
最后根據DFA寫出程序
?
利用子集構造模擬NFA
?
最小化DFA的狀態數量
總結
- 上一篇: 但自去年封测后的cqbgbbs
- 下一篇: 飞鸽传书有多少用户?