1.前言
介紹編譯原理,了解一個新的領域,得去了解它的整體框架
- 詞法分析
- Thompson算法,子集構造算法(DFA,NFA),Hopcroft算法
- 語法分析
- LL(1),消除左遞歸,提取公共左因子,構造預測分析表,分析過程
- LR(0),構造DFA,構造LR(0)分析表,進行語法分析,寫出過程
- 短語,巨型,產生式,直接短語,句柄概念
- 語義分析(語法制導翻譯)
- 逆波蘭表示法
- if,while的逆波蘭
- 中間代碼生成(生成匯編)
- 數組、if、while的中間代碼
- 代碼生成優化
- DAG圖的優化
- 執行匯編(3地址或4地址代碼的匯編執行)
2.詞法分析
1.根據語言寫出文法產生式
2.構造與某一正規式等價自小DFA
DFA(Deterministic Finite Automation):確定有限自動機
NFA(Non-Deterministic Finite Automation):非確定有限自動機
解題步驟:
- 1.根據正規式畫出對應狀態的狀態轉換圖
- 2.根據狀態轉換圖畫出對應狀態
- 3.根據狀態轉化矩陣得到重命名的狀態轉換矩陣
- 4.根據重命名狀態轉換矩陣得出DFA
3.DFA化簡
解題步驟:
- 1.划分初態集合和終態集合
- 2.划分
- 3.畫出新DFA
4.總結
3.語法分析
1.消除左遞歸
2.LL(1)分析法
LL(1)3個條件:
1.有沒有左遞歸
2.有沒有回溯
3.first和follow集合有沒有相交
3.根據產生式畫出語法樹,寫出短語,直接短語,句柄
4.LR(0)分析法
4.語義分析
1.逆波蘭表達式(只考算術表達式)
a+b*c+d的逆波蘭為
abc*+d+