●前言
教學建議
第1章 引論
1.1 編譯概述
1.2 編譯的過程
1.2.1 高級語言程序的處理過程
1.2.2 編譯的過程
1.3 編譯程序的生成
1.3.1 編譯程序的組合方式
1.3.2 編譯程序的生成方式
1.4 基本知識
1.4.1 形式語言
1.4.2 文法
1.5 練習
第2章 詞法分析
2.1 詞法分析概述
2.2 單詞的表示
2.2.1 單詞的種別
2.2.2 屬性
2.3 單詞的形式描述
2.3.1 正規式描述
2.3.2 正規文法描述
2.3.3 正規式與正規文法的等價性
2.4 有窮自動機
2.4.1 不確定的有窮自動機
2.4.2 確定的有窮自動機
2.4.3 NFA與DFA的等價性
2.4.4 DFA的化簡
2.4.5 正規式和FA的等價性
2.4.6 正規文法和FA的等價性
2.5 詞法分析程序的構造
2.5.1 單詞識別程序的構造
2.5.2 詞法分析程序的自動生成工具LEX簡介
2.6 練習
第3章 自頂向下的語法分析法
3.1 語法分析概述
3.2 自頂向下語法分析的實現
3.2.1 推導樹與語法樹
3.2.2 二義性
3.2.3 確定與不確定的自頂向下語法分析
3.3 確定的自頂向下的語法分析條件
3.3.1 LL(1)文法
3.3.2 非LL(1)文法到LL(1)文法的等價變換
3.4 自頂向下語法分析程序的構造
3.4.1 預測分析法
3.4.2 遞歸下降分析法
3.5 練習
第4章 自底向上的語法分析法
4.1 自底向上語法分析的實現
4.1.1 歸約
4.1.2 短語和句柄
4.2 簡單優先分析法
4.2.1 簡單優先文法
4.2.2 簡單優先分析算法
4.3 算符優先分析法
4.3.1 算符優先文法
4.3.2 算符優先分析算法
4.3.3 優先函數
4.4 練習
第5章 LR分析法
5.1 LR分析法概述
5.2 LR(0)分析
5.2.1 LR(0)項目集規範族
5.2.2 LR(0)文法
5.2.3 LR(0)分析器的工作過程
5.3 SLR(1)分析
5.3.1 SLR(1)文法
5.3.2 SLR(1)分析表的構造
5.4 LR(1)分析
5.4.1 LR(1)文法
5.4.2 LR(1)項目集規範族的構造
5.4.3 LR(1)分析表的構造
5.5 LALR(1)分析
5.5.1 LALR(1)文法
5.5.2 LALR(1)分析表的構造
5.6 語法分析程序的自動生成工具YACC簡介
5.6.1 YACC對語言的要求
5.6.2 YACC的輸入輸出
5.6.3 YACC源程序
5.7 練習
第6章 語義分析
6.1 語義分析概述
6.2 語法制導的語義計算
6.2.1 屬性文法
6.2.2 語義計算
6.3 符號表
6.3.1 符號表的概述
6.3.2 符號表的定義
6.3.3 符號表的組織
6.3.4 符號表的管理
6.4 練習
第7章 中間代碼生成
7.1 中間代碼生成概述
7.2 中間代碼
7.2.1 逆波蘭式
7.2.2 樹代碼
7.2.3 三地址碼
7.3 自底向上的語法制導翻譯
7.3.1 說明語句的翻譯
7.3.2 含簡單變量的賦值語句的翻譯
7.3.3 素的賦值語句的翻譯
7.3.4 布爾表達式的翻譯
7.3.5 控制語句的翻譯
7.3.6 過程調用
7.4 練習
第8章 運行時存儲空間的組織
8.1 運行時存儲空間的劃分
8.2 數據空間的存儲分配策略
8.2.1 靜態存儲分配策略
8.2.2 動態存儲分配策略
8.3 棧式存儲分配
8.3.1 簡單程序設計語言的棧式存儲分配
8.3.2 嵌套過程語言的棧式存儲分配
8.4 練習
第9章 代碼優化
9.1 代碼優化概述
9.2 局部優化
9.2.1 基本塊及其劃分
9.2.2 基本塊的優化技術
9.2.3 基本塊優化技術的實現
9.3 循環優化
9.3.1 程序中的循環
9.3.2 循環的優化技術及其實現
9.4 練習
第10章 目標代碼生成
10.1 目標代碼生成概述
10.2 模型計算機的指令繫統
10.2.1 尋址方式
10.2.2 指令繫統
10.3 一種簡單的代碼生成算法
10.3.1 寄存器的使用原則
10.3.2 待用信息和活躍信息
10.3.3 寄存器描述和變量地址描述
10.3.4 基本塊的代碼生成算法
10.4 DAG的目標代碼生成
10.5 練習
參考文獻