第一章 引 言
1. 1 程序設計語言
1. 2 翻譯程序
1. 3 編譯程序模型
1. 4 編譯程序的前后處理器
1. 4. 1 預處理器
1. 4. 2 匯編程序
1. 4. 3 兩遍匯編
1. 4. 4 加載器和連接編輯器
1. 5 編譯技術在軟件工程中的應用
練 習
第二章 文法和語言的榴念和表示
2. 1 文法的非形式討論
2. 1. 1 語法樹
2. 1. 2 規(guī)則
2. 1. 3 由規(guī)則推導句子
練 習
2. 2 符號. 符號串及其集合的運算
2. 2. 1 字母表和符號串
2. 2. 2 符號串及其集合的運算
練 習
2. 3 文法和語言的形式定義
2. 3. 1 文法的形式定義
2. 3. 2 推導的形式定義
2. 3. 3 語言的形式定義
2. 3. 4 遞歸規(guī)則與遞歸文法
2. 3. 5 短語. 簡單短語和句柄
練 習
2. 4 語法樹和二義性
2. 4. 1 推導與語法樹
2. 4. 2 文法的二義性
練 習
2. 5 符號串的分析
2. 5. 1 自頂向下分析
2. 5. 2 自底向上分析
2. 6 有關文法的實用限制
練 習
2. 7 擴充的BNF表示和語法圖
2. 7. 1 擴充的BNF表示
2. 7. 2 語法圖
2. 8 文法和語言分類
第三章 詞法分析
3. 1 詞法分析程序的功能
3. 2 源程序的輸入與詞法分橋程序的輸Q.
3. 2. 1 源程序的輸入
3. 2. 2 單詞符號的種類及詞法分析程序的輸出形式
3. 3 正則文法及其狀態(tài)圖
3. 3. 1 狀態(tài)圖
3. 3. 2 狀態(tài)圖的作用
3. 4 詞法分析程序的設計與實現
3. 4. 1 文法及其狀態(tài)圖
3. 4. 2 詞法分析程序的構造
3. 4. 3 詞法分析程序的實現
3. 5 正則文法和正則表達式
3. 6 有窮自動機(FA)
3. 6. 1 確定的有窮自動機(DFA)
3. 6. 2 不確定的有窮自動機(NFA)
3. 6. 3 NFA的確定化
3. 6. 4 正則表達式與有窮自動機的等價性
3. 7 詞法分析程序的自動生成器
3. 7. 1 LEX源程序(LEX的輸入文件)
3, 7. 2 LEX的實現
練 習
第四章 語法分析
4. 1 自頂向下分析方法
4. 1. 1 帶回溯的自頂向下分橋算法
4. 1. 2 存在的問題及解決辦法
4. 2 遞歸下降分析(遞歸子程序法)
練 習
4. 3 LL(1)分析方法
4. 3. 1 LL(1)分析器的邏輯結構及工作過程
4. 3. 2 LL(1)分析表的構造方法
練 習
4. 4 自底向上分析方法
4. 5 算符優(yōu)先分析法
4. 5. 1 方法概述
4. 5. 2 直觀算符優(yōu)先分析法
4. 5. 3 算符優(yōu)先分析法的進一步討論
練 習
4. 6 LR分析方法
4. 6. 1 概念和術語
練 習
4. 6. 2 LR(0)分析器
練 習
4. 6. 3 SLR(1)分析器
練 習
4. 6. 4 規(guī)范LR(1)分析器
練 習
4. 6. 5 LALR(1)分析器
練 習
第五章 語法制導翻譯技術
5. 1 翻譯文法(TG)
5. 2 語法制導翻譯
5. 3 屬性翻譯文法(ATG)
5. 3. 1 綜合屬性
5. 3. 2 繼承屬性
5. 3. 3 屬性翻譯文法
5. 3. 4 屬性翻譯文法舉例——算術表達式的翻譯
練 習
5. 4 自頂向下語法制導翻譯
5. 4. 1 翻譯文法的自頂向下處理
練 習
5. 4. 2 屬性文法的自頂向下翻譯
練 習
5. 5 自底向上的語法制導翻譯
5. 5. 1 波蘭翻譯
5. 5. 2 S—屬性文法
練 習
第六章 符號表管理技術
6. 1 前景和動機
6. 2 何時建立和訪問符號表
6. 3 符號表內容
6. 4 在符號表上的操作
6. 5 非分程序結構語言的符號表組織
6. 5. 1 無序符號表
6. 5. 2 有序符號表
6. 5. 3 散列符號表
6. 6 分程序結構語言的符號表組織
6. 6. 1 分程序結構語言的概念
6. 6. 2 棧式符號表
6. 6. 3 散列符號表的棧式實現
練 習
第七章 運行時的存貯組織及管理
7. 1 靜態(tài)存貯分配
練 習
7. 2 動態(tài)存貯分配
7. 2. 1 活動記錄
7. 2. 2 參數區(qū)
7. 2. 3 Display區(qū)
7. 2. 4 運行時的地址計算
7. 2. 5 遞歸過程的處理
練 習
7. 3 堆式存貯分配
7. 3. 1 隱式存貯請求
7. 3. 2 顯示存貯請求
7. 3. 3 堆式存貯管理技術
第八章 源程序的中間形式
8. 1 波蘭表示
8. 2 N—元表示
8. 3 抽象語法樹
8. 4 抽象機代碼
8. 4. 1 可移植性和抽象機
8. 4. 2 PASCAL的P—code抽象機
練 習
第九章 錯誤處理
9. 1 概述
9. 2 錯誤的分類
9. 3 錯誤的診察與報告
9. 4 錯誤處理技術
9. 4. 1 錯誤改正
9. 4. 2 錯誤局部化處理
9. 5 遏止重復的錯誤信息
第十章 語義分析和代碼生成
l0. 1 語義分析的概念
10. 2 棧式抽象機及其匯編指令
10. 3 聲明的處理
10. 3. 1 常量類型
10. 3. 2 簡單變量
10. 3. 3 數組變量
lo. 3. 4 記錄變量
10. 3. 5 過程聲明
l0. 4 表達式
10. 5 賦值語句
10. 6 控制語句
10. 6. 1 if語句
10. 6. 2 分情形語句
10. 6. 3 repeat—while語句
lo. 6. 4 for循環(huán)語句
10. 7 過程調用和返回
10. 7. 1 參數的基本傳遞形式
10. 7. 2 過程調用
10. 7. 3 返回語句和過程終止
10. 8 輸入和輸出語句
10. 8. 1 輸入語句
10. 8. 2 輸出語句
10. 9 編譯程序的輔助功能
練 習
第十一章 代碼優(yōu)化
11. 1 概述
11. 2 基本塊
11. 3 常數合并
11. 4 冗余子表達式的消防
11. 5 循環(huán)內的優(yōu)化
11. 5. 1 循環(huán)展開
11. 5. 2 額度削弱
11. 5. 3 強度削弱
11. 5. 4 循環(huán)優(yōu)化技術的綜合
練 習
第十二章 與機器有關的優(yōu)化及目標代碼的生成
12. 1 與機器有關的優(yōu)化概述
12. 2 寄存器分配的優(yōu)化
12. 2. 1 單寄存器機器中的寄存器分配
12. 2. 2 多寄存器機器中的寄存器分配
12. 3 目標機和目標代碼生成
12. 3. 1 PDP—11
12. 3. 2 VAX—11
練 習
第十三章 編譯程序生成方法和工具
13. 1 編譯程序的書寫語言
13. 2 自展
13. 3 移植
13. 4 編譯程序一編譯程序
13. 4. 1 YACC:一個LALR(1)分析器生成器
13. 4. 2 屬性LL(1)分析器生成器
13. 4. 3 代碼生成器的生成系統(tǒng)
第十四章 PL/O簡單編譯系統(tǒng)
14. 1 PL/O語言
14. 2 PL/O編譯系統(tǒng)結構
14. 3 PL/0的詞法分析
14. 4 PL/O的語法分析
14. 5 出錯處理
14. 6 目標代碼的生成和解釋執(zhí)行
14. 7 PL/O程序編譯和運行舉例
第十五章 Pascal—S編譯系統(tǒng)
15. 1 Pascal—S語言
15. 2 Pascal—S編譯程序的結構
15. 3 Pascal—S編譯程序
15. 3. 1 表格
15. 3. 2 編譯初啟
15. 3. 3 實用程序
15. 3. 4 詞法分析及處理
15. 3. 5 語法分析處理
15. 3. 6 出錯處理
15. 4 Pascal—S解釋執(zhí)行程序
15. 4. 1 P代碼指令系統(tǒng)
15. 4. 2 運行棧
15. 4. 3 運行時的display
15. 4. 4 運行出錯處理和現場剖析打印
15. 5 編譯及運行的例子
參考資料
附錄A PL/O編譯系統(tǒng)源程序清單
附錄B Pascal—S編譯系統(tǒng)源程序請單