《編譯原理與技術(第2版)》是由李文生編著,2016年清華大學出版社出版的計算機系列教材。 該書可作為高等學校計算機科學與技術專業的本科生教材或參考書,也可供其他專業的學生或從事計算機工作的工程技術人員閱讀參考。
該教材系統地介紹了編譯程式的設計原理和基本實現技術。主要內容包括詞法分析、語法分析、語義分析、中間代碼生成、代碼生成和代碼最佳化等,還重點介紹了用於實現語義分析和中間代碼生成的語法制導翻譯技術,以及程式運行時存儲空間的組織與管理。
基本介紹
- 書名:編譯原理與技術(第2版)
- 作者:李文生
- ISBN:9787302441410
- 類別:計算機系列教材
- 頁數:415頁
- 出版社:清華大學出版社
- 出版時間:2016-10-01
- 裝幀:平裝
- 開本:16開
成書過程
內容簡介
教材目錄
第1章編譯概述/1 1.1翻譯和解釋/1 1.1.1程式設計語言/1 1.1.2翻譯程式/2 1.2編譯的階段和任務/4 1.2.1分析階段/4 1.2.2綜合階段/7 1.2.3符號表管理/10 1.2.4錯誤處理/10 1.3和編譯有關的其他概念/11 1.3.1編譯的前端和後端/11 1.3.2“遍”的概念/11 1.4編譯程式的夥伴工具/13 1.4.1預處理器/14 1.4.2彙編程式/14 1.4.3連線裝配程式/16 1.5編譯原理的套用/16 習題1/18 第2章形式語言與自動機基礎/19 2.1語言和文法/19 2.1.1字母表和符號串/19 2.1.2語言/20 2.1.3文法及其形式定義/21 2.1.4推導和短語/23 2.1.5分析樹及二義性/25 2.1.6文法變換/27 2.2有限自動機/31 2.2.1確定的有限自動機/32 2.2.2非確定的有限自動機/342.2.3具有ε轉移的非確定的有限自動機/36 2.2.4DFA的化簡/40 2.3正規文法與有限自動機的等價性/42 2.4正規表達式與有限自動機的等價性/45 2.5正規表達式與正規文法的等價性/48 2.5.1正規定義式/48 2.5.2表示的縮寫/49 2.5.3正規表達式轉換為等價的正規文法/50 習題2/51 第3章詞法分析/53 3.1詞法分析程式與語法分析程式的關係/53 3.2詞法分析程式的輸入與輸出/54 3.2.1輸入緩衝區/54 3.2.2詞法分析程式的輸出/56 3.3記號的描述和識別/57 3.3.1詞法與正規文法/58 3.3.2記號的文法/58 3.3.3狀態轉換圖與記號的識別/61 3.4詞法分析程式的設計與實現/62 3.4.1文法及狀態轉換圖/63 3.4.2詞法分析程式的構造/65 3.4.3詞法分析程式的實現/65 3.5LEX簡介/71 3.5.1LEX源程式的結構/71 3.5.2LEX源程式舉例/74 習題3/76 程式設計1/77 第4章語法分析/78 4.1語法分析簡介/78 4.1.1語法分析程式的地位/78 4.1.2常用的語法分析方法/78 4.1.3語法錯誤的處理/79 4.2自頂向下分析方法/80 4.2.1遞歸下降分析/81 4.2.2遞歸調用預測分析/82 4.2.3非遞歸預測分析/88 4.3自底向上分析方法/95 4.3.1規範歸約/97 4.3.2“移進歸約”方法的實現/98 4.4LR分析方法/100 4.4.1LR分析程式的模型及工作過程/100 4.4.2SLR(1)分析表的構造/104 4.4.3LR(1)分析表的構造/112 4.4.4LALR(1)分析表的構造/119 4.4.5LR分析方法對二義文法的套用/124 4.4.6LR分析的錯誤處理與恢復/129 4.5軟體工具YACC/131 4.5.1YACC源程式/132 4.5.2YACC對二義文法的處理/134 4.5.3用LEX建立YACC的詞法分析程式/136 習題4/137 程式設計2/141 第5章語法制導翻譯技術/142 5.1語法制導定義及翻譯方案/143 5.1.1語法制導定義/143 5.1.2依賴圖/146 5.1.3計算次序/147 5.1.4S屬性定義及L屬性定義/148 5.1.5翻譯方案/149 5.2S屬性定義的自底向上翻譯/151 5.2.1為表達式構造語法樹的語法制導 定義/151 5.2.2S屬性定義的自底向上翻譯/155 5.3L屬性定義的自頂向下翻譯/158 5.3.1消除翻譯方案中的左遞歸/158 5.3.2預測翻譯程式的設計/162 5.4L屬性定義的自底向上翻譯/165 5.4.1移走翻譯方案中嵌入的語義規則/166 5.4.2直接使用分析棧中的繼承屬性/166 5.4.3變換繼承屬性的計算規則/169 5.4.4改寫語法制導定義為S屬性定義/172 5.5通用的語法制導翻譯方法/173 習題5/176 第6章語義分析/180 6.1語義分析概述/180 6.1.1語義分析的任務/180 6.1.2語義分析程式的位置/181 6.1.3錯誤處理/181 6.2符號表/182 6.2.1符號表的建立和訪問時機/182 6.2.2符號表內容/184 6.2.3符號表操作/187 6.2.4符號表組織/189 6.3類型檢查/193 6.3.1類型表達式/194 6.3.2類型等價/197 6.4一個簡單的類型檢查程式/204 6.4.1語言說明/204 6.4.2符號表的建立/205 6.4.3表達式的類型檢查/210 6.4.4語句的類型檢查/213 6.4.5類型轉換/214 6.5類型檢查有關的其他主題/216 6.5.1函式和運算符的重載/216 6.5.2多態函式/217 | 習題6/220 程式設計3/223 第7章運行環境/225 7.1程式運行時的存儲組織/225 7.1.1程式運行空間的劃分/226 7.1.2活動記錄與控制棧/227 7.1.3名字的作用域及名字綁定/230 7.2存儲分配策略/231 7.2.1靜態存儲分配/231 7.2.2棧式存儲分配/233 7.2.3堆式存儲分配/237 7.3非局部名字的訪問/239 7.3.1程式塊/239 7.3.2靜態作用域規則下非局部名字的 訪問/241 7.3.3動態作用域規則下非局部名字的 訪問/248 7.4參數傳遞機制/250 7.4.1傳值調用/250 7.4.2引用調用/252 7.4.3複製恢復/253 7.4.4傳名調用/255 習題7/255 第8章中間代碼生成/259 8.1中間代碼形式/259 8.1.1圖形表示/259 8.1.2三地址代碼/260 8.2賦值語句的翻譯/265 8.2.1僅涉及簡單變數的賦值語句的 翻譯/265 8.2.2涉及數組元素的賦值語句/268 8.2.3記錄結構中域的訪問/273 8.3布爾表達式的翻譯/274 8.3.1翻譯布爾表達式的方法/274 8.3.2數值表示法/275 8.3.3控制流表示法及回填技術/276 8.4控制語句的翻譯/282 8.5goto語句的翻譯/287 8.6CASE語句的翻譯/289 8.7過程調用語句的翻譯/292 習題8/294 第9章目標代碼生成/297 9.1目標代碼生成概述/297 9.1.1代碼生成程式的位置/297 9.1.2代碼生成程式設計的相關問題/298 9.2基本塊和流圖/300 9.3下次引用信息/302 9.4一個簡單的代碼生成程式/305 9.4.1目標機器描述/305 9.4.2代碼生成算法/307 9.4.3其他常用語句的代碼生成/312 習題9/315 第10章代碼最佳化/317 10.1代碼最佳化概述/317 10.1.1代碼最佳化程式的功能和位置/317 10.1.2代碼最佳化的主要種類/317 10.2基本塊最佳化/318 10.2.1常數合併及常數傳播/318 10.2.2刪除公共表達式/320 10.2.3複製傳播/321 10.2.4削弱計算強度/321 10.2.5改變計算次序/321 10.3dag在基本塊最佳化中的套用/322 10.3.1基本塊的dag表示/322 10.3.2基本塊的dag構造算法/323 10.3.3dag的套用/327 10.3.4dag構造算法的進一步討論/330 10.4循環最佳化/333 10.4.1循環展開/333 10.4.2代碼外提/334 10.4.3削弱計算強度/334 10.4.4刪除歸納變數/335 10.5窺孔最佳化/337 10.5.1刪除冗餘的傳送指令/337 10.5.2刪除死代碼/337 10.5.3控制流最佳化/338 10.5.4削弱計算強度及代數化簡/338 習題10/339 第11章面向對象的編譯方法/341 11.1面向對象語言的基本概念/341 11.1.1類和對象/341 11.1.2繼承/343 11.1.3信息封裝/346 11.1.4多態性/347 11.2方法的編譯/350 11.2.1靜態方法/350 11.2.2動態方法/351 11.3繼承的編譯/354 11.3.1單一繼承的編譯/354 11.3.2多繼承的編譯/355 11.4程式運行環境/358 習題11/359 第12章編譯程式構造實踐/360 12.1編譯程式的表示及實現方法/360 12.1.1表示方法/360 12.1.2實現語言/360 12.1.3自展法/361 12.1.4移植法/362 12.2PL/0語言及其編譯程式介紹/364 12.2.1PL/0語言/365 12.2.2PL/0編譯程式的結構/368 12.2.3PL/0編譯程式的詞法分析/369 12.2.4PL/0編譯程式的語法分析/371 12.2.5PL/0編譯程式的出錯處理/373 12.2.6PL/0編譯程式的執行環境及 代碼生成/375 12.2.7PL/0程式編譯和運行示例/379 12.3GCC編譯程式/381 12.3.1GCC簡介/382 12.3.2GCC編譯程式的結構與處理 流程/383 12.3.3GCC的分析程式/384 12.3.4GCC的中間語言及中間代碼 生成/385 12.3.5GCC的代碼最佳化/389 12.3.6GCC的代碼生成/391 12.4編譯實踐/392 12.4.1PascalS語言說明/392 12.4.2課程設計要求及說明/398 12.4.3編譯程式的測試/400 附錄PL/0 編譯程式源程式/402 參考文獻/416 |
教學資源
- 配套教材
書名 | 書號 | 出版社 | 出版時間 | 作者 |
---|---|---|---|---|
《編譯原理與技術(第2版)學習指導與習題解析》 | 9787302495802 | 清華大學出版社 | 2018.07.01 | 李文生 |
- 課程資源