出版時(shí)間:2012-3 出版社:清華大學(xué)出版社 作者:黃賢英,曹瓊,王柯柯 著
前言
“編譯原理”是計(jì)算機(jī)及其相關(guān)專業(yè)的重要專業(yè)基礎(chǔ)課,主要研究設(shè)計(jì)和構(gòu)造編譯程序的原理和方法。編譯原理蘊(yùn)涵著計(jì)算機(jī)學(xué)科中解決問(wèn)題的思路、形式化問(wèn)題和解決問(wèn)題的方法,對(duì)應(yīng)用軟件和系統(tǒng)軟件的設(shè)計(jì)與開(kāi)發(fā)有一定的啟發(fā)和指導(dǎo)作用,編譯程序構(gòu)造的原理和技術(shù)在軟件工程和語(yǔ)言轉(zhuǎn)換等許多領(lǐng)域中有著廣泛的應(yīng)用?! ”緯?shū)主要面向普通本科院校,理論學(xué)時(shí)為40~48學(xué)時(shí),壓縮了編譯課程中的理論部分,刪除了實(shí)用意義不大的編譯方法。以程序編譯的5個(gè)主要階段——詞法分析、語(yǔ)法分析、中間代碼生成、代碼優(yōu)化和目標(biāo)代碼生成為線索,重點(diǎn)放在設(shè)計(jì)與構(gòu)造編譯程序及各個(gè)組成部分的軟件技術(shù)和實(shí)用方法上。通過(guò)本課程的教學(xué),使學(xué)生建立一個(gè)較為完整的編譯系統(tǒng)的模型,掌握各個(gè)階段的基本算法以及常用的編譯技術(shù)和方法,為今后從事系統(tǒng)軟件和應(yīng)用軟件的開(kāi)發(fā)打下一定的理論和實(shí)踐基礎(chǔ)?! ”緯?shū)的主要特色如下?! 。?)力求將基本概念、基本原理和實(shí)現(xiàn)方法的思路闡述清楚,條理清晰,通俗易懂?! 。?)為便于自學(xué),書(shū)中引入典型例題,以實(shí)例形式講解理論,加強(qiáng)學(xué)生對(duì)理論的理解,并配以大量習(xí)題,以鞏固所學(xué)的知識(shí),并提供了參考答案?! 。?)為切實(shí)做到理論聯(lián)系實(shí)際,便于讀者更深刻地理解編譯程序的實(shí)現(xiàn)過(guò)程,以Sample語(yǔ)言為貫穿本書(shū)各個(gè)章節(jié)的語(yǔ)言實(shí)例,重點(diǎn)介紹Sample語(yǔ)言的編譯程序在各個(gè)階段的具體實(shí)現(xiàn)技術(shù)和構(gòu)造方法,并給出了部分程序框架?! 。?)本書(shū)注重實(shí)際應(yīng)用,配套軟件實(shí)現(xiàn)了Sample語(yǔ)言的詞法分析、語(yǔ)法分析、語(yǔ)法制導(dǎo)的翻譯,以及本書(shū)涉及的各種核心算法的實(shí)現(xiàn),形象生動(dòng)地展示了編譯程序的分析過(guò)程,教師可將該軟件用作課堂教學(xué)演示,也可用作“編譯原理”課程作業(yè)的參考實(shí)例和實(shí)訓(xùn)內(nèi)容;學(xué)生也可以通過(guò)該軟件進(jìn)行自學(xué),在課后反復(fù)觀看揣摩,并參考該軟件中的編譯程序?qū)崿F(xiàn)方法,自己動(dòng)手實(shí)現(xiàn)編譯器中的部分內(nèi)容。加*的章節(jié)為可選內(nèi)容,請(qǐng)教師根據(jù)具體情況選擇?! ”緯?shū)在第1版的基礎(chǔ)上,對(duì)很多章節(jié)進(jìn)行了刪改,第2章增加了高級(jí)語(yǔ)言的設(shè)計(jì)部分,以便讀者在了解編譯方法的基礎(chǔ)上,從高級(jí)語(yǔ)言的使用者過(guò)渡到高級(jí)語(yǔ)言的實(shí)現(xiàn)者和設(shè)計(jì)者。本書(shū)的編寫(xiě)得到了重慶理工大學(xué)教材出版基金的資助,本書(shū)第1版的使用院校的教師和學(xué)生也為本書(shū)的修訂提出了寶貴意見(jiàn)和建議,在此一并表示衷心的感謝?! 【幷摺 ?011年8月
內(nèi)容概要
《21世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》系統(tǒng)地介紹了編譯程序的設(shè)計(jì)與構(gòu)造以及各組成部分的軟件技術(shù)和實(shí)用方法。全書(shū)共8章,主要包括編譯程序概述、高級(jí)語(yǔ)言設(shè)計(jì)基礎(chǔ)、詞法分析、語(yǔ)法分析、語(yǔ)義分析和中間代碼生成、運(yùn)行時(shí)存儲(chǔ)空間的組織、代碼優(yōu)化以及目標(biāo)代碼生成?!?1世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》的目標(biāo)是使學(xué)習(xí)者建立一個(gè)較為完整的編譯系統(tǒng)的模型,掌握各個(gè)階段的基本算法、常用的編譯技術(shù)和方法,為今后從事系統(tǒng)軟件和應(yīng)用軟件的開(kāi)發(fā)打下理論和實(shí)踐基礎(chǔ)。為此,《21世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》力求講清基本概念、基本原理和實(shí)現(xiàn)方法;書(shū)中引入了豐富的典型例題,配以大量的習(xí)題;《21世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》以Sample語(yǔ)言為例來(lái)貫穿各章內(nèi)容,介紹了其編譯程序的具體實(shí)現(xiàn)技術(shù)和構(gòu)造方法?! ?1世紀(jì)高等學(xué)校規(guī)劃教材·計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》可供高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)及相關(guān)專業(yè)本科教學(xué)使用,也可供計(jì)算機(jī)系統(tǒng)軟件和應(yīng)用軟件開(kāi)發(fā)人員自學(xué)和參考。
書(shū)籍目錄
第1章 概述1.1 程序設(shè)計(jì)語(yǔ)言與編譯程序1.1.1 程序設(shè)計(jì)語(yǔ)言1.1.2 翻譯程序1.1.3 編譯程序和解釋程序1.1.4 編譯程序的伙伴1.2 編譯過(guò)程和編譯程序的結(jié)構(gòu)1.2.1 編譯過(guò)程概述1.2.2 編譯程序的結(jié)構(gòu)1.2.3 編譯階段的組合1.3 編譯程序的設(shè)計(jì)1.3.1 編譯程序的構(gòu)造方式1.3.2 Sample語(yǔ)言編譯程序的設(shè)計(jì)1.4 編譯程序的發(fā)展及應(yīng)用1.4.1 編譯程序的發(fā)展1.4.2 為什么要學(xué)習(xí)編譯原理及其構(gòu)造技術(shù)1.4.3 編譯技術(shù)的應(yīng)用1.5 小結(jié)1.6 習(xí)題第2章 高級(jí)語(yǔ)言設(shè)計(jì)基礎(chǔ)2.1 符號(hào)和符號(hào)串2.2 文法與語(yǔ)言2.2.1 文法的定義2.2.2 文法產(chǎn)生的語(yǔ)言2.2.3 文法的二義性2.2.4 文法的分類2.3 高級(jí)語(yǔ)言的設(shè)計(jì)2.3.1 程序語(yǔ)言的定義2.3.2 馮·諾依曼體系結(jié)構(gòu)與高級(jí)語(yǔ)言2.3.3 數(shù)據(jù)類型2.3.4 語(yǔ)句和控制結(jié)構(gòu)2.3.5 語(yǔ)言設(shè)計(jì)的步驟2.4 語(yǔ)言設(shè)計(jì)實(shí)例2.4.1 Sample語(yǔ)言字符集的定義2.4.2 Sample語(yǔ)言單詞的定義2.4.3 Sample語(yǔ)言數(shù)據(jù)類型的定義2.4.4 Sample語(yǔ)言表達(dá)式的定義2.4.5 Sample語(yǔ)言語(yǔ)句的定義2.4.6 Sample語(yǔ)言程序體和程序的定義2.4.7 符合Sample語(yǔ)言定義的源程序舉例2.5 小結(jié)2.6 習(xí)題第3章 詞法分析3.1 詞法分析的任務(wù)和功能3.1.1 詞法分析的功能3.1.2 單詞的類型和種別碼3.2 詞法分析器的設(shè)計(jì)3.2.1 詞法分析程序的接口3.2.2 詞法分析程序的總體設(shè)計(jì)3.2.3 詞法分析程序的詳細(xì)設(shè)計(jì)3.2.4 單詞的識(shí)別和狀態(tài)轉(zhuǎn)換圖3.2.5 符號(hào)表及其操作3.2.6 詞法分析階段的錯(cuò)誤處理3.3 正規(guī)文法、正規(guī)式與有窮自動(dòng)機(jī)3.3.1 正規(guī)文法3.3.2 正規(guī)式3.3.3 有窮自動(dòng)機(jī)3.3.4 正規(guī)文法與有窮自動(dòng)機(jī)的等價(jià)性3.3.5 正規(guī)式與有窮自動(dòng)機(jī)的等價(jià)性3.4 詞法分析程序的自動(dòng)生成3.4.1 LEX的概述3.4.2 LEX源文件的書(shū)寫(xiě)3.4.3 LEX的工作原理3.4.4 LEX使用中的一些注意事項(xiàng)3.4.5 使用LEX自動(dòng)生成Sample語(yǔ)言的詞法分析程序3.5 小結(jié)3.6 習(xí)題第4章 語(yǔ)法分析4.1 語(yǔ)法分析概述4.2 自上而下的語(yǔ)法分析4.2.1 自上而下分析方法中的問(wèn)題探究4.2.2 遞歸下降分析方法4.2.3 預(yù)測(cè)分析方法4.2.4 Sample語(yǔ)言自上而下語(yǔ)法分析程序的設(shè)計(jì)4.3 自下而上的語(yǔ)法分析4.3.1 自下而上分析方法概述4.3.2 算符優(yōu)先分析法4.3.3 LR分析法4.4 語(yǔ)法分析器的自動(dòng)生成工具YACC4.4.1 YACC概述4.4.2 YACC源文件的格式4.4.3 YACC的翻譯規(guī)則4.4.4 YACC的輔助程序4.5 語(yǔ)法分析程序中的錯(cuò)誤處理4.5.1 語(yǔ)法分析中的錯(cuò)誤處理的一般原則4.5.2 自上而下語(yǔ)法分析的錯(cuò)誤處理4.5.3 自下而上語(yǔ)法分析的錯(cuò)誤處理4.6 小結(jié)4.7 習(xí)題第5章 語(yǔ)義分析和中間代碼生成5.1 概述5.1.1 語(yǔ)義分析和中間代碼生成的功能和任務(wù)5.1.2 靜態(tài)語(yǔ)義檢查5.1.3 語(yǔ)義處理5.2 屬性文法和語(yǔ)法制導(dǎo)的翻譯5.2.1 屬性文法的定義5.2.2 綜合屬性的計(jì)算5.2.3 繼承屬性的計(jì)算5.2.4 語(yǔ)法制導(dǎo)的翻譯方法5.3 常見(jiàn)語(yǔ)句的語(yǔ)法制導(dǎo)的翻譯5.3.1 語(yǔ)義變量和語(yǔ)義函數(shù)5.3.2 常量說(shuō)明語(yǔ)句的語(yǔ)義處理5.3.3 變量說(shuō)明語(yǔ)句的語(yǔ)義處理5.3.4 算術(shù)表達(dá)式和簡(jiǎn)單賦值語(yǔ)句的翻譯5.3.5 布爾表達(dá)式的翻譯5.3.6 if語(yǔ)句的翻譯5.3.7 do…while語(yǔ)句的翻譯5.3.8 for語(yǔ)句的翻譯5.4 Sample語(yǔ)言語(yǔ)法制導(dǎo)的翻譯程序的設(shè)計(jì)5.5 小結(jié)5.6 習(xí)題第6章 運(yùn)行時(shí)存儲(chǔ)空間的組織6.1 程序執(zhí)行時(shí)的活動(dòng)6.1.1 源程序中的過(guò)程6.1.2 過(guò)程執(zhí)行時(shí)的活動(dòng)6.1.3 名字的作用域6.1.4 參數(shù)的傳遞6.1.5 名字的綁定6.2 程序執(zhí)行時(shí)的存儲(chǔ)器組織6.2.1 程序執(zhí)行時(shí)存儲(chǔ)器的劃分6.2.2 活動(dòng)記錄6.2.3 存儲(chǔ)分配策略6.3 靜態(tài)存儲(chǔ)分配6.3.1 靜態(tài)存儲(chǔ)分配的性質(zhì)6.3.2 靜態(tài)存儲(chǔ)分配的實(shí)現(xiàn)6.3.3 臨時(shí)變量的地址分配6.4 棧式存儲(chǔ)分配策略6.5 堆式存儲(chǔ)分配6.5.1 堆式存儲(chǔ)分配的主要問(wèn)題6.5.2 堆式動(dòng)態(tài)存儲(chǔ)分配的實(shí)現(xiàn)6.5.3 存儲(chǔ)回收6.6 小結(jié)6.7 習(xí)題第7章 代碼優(yōu)化7.1 概述7.1.1 代碼優(yōu)化的地位7.1.2 基本塊的概念及流圖7.2 局部?jī)?yōu)化7.2.1 刪除公共子表達(dá)式7.2.2 復(fù)寫(xiě)傳播7.2.3 刪除無(wú)用代碼7.2.4 對(duì)程序進(jìn)行代數(shù)恒等變換7.2.5 基本塊的DAG表示及優(yōu)化7.3 循環(huán)優(yōu)化7.3.1 循環(huán)的定義7.3.2 代碼外提7.3.3 強(qiáng)度削弱7.3.4 刪除歸納變量7.4 小結(jié)7.5 習(xí)題第8章 目標(biāo)代碼生成8.1 概述8.2 目標(biāo)機(jī)器8.3 簡(jiǎn)單的代碼生成算法8.3.1 中間代碼的簡(jiǎn)單翻譯方法8.3.2 引用信息和活躍信息8.3.3 寄存器描述和地址描述8.3.4 基本塊的代碼生成算法8.4 從DAG生成目標(biāo)代碼8.5 Sample代碼優(yōu)化及目標(biāo)代碼生成器的設(shè)計(jì)8.6 小結(jié)8.7 習(xí)題參考文獻(xiàn)
章節(jié)摘錄
版權(quán)頁(yè):插圖:?jiǎn)卧~符號(hào)由詞法規(guī)則所確定,詞法規(guī)則是指單詞符號(hào)的形成規(guī)則,它規(guī)定了字母表中哪些字符串可以構(gòu)成正確的單詞符號(hào)。單詞符號(hào)是語(yǔ)言中具有獨(dú)立意義的最小單位。語(yǔ)言的語(yǔ)法規(guī)則規(guī)定了如何從單詞符號(hào)形成更大的結(jié)構(gòu)(即語(yǔ)法單位,如表達(dá)式和語(yǔ)句等),即語(yǔ)法規(guī)則是語(yǔ)法單位的形成規(guī)則。語(yǔ)言的詞法規(guī)則和語(yǔ)法規(guī)則定義了程序的形式結(jié)構(gòu),是判斷輸入字符串是否構(gòu)成一個(gè)形式上正確的程序的依據(jù)。2.語(yǔ)義對(duì)于一個(gè)語(yǔ)言來(lái)說(shuō),不僅要給出它的詞法和語(yǔ)法規(guī)則,而且要定義它的單詞符號(hào)和語(yǔ)法單位的意義,即語(yǔ)義。離開(kāi)語(yǔ)義,語(yǔ)言只不過(guò)是一個(gè)字符串而已。對(duì)于編譯器來(lái)說(shuō),只有了解了程序的語(yǔ)義,才能把它翻譯成相應(yīng)的目標(biāo)代碼。一個(gè)程序的語(yǔ)義是指一組規(guī)則,用它可以定義一個(gè)程序的意義。闡明語(yǔ)義要比闡明語(yǔ)法困難得多,現(xiàn)在還沒(méi)有一種公認(rèn)的形式系統(tǒng),借助它可以自動(dòng)地構(gòu)造出實(shí)用的編譯程序。最早是用自然語(yǔ)言來(lái)描述語(yǔ)言結(jié)構(gòu)的含義,這種描述是非形式的、冗長(zhǎng)的、易于引起二義的,但它能給出一個(gè)語(yǔ)言的直觀梗概。語(yǔ)義的形式描述是計(jì)算機(jī)學(xué)科的一個(gè)重要研究領(lǐng)域,目前已有指稱語(yǔ)義學(xué)、操作語(yǔ)義學(xué)、代數(shù)語(yǔ)義學(xué)和公理語(yǔ)義學(xué)等多種描述方法。本書(shū)在第5章將介紹目前大多數(shù)編譯程序普遍采用的一種方法,即基于屬性文法的語(yǔ)法制導(dǎo)的翻譯方法,它是一個(gè)比較接近形式化的表示方法。
編輯推薦
《21世紀(jì)高等學(xué)校規(guī)劃教材?計(jì)算機(jī)科學(xué)與技術(shù):編譯原理及實(shí)踐教程(第2版)》面向應(yīng)用型本科計(jì)算機(jī)專業(yè)學(xué)生,通過(guò)一個(gè)編譯器的設(shè)計(jì)實(shí)現(xiàn)案例詳細(xì)講解了編譯程序及其相關(guān)部分的分析設(shè)計(jì)和整個(gè)編譯器的設(shè)計(jì)實(shí)現(xiàn)。教學(xué)目標(biāo)明確,注重理論與實(shí)踐的結(jié)合。教學(xué)方法靈活,培養(yǎng)學(xué)生自主學(xué)習(xí)的能力。教學(xué)內(nèi)容先進(jìn),反映了計(jì)算機(jī)學(xué)科的最新發(fā)展。教學(xué)模式完善,提供配套的教學(xué)資源解決方案。
圖書(shū)封面
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版