《編譯原理及實踐教程(第2版)》是2014年清華大學出版社出版的圖書,作者是黃賢英、曹瓊、王柯柯。
基本介紹
- 書名:編譯原理及實踐教程(第2版)
- 作者:黃賢英、曹瓊、王柯柯
- ISBN:9787302277439
- 定價:29元
- 出版社:清華大學出版社
- 出版時間:2014-8-13
- 裝幀:平裝
內容簡介,目錄,
內容簡介
本書系統地介紹了編譯程式的設計與構造以及各組成部分的軟體技術和實用方法。全書共8章,主要包括編譯程式概述、高級語言設計基礎、詞法分析、語法分析、語義分析和中間代碼生成、運行時存儲空間的組織、代碼最佳化以及目標代碼生成。本書的目標是使學習者建立一個較為完整的編譯系統的模型,掌握各個階段的基本算法、常用的編譯技術和方法,為今後從事系統軟體和套用軟體的開發打下理論和實踐基礎。為此,本書力求講清基本概念、基本原理和實現方法;書中引入了豐富的典型例題,配以大量的習題;本書以Sample語言為例來貫穿各章內容,介紹了其編譯程式的具體實現技術和構造方法。
本書可供高等學校計算機科學與技術及相關專業本科教學使用,也可供計算機系統軟體和套用軟體開發人員自學和參考。
目錄
第1章概述
1.1程式設計語言與編譯程式
1.1.1程式設計語言
1.1.2翻譯程式
1.1.3編譯程式和解釋程式
1.1.4編譯程式的夥伴
1.2編譯過程和編譯程式的結構
1.2.1編譯過程概述
1.2.2編譯程式的結構
1.2.3編譯階段的組合
1.3編譯程式的設計
1.3.1編譯程式的構造方式
1.3.2Sample語言編譯程式的設計
1.4編譯程式的發展及套用
1.4.1編譯程式的發展
1.4.2為什麼要學習編譯原理及其構造技術
1.4.3編譯技術的套用
1.5小結
1.6習題
第2章高級語言設計基礎
2.1符號和符號串
2.2文法與語言
2.2.1文法的定義
2.2.2文法產生的語言
2.2.3文法的二義性
2.2.4文法的分類
2.3高級語言的設計
2.3.1程式語言的定義
2.3.2馮·諾依曼體系結構與高級語言
2.3.3數據類型
2.3.4語句和控制結構
2.3.5語言設計的步驟
2.4語言設計實例
2.4.1Sample語言字元集的定義
2.4.2Sample語言單詞的定義
2.4.3Sample語言數據類型的定義
2.4.4Sample語言表達式的定義
2.4.5Sample語言語句的定義
2.4.6Sample語言程式體和程式的定義
2.4.7符合Sample語言定義的源程式舉例
2.5小結
2.6習題
第3章詞法分析
3.1詞法分析的任務和功能
3.1.1詞法分析的功能
3.1.2單詞的類型和種別碼
3.2詞法分析器的設計
3.2.1詞法分析程式的接口
3.2.2詞法分析程式的總體設計
3.2.3詞法分析程式的詳細設計
3.2.4單詞的識別和狀態轉換圖
3.2.5符號表及其操作
3.2.6詞法分析階段的錯誤處理
3.3正規文法、正規式與有窮自動機
3.3.1正規文法
3.3.2正規式
3.3.3有窮自動機
3.3.4正規文法與有窮自動機的等價性
3.3.5正規式與有窮自動機的等價性
3.4詞法分析程式的自動生成
3.4.1LEX的概述
3.4.2LEX源檔案的書寫
3.4.3LEX的工作原理
3.4.4LEX使用中的一些注意事項
3.4.5使用LEX自動生成Sample語言的詞法分析程式
3.5小結
3.6習題
第4章語法分析
4.1語法分析概述
4.2自上而下的語法分析
4.2.1自上而下分析方法中的問題探究
4.2.2遞歸下降分析方法
4.2.3預測分析方法
4.2.4Sample語言自上而下語法分析程式的設計
4.3自下而上的語法分析
4.3.1自下而上分析方法概述
4.3.2算符優先分析法
4.3.3LR分析法
4.4語法分析器的自動生成工具YACC
4.4.1YACC概述
4.4.2YACC源檔案的格式
4.4.3YACC的翻譯規則
4.4.4YACC的輔助程式
4.5語法分析程式中的錯誤處理
4.5.1語法分析中的錯誤處理的一般原則
4.5.2自上而下語法分析的錯誤處理
4.5.3自下而上語法分析的錯誤處理
4.6小結
4.7習題
第5章語義分析和中間代碼生成
5.1概述
5.1.1語義分析和中間代碼生成的功能和任務
5.1.2靜態語義檢查
5.1.3語義處理
5.2屬性文法和語法制導的翻譯
5.2.1屬性文法的定義
5.2.2綜合屬性的計算
5.2.3繼承屬性的計算
5.2.4語法制導的翻譯方法
5.3常見語句的語法制導的翻譯
5.3.1語義變數和語義函式
5.3.2常量說明語句的語義處理
5.3.3變數說明語句的語義處理
5.3.4算術表達式和簡單賦值語句的翻譯
5.3.5布爾表達式的翻譯
5.3.6if語句的翻譯
5.3.7do…while語句的翻譯
5.3.8for語句的翻譯
5.4Sample語言語法制導的翻譯程式的設計
5.5小結
5.6習題
第6章運行時存儲空間的組織
6.1程式執行時的活動
6.1.1源程式中的過程
6.1.2過程執行時的活動
6.1.3名字的作用域
6.1.4參數的傳遞
6.1.5名字的綁定
6.2程式執行時的存儲器組織
6.2.1程式執行時存儲器的劃分
6.2.2活動記錄
6.2.3存儲分配策略
6.3靜態存儲分配
6.3.1靜態存儲分配的性質
6.3.2靜態存儲分配的實現
6.3.3臨時變數的地址分配
6.4棧式存儲分配策略
6.5堆式存儲分配
6.5.1堆式存儲分配的主要問題
6.5.2堆式動態存儲分配的實現
6.5.3存儲回收
6.6小結
6.7習題
第7章代碼最佳化
7.1概述
7.1.1代碼最佳化的地位
7.1.2基本塊的概念及流圖
7.2局部最佳化
7.2.1刪除公共子表達式
7.2.2複寫傳播
7.2.3刪除無用代碼
7.2.4對程式進行代數恆等變換
7.2.5基本塊的DAG表示及最佳化
7.3循環最佳化
7.3.1循環的定義
7.3.2代碼外提
7.3.3強度削弱
7.3.4刪除歸納變數
7.4小結
7.5習題
第8章目標代碼生成
8.1概述
8.2目標機器
8.3簡單的代碼生成算法
8.3.1中間代碼的簡單翻譯方法
8.3.2引用信息和活躍信息
8.3.3暫存器描述和地址描述
8.3.4基本塊的代碼生成算法
8.4從DAG生成目標代碼
8.5Sample代碼最佳化及目標代碼生成器的設計
8.6小結
8.7習題
參考文獻