出版時(shí)間:2004-9 出版社:浙江大學(xué)出版社 作者:馮雁 編 頁數(shù):320
前言
編譯原理與技術(shù)是計(jì)算機(jī)專業(yè)設(shè)置的一門重要的專業(yè)課程,本書力圖以一種理論與實(shí)踐緊密結(jié)合的方式,將編譯程序的內(nèi)容闡述清楚。圍繞著如何構(gòu)造一個(gè)編譯器,介紹了現(xiàn)代編譯器設(shè)計(jì)方法的理論,還包括了眾多實(shí)例的講解。本書既可以作為計(jì)算機(jī)專業(yè)的本科生和研究生的程序編譯課程的教材,又可以用作專業(yè)人員的參考書或者用作編譯器編寫項(xiàng)目的入門參考書。雖然只有少數(shù)人真正從事編譯方面的工作,但是通過對該課程的學(xué)習(xí),使學(xué)生在理論、技術(shù)、方法上都得到了系統(tǒng)而有效的訓(xùn)練,有利于提高軟件人員的素質(zhì)和能力。 掌握編譯程序的構(gòu)造原理與方法的最好辦法是自己設(shè)計(jì)與編寫一個(gè)編譯程序,但要自己設(shè)計(jì)與編寫一個(gè)編譯程序,首先必須基本掌握編譯程序構(gòu)造的一般原理。因此,本書非常強(qiáng)調(diào)基本原理的闡述,針對具體的原理,我們都有實(shí)例的講解以配合對原理的理解。我們在編寫過程中也盡量把編譯原理的所有內(nèi)容都包括在其中,這樣,可以根據(jù)不同的教學(xué)要求對相關(guān)內(nèi)容進(jìn)行取舍,針對不同的教學(xué)對象進(jìn)行合理安排?! ”緯榻B的概念和技術(shù)不僅適用于編譯器的設(shè)計(jì),也適用于一般的軟件設(shè)計(jì)。例如,建立詞法分析器的串匹配技術(shù)已用于文本編輯器、信息檢索系統(tǒng)和模式識別器,上下文無關(guān)文法和語法制導(dǎo)翻譯等概念已用于設(shè)計(jì)許多諸如排版、繪圖系統(tǒng)這樣的小語言,代碼優(yōu)化技術(shù)已用于程序驗(yàn)證器和從非結(jié)構(gòu)化程序產(chǎn)生結(jié)構(gòu)化程序的程序驗(yàn)證器之中。所以,對從事計(jì)算機(jī)專業(yè)的人們來說也具有重要的意義和價(jià)值?! ∥覀冊趦?nèi)容的安排上考慮到了以下兩點(diǎn):(1)不同學(xué)校的教學(xué)計(jì)劃是不太一樣的,如有的計(jì)算理論是作為必修的,有的作為選修,有的則不一定開設(shè)這門課,因此,我們還是對自動(dòng)機(jī)理論作了詳細(xì)的講解,即使沒有學(xué)過自動(dòng)機(jī)理論,也可以從本書中得到這部分內(nèi)容的補(bǔ)充。(2)不同的教師會(huì)使用不同的實(shí)踐方法來加強(qiáng)對理論的理解和鞏固。有些教師傾向于用一系列分開的小例子去研究技術(shù),每個(gè)小例子都針對一個(gè)特定的概念;有些教師則偏向于做一個(gè)大的編譯器項(xiàng)目,該項(xiàng)目或通過工具Lex和Yacc來實(shí)現(xiàn),或通過手寫代碼(用遞歸下降分析)來實(shí)現(xiàn)。在本書中,我們也對工具Lex和Yacc進(jìn)行了適當(dāng)?shù)闹v解,可以根據(jù)需要來安排這部分的內(nèi)容。
內(nèi)容概要
《編譯原理與技術(shù)》從介紹編譯的原理性概念開始,然后通過構(gòu)建編譯器的過程來逐一解釋相關(guān)概念。《編譯原理與技術(shù)》深入討論了編譯器設(shè)計(jì)的重要主題,包括詞法分析、自動(dòng)機(jī)理論、語法分析(算符優(yōu)先分析、自頂向下分析、自下而上分析)、屬性文法、語法制導(dǎo)翻譯、類型檢查、運(yùn)行環(huán)境、中間代碼生成、代碼優(yōu)化、代碼生成、各種出錯(cuò)處理等,并結(jié)合樣例對詞法分析的自動(dòng)生成工具Lex和語法分析的自動(dòng)生成工具Yacc作了介紹。《編譯原理與技術(shù)》旨在介紹基本的理論和方法,而不偏向于某種源語言或目標(biāo)機(jī)器。全書內(nèi)容翔實(shí),圖文并茂;各章節(jié)之間循序漸進(jìn);每章都提供了大量的實(shí)例,并在各章之后附有習(xí)題,供讀者學(xué)習(xí)時(shí)練習(xí)和參考?!毒幾g原理與技術(shù)》可作為高等院校計(jì)算機(jī)專業(yè)本科生和研究生編譯原理與技術(shù)課程的教材,也可以作為計(jì)算機(jī)技術(shù)人員必讀的專業(yè)參考書之一。
書籍目錄
第1章 引論1.1 什么是編譯程序1.2 編譯器的基本階段1.2.1 詞法分析程序1.2.2 語法分析程序1.2.3 語義分析程序1.2.4 中間代碼生成器1.2.5 代碼優(yōu)化程序1.2.6 目標(biāo)代碼生成器1.2.7 符號表管理1.2.8 錯(cuò)誤處理1.3 與編譯器有關(guān)的程序1.3.1 解釋程序1.3.2 匯編程序1.3.3 鏈接和裝入程序1.3.4 預(yù)處理器1.3.5 調(diào)試程序1.4 一個(gè)簡單的編譯程序1.4.1 語言概述1.4.2 詞法分析程序1.4.3 遞歸下降語法分析1.4.4 中間代碼生成及優(yōu)化練習(xí)第2章 詞法分析2.1 掃描處理及緩沖2.2 正規(guī)表達(dá)式2.3 有限自動(dòng)機(jī)2.3.1 確定有限自動(dòng)機(jī)2.3.2 非確定有限自動(dòng)機(jī)2.4 從正則表達(dá)式到有限自動(dòng)機(jī)2.4.1 從正規(guī)式到NFA2.4.2 從NFA到DFA2.4.3 狀態(tài)數(shù)最小化2.5 詞法分析中要解決的幾個(gè)問題2.6 利用LEX建立詞法分析器練習(xí)第3章 上下文無關(guān)文法與語言3.1 上下文無關(guān)文法的基本概念和定義3.2 分析和推導(dǎo)3.2.1 分析和推導(dǎo)3.2.2 分析樹3.2.3 二義文法3.3 文法的設(shè)計(jì)3.3.1 驗(yàn)證由文法產(chǎn)生的語言3.3.2 消除二義性3.3.3 消除左遞歸3.3.4 提取左因子3.4 喬姆斯基層次及上下文無關(guān)文法的局限練習(xí)第4章 自頂向下語法分析4.1 遞歸程序?qū)崿F(xiàn)預(yù)測語法的分析器4.2 非遞歸預(yù)測分析法4.3 First集和Follow集概念及構(gòu)造4.4 預(yù)測分析表構(gòu)造4.5 LL(1)文法4.6 預(yù)測分析中的錯(cuò)誤恢復(fù)方法練習(xí)第5章 自下而上語法分析5.1 自底向上方法概述5.2 算符優(yōu)先分析法5.2.1 算符優(yōu)先分析算法5.2.2 優(yōu)先函數(shù)5.2.3 算符優(yōu)先分析中的出錯(cuò)處理5.3 LR語法分析器基本思想與概念5.3.1 LR文法5.4 SLR語法分析表構(gòu)造5.5 規(guī)范LR語法分析表構(gòu)造5.6 IALR語法分析表構(gòu)造5.7 LR語法分析表的壓縮5.8 LR語法分析中的錯(cuò)誤恢復(fù)5.9 二義性文法應(yīng)用5.9.1 使用優(yōu)先級與結(jié)合規(guī)則解決動(dòng)作的沖突5.9.2 懸空else的二義性5.9.3 特例產(chǎn)生式引起的二義性5.10 語法分析器自動(dòng)生成工具YACC5.10.1 YACC工具介紹5.10.2 用YA,CC處理二義性5.10.3 用LEX建立YACC的詞法分析器5.10.4 YACC中的錯(cuò)誤恢復(fù)練習(xí)第6章 語法制導(dǎo)翻譯6.1 語法制導(dǎo)定義6.2 屬性的計(jì)算6.2.1 屬性和屬性語法6.2.2 依賴圖6.2.3 計(jì)算次序6.2.4 自底向上計(jì)算繼承屬性6.2.5 臨時(shí)屬性的計(jì)算和外部數(shù)據(jù)結(jié)構(gòu)6.2.6 Knuth定理6.3 類型檢查6.3.1 類型系統(tǒng)6.3.2 類型表達(dá)式的等價(jià)6.3.3 類型推論和類型檢查6.3.4 類型轉(zhuǎn)換6.3.5 重載6.3.6 多態(tài)函數(shù)6.4 符號表6.4.1 符號表的表項(xiàng)和符號表的操作6.4.2 聲明和同層聲明6.4.3 符號表的數(shù)據(jù)結(jié)構(gòu)6.4.4 作用域規(guī)則和塊結(jié)構(gòu)練習(xí)第7章 運(yùn)行時(shí)環(huán)境7.1 存儲組織及存儲分配策略7.2 靜態(tài)分配7.3 棧式7.3.1 沒有局部過程的基于棧的環(huán)境7.3.2 帶有局部過程的基于棧的運(yùn)行時(shí)環(huán)境7.3.3 帶有過程參數(shù)的基于棧的運(yùn)行時(shí)環(huán)境7.4 堆式7.5 參數(shù)傳遞7.5.1 值傳遞7.5.2 引用傳遞7.5.3 值-結(jié)果傳遞7.5.4 名字傳遞練習(xí)第8章 中間代碼生成8.1 中間語言8.1.1 后綴式8.1.2 圖表示法8.1.3 三地址代碼8.2 說明語句8.2.1 過程中的說明語句8.2.2 保留作用域信息8.2.3 記錄中的域名8.3 賦值語句的翻譯8.3.1 簡單算術(shù)表達(dá)式及賦值語句8.3.2 數(shù)組元素的引用8.3.3 記錄中域的引用8.4 布爾表達(dá)式的翻譯8.4.1 數(shù)值表示法8.4.2 作為條件控制的布爾式表達(dá)翻譯8.5 控制語句的翻譯8.5.1 控制流語句8.5.2 標(biāo)號與goto語句8.5.3 CASE語句的翻譯8.6 過程調(diào)用的處理練習(xí)第9章 代碼生成和代碼優(yōu)化9.1 代碼生成器中的基本問題9.2 目標(biāo)機(jī)器9.3 寄存器與臨時(shí)單元的管理9.4 一個(gè)簡單的代碼生成器9.5 一個(gè)簡單的寄存器分配方案9.6 代碼生成器的自動(dòng)化技術(shù)9.6.1 基于文法的代碼生成器9.7 代碼優(yōu)化9.7.1 分析器優(yōu)化9.7.2 線性優(yōu)化9.7.3 語法樹上的優(yōu)化練習(xí)參考文獻(xiàn)
圖書封面
評論、評分、閱讀與下載