作 者:黃賢英、王柯柯、曹瓊、魏星 著
定 價:49.8
出 版 社:清華大學出版社
出版日期:2018年08月01日
頁 數:310
裝 幀:平裝
ISBN:9787302520078
《編譯原理及實踐教程(第3版)》書中實例具有連貫性,可以建立一個完整的編譯繫統模型。配套完備的教學資源,包括課件、習題答案、實驗、教學大綱、教學輔導軟件等。
●第1章編譯概述1.1程序設計語言及翻譯程序1.1.1程序設計語言的發展1.1.2翻譯程序大家族1.1.3高級語言的運行方式1.2編譯繫統1.2.1高級語言編譯流程1.2.2高級語言編譯實例1.3編譯過程和編譯程序的結構1.3.1編譯過程概述1.3.2編譯程序的結構1.3.3編譯階段的組合1.4編譯程序的構造方法1.5認識Sample語言1.5.1高級語言的構成成分1.5.2程序的結構1.5.3Sample語言規範1.5.4符合Sample語言規範的源程序舉例1.6編譯程序的發展及編譯技術的應用1.6.1編譯程序的發展1.6.2編譯技術的應用1.6.3為什麼要學習編譯原理及其構造技術1.7本書結構1.8小結1.9習題第2章詞法分析2.1詞法分析概述2.2高級語言中的單詞2.2.1單詞的分類2.2.2單詞的種別碼2.3單詞的識別2.3.1狀態轉換圖2.3.2單詞識別程序2.3.3超前搜索技術和雙界符的識別2.3.4數值型常量的識別與狀態轉換圖的合並2.4詞法分析器的設計2.5正則表達式與有窮自動機2.5.1符號和符號串2.5.2集合的運算及語言的定義2.5.3正則表達式2.5.4有窮自動機2.5.5正則表達式與有窮自動機的等價性2.6詞法分析器的自動生成工具2.6.1Lex概述2.6.2Lex源文件的書寫2.6.3Lex的工作原理2.6.4Lex使用中的一些注意事項2.6.5使用Lex自動生成詞法分析器2.7詞法分析中的錯誤處理2.8小結2.9習題第3章語法分析3.1語法分析概述3.2上下文無關文法3.2.1文法的定義3.2.2推導3.2.3文法產生的語言3.2.4語法樹3.2.5二義文法3.2.6消除二義性*3.2.7Sample語言文法描述3.3自上而下的語法分析3.3.1自上而下分析方法中的問題探究3.3.2LL(1)文法3.3.3遞歸下降分析方法3.3.4預測分析方法3.4自下而上的語法分析3.4.1自下而上分析方法概述3.4.2算符優先分析3.4.3LR分析法3.5語法分析器的自動生成工具YACC3.5.1YACC概述3.5.2YACC源文件的格式3.5.3YACC的翻譯規則3.5.4YACC的輔助程序3.6語法分析中的錯誤處理3.6.1語法分析中的錯誤處理的一般原則3.6.2自上而下語法分析的錯誤處理3.6.3自下而上語法分析的錯誤處理3.7小結3.8習題第4章語義分析4.1語義分析概述4.2Sample語言的語義描述4.2.1程序的語義4.2.2函數的語義4.2.3各種名字的聲明和使用的語義4.2.4各種語句的語義4.2.5表達式的語義4.3符號表管理技術4.3.1符號表概述4.3.2符號表的組織方式4.3.3符號表的操作4.4靜態語義檢查4.4.1靜態語義檢查概述4.4.2聲明與定義語義檢查4.4.3表達式語義檢查4.4.4語句語義檢查4.5小結4.6習題第5章中間代碼生成5.1中間代碼生成概述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.4常見語句的語法制導的翻譯5.4.1聲明語句的語義處理5.4.2表達式的翻譯5.4.3布爾表達式的翻譯5.4.4控制語句的翻譯*5.4.5函數定義及函數調用的翻譯5.5中間代碼生成器的設計5.6小結5.7習題第6章運行時存儲組織6.1存儲組織6.1.1程序執行時存儲器的劃分6.1.2活動記錄6.1.3局部數據布局6.2函數調用6.2.1源程序中的函數6.2.2函數執行時的活動6.2.3名字的作用域6.2.4參數的傳遞6.2.5名字的綁定6.3存儲分配策略6.3.1靜態存儲分配6.3.2棧式存儲分配6.3.3堆式存儲分配*6.4垃圾回收機制6.4.1可達性6.4.2引用計數回收器6.4.3標記清掃回收器6.4.4復制回收器6.5C語言編譯程序運行時存儲實例6.5.1內存的劃分及程序執行的總體情況6.5.2案例: 程序運行時內存的變化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.2.180x86體繫結構8.2.280x86中的寄存器8.2.380x86指令繫統介紹8.3一個簡單的代碼生成器8.4基本塊的代碼生成器8.4.1引用信息和活躍信息8.4.2寄存器描述和地址描述8.4.3基本塊的代碼生成8.5從DAG生成目標代碼8.6代碼優化及目標代碼生成器的設計8.6.1目標代碼生成器的結構8.6.2彙編指令的選擇8.6.3構成完整的彙編語言程序8.7小結8.8習題參考文獻
本書主要講述設計和構造編譯程序的一般原理、基本設計方法和主要實現技術,以高級語言程序編譯的6個主要階段——詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成為線索,闡述了各階段的主要功能、原理、設計技術和實現方法。本書適合作為工程實踐型、應用型本科院校計算機相關專業的教材,也適合作為工程技術人員的參考書。
第3章語法分析語法分析就是根據高級語言的語法規則對程序的語法結構進行分析,是編譯過程的核心。它的任務是判斷讀入的單詞符號串是否符合語言的語法規則,為語義分析和代碼生成做準備。執行語法分析的程序稱為語法分析程序,也稱為語法分析器。為了能夠更準確地描述高級語言程序的語法結構,需要對高級語言的語法規則進行形式化描述,這種描述稱為文法,適合描述高級語言語法規則的文法是上下文無關文法。因此本章首先介紹文法的相關概念。語法分析的方法很多,不同的語法分析方法適用於不同的文法,有不同的使用場合和條件。語法分析不僅可以手工構造,也可以自動生成,本章最後介紹自動生成器YACC的基本原理和使用方法。3.1語法分析概述語法分析在編譯過程中處於核心地位,如圖3.1所示。其任務是在詞法分析識別出正確的單詞符號串的基礎上,根據語言定義的語法規則等
編譯程序在計算機科學與技術的發展歷史中發揮著巨大作用,是計算機繫統的核心支撐軟件。編譯原理蘊含著計算機學科中解決問題的思路、形式化問題和解決問題的方法,對應用軟件和繫統軟件的設計和開發有一定的啟發和指導作用。構造編譯程序所涉及的方法和技術在軟件工程、語言轉換等許多領域中有廣泛的應用。本書主要講述設計和構造編譯程序的一般原理、基本方法和主要實現技術,貫穿高級語言、繫統環境、體繫結構和目標代碼,體現了從軟件到硬件的整機概念。以高級語言程序編譯的6個主要階段——詞法分析、語法分析、語義分析、中間代碼生成、代碼優化和目標代碼生成為線索,闡述了各階段的主要功能、原理、設計技術和實現方法。為適應新工科建設的需要,本書的修訂基於OBE的理念,將編譯的基本理論與具體實現技術有機地結合起來,既注重理論的完整性,又將理論融於具體實例中。書中的實例具有連貫性,力求讓讀者建立一個完整的編譯繫統的模型,加深等