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