本書為“基于系統(tǒng)能力培養(yǎng)的計算機專業(yè)課程建設(shè)研究”項目規(guī)劃教材,同時也是國家精品資源共享課程主講教材。本書對傳統(tǒng)編譯技術(shù)課程內(nèi)容進行了結(jié)構(gòu)性改革,首先暫時拋開大量形式化方法,先給學(xué)生一個完整的編譯過程,以及這個過程中涉及的編譯技術(shù),在該過程中同時介紹相關(guān)的理論和方法。對于編譯過程中涉及的形式化方法、編譯自動生成技術(shù)、編譯優(yōu)化技術(shù)等,則將其放在了一個完整的編譯過程之后,作為必要的補充。 全書共分三部分。其中,一部分基礎(chǔ)篇(1~10章),包含編譯技術(shù)概述、語言與文法基礎(chǔ)、一個簡單編譯器的構(gòu)造(一個完整的編譯過程)。第二部分提高篇(11~16章),重點介紹編譯程序的自動化生成技術(shù)和代碼優(yōu)化及面向目標機的代碼生成技術(shù)。第三部分實例篇(17~18章),給出兩個小型編譯系統(tǒng)的完整設(shè)計。與教材配套的課程網(wǎng)站(易課程網(wǎng)、愛課程網(wǎng))包括課程教學(xué)視頻、電子教案、案例源代碼等教學(xué)資源。 本書可作為本科計算機類專業(yè)編譯技術(shù)課程教材,也可供相關(guān)技術(shù)人員參考使用。
前輔文
第1部分 基礎(chǔ)篇
第1章 編譯概述
1.1 什么是程序設(shè)計語言
1.1.1 程序設(shè)計語言的定義方法
1.1.2 程序設(shè)計語言的處理系統(tǒng)
1.1.3 編譯程序和解釋程序
1.2 與編譯程序相關(guān)的處理系統(tǒng)
1.3 編譯程序和程序設(shè)計環(huán)境
1.4 編譯程序的構(gòu)造
1.5 編譯技術(shù)在軟件工程中的應(yīng)用
練習1
第2章 文法和語言的概念和表示
2.1 文法的非形式討論
2.1.1 語法樹
2.1.2 規(guī)則
2.1.3 由規(guī)則推導(dǎo)句子
練習2-1
2.2 符號?符號串及其集合的運算
2.2.1 字母表和符號串
2.2.2 符號串及其集合的運算
練習2-2
2.3 文法和語言的形式定義
2.3.1 文法的形式定義
2.3.2 推導(dǎo)的形式定義
2.3.3 語言的形式定義
2.3.4 遞歸規(guī)則與遞歸文法
2.3.5 短語?簡單短語和句柄
練習2-3
2.4 語法樹和二義性
2.4.1 推導(dǎo)與語法樹
2.4.2 文法的二義性
練習2-4
2.5 符號串的分析
2.5.1 自頂向下分析
2.5.2 自底向上分析
2.6 有關(guān)文法的實用限制
練習2-5
2.7 擴充的BNF 表示和語法圖
2.7.1 擴充的BNF 表示
2.7.2 語法圖
2.8 文法和語言分類
第3章 詞法分析程序的設(shè)計
3.1 詞法分析程序的功能及實現(xiàn)方案
3.2 單詞的種類及詞法分析程序的輸出形式
3.3 正則文法及其狀態(tài)圖
3.3.1 狀態(tài)圖
3.3.2 狀態(tài)圖的使用
3.4 詞法分析程序的設(shè)計與實現(xiàn)
3.4.1 文法及其狀態(tài)圖
3.4.2 詞法分析程序的構(gòu)造
3.4.3 詞法分析程序的實現(xiàn)
練習3
第4章 語法分析(一)
4.1 自頂向下分析方法
4.1.1 帶回溯的自頂向下分析方法
4.1.2 存在的問題及解決辦法
練習4-1
4.2 遞歸下降分析法
4.3 基于遞歸下降分析法的語法分析程序構(gòu)造
練習4-2
第5章 符號表管理技術(shù)
5.1 概述
5.1.1 符號表的概念及建立和訪問時間
5.1.2 符號表的重要性和作用
5.1.3 在符號表上的操作
5.2 符號表的組織和內(nèi)容
5.2.1 符號表的結(jié)構(gòu)與內(nèi)容
5.2.2 符號表的組織方式
5.3 非分程序結(jié)構(gòu)語言的符號表組織
5.3.1 標識符的作用域及基本處理方法
5.3.2 符號表的組織方式
5.4 分程序結(jié)構(gòu)語言的符號表組織
5.4.1 標識符的作用域及基本處理方法
5.4.2 定位和重定位操作
5.4.3 符號表的組織方式
練習5
第6章 運行時的存儲組織及管理
6.1 靜態(tài)存儲分配
練習6-1
6.2 動態(tài)存儲分配
6.2.1 活動記錄
6.2.2 參數(shù)區(qū)
6.2.3 display 區(qū)
6.2.4 運行時的地址計算
6.2.5 遞歸過程的處理
6.3 內(nèi)存垃圾回收器
6.3.1 引用計數(shù)
6.3.2 標記和清除垃圾回收器
6.3.3 標記緊縮算法
6.3.4 拷貝回收算法
6.3.5 分代垃圾回收器
練習6-2
第7章 源程序的中間形式
7.1 波蘭表示
7.2 N-元表示
7.3 抽象語法樹
7.4 抽象機代碼
7.4.1 可移植性和抽象機
7.4.2 Pascal 的P-code抽象機
7.4.3 P-code 指令
練習7
第8章 錯誤處理
8.1 概述
8.2 錯誤的分類
8.3 錯誤的檢查與報告
8.4 錯誤處理技術(shù)
8.4.1 錯誤改正
8.4.2 錯誤局部化處理
8.4.3 目標程序運行時錯誤檢測與處理
8.4.4 遏止重復(fù)的錯誤信息
第9章 語法制導(dǎo)翻譯技術(shù)
9.1 翻譯文法
9.2 語法制導(dǎo)翻譯
9.3 屬性翻譯文法
9.3.1 綜合屬性
9.3.2 繼承屬性
9.3.3 屬性翻譯文法
9.3.4 屬性翻譯文法舉例:算術(shù)表達式的翻譯
練習9-1
9.4 自頂向下語法制導(dǎo)翻譯
9.4.1 翻譯文法的自頂向下翻譯
練習9-2
9.4.2 屬性翻譯文法的自頂向下翻譯
練習9-3
第10章 語義分析和代碼生成
10.1 語義分析的概念
10.2 棧式抽象機及其匯編指令
10.3 聲明語句的處理
10.3.1 常量類型
……