編譯原理與技術(shù)

出版時間:2010-8  出版社:高等教育出版社  作者:張昱,陳意云 著  頁數(shù):283  

前言

  編譯原理和技術(shù)對高等學(xué)校計算機(jī)專業(yè)的學(xué)生和軟件工程技術(shù)人員來說是重要的基礎(chǔ)知識之一。本書是作者所編寫的2009年度普通高等教育精品教材《編譯原理》(第2版)(高等教育出版社2008年出版)的一個精簡版本,面向少學(xué)時編譯原理課程的教學(xué)需求。作者認(rèn)為,對于普通高等學(xué)校的學(xué)生來說,學(xué)習(xí)編譯技術(shù)的主要目的是掌握基本的編譯技術(shù),用以提高學(xué)習(xí)編程語言及在軟件開發(fā)中應(yīng)用編程語言的能力,包括:  (1)提高學(xué)習(xí)、理解和使用編程語言的能力?! 。?)提高程序排錯的能力,即快速理解、定位和解決在程序開發(fā)與程序運行中遇到的問題的能力?! 。?)提高編寫高質(zhì)量代碼的能力?! 』谠撚^點,對原書的精簡主要體現(xiàn)在下面幾個方面: ?。?)忽略對各種LR分析表構(gòu)造算法的把握,強(qiáng)調(diào)對各種語法分析方法的理解?! 。?)刪除類型系統(tǒng)形式描述方法的介紹,保留體現(xiàn)類型系統(tǒng)在編程語言中重要地位的章節(jié)?! 。?)壓縮語法制導(dǎo)翻譯的理論介紹,加強(qiáng)積累翻譯方案設(shè)計技巧的例題和習(xí)題?! 。?)淡化代碼優(yōu)化的數(shù)據(jù)流分析和控制流分析技術(shù),用實例體現(xiàn)各種優(yōu)化能達(dá)到的效果?! 。?)取消函數(shù)式語言編譯和無用單元收集算法等內(nèi)容,增加理論聯(lián)系實際的習(xí)題?! 。?)附錄中補(bǔ)充了用c語言寫的PL,/0語言編譯器(編譯成中間代碼)和中間語言解釋器,并給出基于PL/O語言的課程實踐選題?! 〈送?,在學(xué)時數(shù)有限時,可以略去帶星號的章節(jié)內(nèi)容?! ”緯哂腥缦绿攸c: ?。?)強(qiáng)調(diào)對編譯原理和技術(shù)的宏觀理解和全局把握,而不把讀者的注意力引導(dǎo)到理論和算法上。

內(nèi)容概要

  《編譯原理與技術(shù)》介紹基本的編譯原理與編譯技術(shù),是2009年度普通高等教育精品教材《編譯原理》(第2版)的精簡版?!毒幾g原理與技術(shù)》主要內(nèi)容包括詞法分析、語法分析、類型檢查、運行時存儲空間的組織和管理、中間代碼生成、代碼生成和代碼優(yōu)化、編譯系統(tǒng)和運行系統(tǒng)、面向?qū)ο笳Z言的編譯等。《編譯原理與技術(shù)》取材廣泛、新穎,圖文并茂;強(qiáng)調(diào)對編譯技術(shù)的理解,淡化對相關(guān)理論的學(xué)習(xí);強(qiáng)調(diào)對各種方法的把握,淡化對各個算法的掌握?!  毒幾g原理與技術(shù)》可作為高等學(xué)校計算機(jī)科學(xué)及相關(guān)專業(yè)的少學(xué)時編譯原理課程教材,也可供計算機(jī)軟件工程技術(shù)人員參考使用。

書籍目錄

第1章 引論1.1 編譯器概述1.1.1 詞法分析1.1.2 語法分析1.1.3 語義分析1.1.4 中間代碼生成1.1.5 代碼優(yōu)化1.1.6 代碼生成1.1.7 符號表管理1.1.8 階段的分組1.1.9 解釋器1.2 編譯器技術(shù)的應(yīng)用1.2.1 高級語言的實現(xiàn)1.2.2 針對計算機(jī)體系結(jié)構(gòu)的優(yōu)化1.2.3 新計算機(jī)體系結(jié)構(gòu)的設(shè)計1.2.4 程序翻譯1.2.5 提高軟件開發(fā)效率的工具習(xí)題第2章 詞法分析2.1 詞法記號及屬性2.1.1 詞法記號、模式、詞法單元2.1.2 詞法記號的屬性2.1.3 詞法錯誤2.2 詞法記號的描述與識別2.2.1 串和語言2.2.2 正規(guī)式2.2.3 正規(guī)定義2.2.4 狀態(tài)轉(zhuǎn)換圖2.3 有限自動機(jī)2.3.1 不確定的有限自動機(jī)2.3.2 確定的有限自動機(jī)2.3.3 NFA到DFA的變換2.3.4 DFA的化簡2.4 從正規(guī)式到有限自動機(jī)2.5 詞法分析器的生成器習(xí)題第3章 語法分析3.1 上下文無關(guān)文法3.1.1 上下文無關(guān)文法的定義3.1.2 推導(dǎo)3.1.3 分析樹3.1.4 二義性3.2 語言和文法3.2.1 正規(guī)式和上下文無關(guān)文法的比較3.2.2 分離詞法分析器的理由3.2.3 驗證文法產(chǎn)生的語言3.2.4 適當(dāng)?shù)谋磉_(dá)式文法3.2.5 消除二義性3.2.6 消除左遞歸3.2.7 提左因子3.3 自上而下分析3.3.1 自上而下分析的一般方法3.3.2 LL(1)文法3.3.3 遞歸下降的預(yù)測分析3.3.4 非遞歸的預(yù)測分析3.3.5 構(gòu)造預(yù)測分析表3.3.6 預(yù)測分析的錯誤恢復(fù)3.4 自下而上分析3.4.1 歸約3.4.2 句柄3.4.3 用棧實現(xiàn)移進(jìn)一歸約分析3.4.4 移進(jìn)一歸約分析的沖突3.5 LR分析器3.5.1 構(gòu)造SLR分析表3.5.2 LR分析算法3.5.3 其他LR分析表構(gòu)造概述3.5.4 非二義且非LR的上下文無關(guān)文法3.6 語法分析器的生成器3.6.1 分析器的生成器Yace3.6.2 用Yacc處理二義文法3.6.3 Yace的錯誤恢復(fù)習(xí)題第4章 類型檢查4.1 語法制導(dǎo)的翻譯4.1.1 翻譯方案4.1.2 語法樹4.1.3 構(gòu)造語法樹的翻譯方案4.1.4 翻譯方案中屬性的自下而上計算4.1.5 設(shè)計翻譯方案的一些技巧4.2 類型在編程語言中的作用4.2.1 執(zhí)行錯誤和安全語言4.2.2 類型化語言和類型系統(tǒng)4.2.3 類型化語言的優(yōu)點4.3 一個簡單類型檢查器的規(guī)范4.3.1 一個簡單的語言4.3.2 類型表達(dá)式4.3.3 類型檢查4.3.4 類型轉(zhuǎn)換4.4 類型表達(dá)式的等價4.4.1 類型表達(dá)式的結(jié)構(gòu)等價4.4.2 類型表達(dá)式的名字等價4.4.3 記錄類型4.4.4 類型表示中的環(huán)習(xí)題第5章 運行時存儲空間的組織和管理5.1 局部存儲分配5.1.1 過程5.1.2 名字的作用域和綁定5.1.3 活動記錄5.1.4 局部數(shù)據(jù)的布局5.1.5 程序塊5.2 全局棧式存儲分配5.2.1 運行時內(nèi)存的劃分5.2.2 活動樹和運行棧5.2.3 調(diào)用序列5.2.4 棧上可變長度數(shù)據(jù)5.2 ,5懸空引用5.3 非局部名字的訪問5.3.1 無過程嵌套的靜態(tài)作用域5.3.2 有過程嵌套的靜態(tài)作用域5.4 參數(shù)傳遞5.4.1 值調(diào)用5.4.2 引用調(diào)用5.4.3 換名調(diào)用5.5 堆管理5.5.1 內(nèi)存管理器5.5.2 計算機(jī)內(nèi)存分層5.5.3 程序局部性5.5.4 手工回收請求習(xí)題第6章 中間代碼生成6.1 中間語言6.1.1 后綴表示6.1.2 圖形表示6.1.3 三地址代碼6.1.4 靜態(tài)單賦值形式6.2 聲明語句6.2.1 過程中的聲明6.2.2 作用域信息的保存6.2.3 記錄的域名6.3 賦值語句6.3.1 符號表中的名字6.3.2 數(shù)組元素的地址計算6.3.3 數(shù)組元素地址計算的翻譯方案6.3.4 類型轉(zhuǎn)換6.4 布爾表達(dá)式和控制流語句6.4.1 布爾表達(dá)式6.4.2 控制流語句的中間代碼結(jié)構(gòu)6.4.3 布爾表達(dá)式的回填6.4.4 控制流語句的翻譯6.4.5 開關(guān)語句的翻譯6.4.6 過程調(diào)用的翻譯習(xí)題第7章 代碼生成和代碼優(yōu)化7.1 代碼生成器設(shè)計中的問題7.1.1 目標(biāo)程序7.1.2 指令選擇7.1.3 寄存器分配7.1.4.計算次序選擇7.2 目標(biāo)語言7.2.1 目標(biāo)機(jī)器的指令集7.2.2 指令代價7.3 基本塊和流圖7.3.1 基本塊7.3.2 基本塊的優(yōu)化7.3.3 流圖7.3.4 下次引用信息7.4 一個簡單的代碼生成器7.4.1 寄存器描述和地址描述7.4..2 代碼生成算法7.4.3 寄存器選擇函數(shù)7.4.4 為變址和指針語句產(chǎn)生代碼7.4.5 條件語句7.5 代碼優(yōu)化概述7.5.1 ‘優(yōu)化的主要源頭7.5.2 一個實例7.5.3 公共子表達(dá)式刪除7.5.4 復(fù)寫傳播7.5.5 死代碼刪除7.5.6 代碼外提7.5.7 強(qiáng)度削弱和歸納變量刪除習(xí)題第8章 編譯系統(tǒng)和運行系統(tǒng)8.1 C語言的編譯系統(tǒng)8.1.1 預(yù)處理器8.1.2 匯編器8.1.3 連接器8.1.4.目標(biāo)文件的格式8.1.5 符號解析8.1.6 靜態(tài)庫8.1.7 可執(zhí)行目標(biāo)文件及裝入8.1.8 動態(tài)連接8.1.9 處理目標(biāo)文件的一些工具8.2 Java語言的運行系統(tǒng)8.2.1 Java虛擬機(jī)語言簡介8.2.2 Java虛擬機(jī)8.2.3 即時編譯器習(xí)題第9章 面向?qū)ο笳Z言的編譯9.1 面向?qū)ο笳Z言的概念9.1.1 對象和對象類9.1.2 繼承9.1.3 信息封裝9.2 方法的編譯9.3 繼承的編譯方案9.3.1 單一繼承的編譯方案9.3.2 多重繼承的編譯方案習(xí)題附錄附錄1 PL/0語言及其實現(xiàn)附錄2 基于PL/0語言的課程實踐選題參考文獻(xiàn)

章節(jié)摘錄

  圖2.6所示的NFA在狀態(tài)0,面對輸入。時有兩種轉(zhuǎn)換,它可以到達(dá)狀態(tài)0或1。類似地,圖2.7所示的NFA在狀態(tài)0,不接受任何輸入(即面對8)也有兩種轉(zhuǎn)換。有些場合,還會出現(xiàn)既可以根據(jù)e也可以根據(jù)一個實際輸入符號進(jìn)行轉(zhuǎn)換的情況,這同樣也會引起二義性。這種轉(zhuǎn)換函數(shù)多值的情況,使得很難用計算機(jī)程序模擬NFA?!敖邮堋钡亩x僅僅是說必須存在從開始狀態(tài)到某個接受狀態(tài)的一條路徑,該路徑的標(biāo)記正好拼成輸入串。這樣,在找到一條接受路徑或確定沒有這樣的路徑前,可能不得不同時考慮所有路徑?! ∠旅娼o出一個算法,它從NFA構(gòu)造識別同樣語言的DFA,這個算法通常稱為子集構(gòu)造法。一個和它密切相關(guān)的算法是第3章構(gòu)造LR分析器的基礎(chǔ)?! ∈紫雀攀鲎蛹瘶?gòu)造法的思想。在NFA的轉(zhuǎn)換表里,每個條目是一個狀態(tài)集;在DFA的轉(zhuǎn)換表中,每個條目只有一個狀態(tài)。

編輯推薦

  《編譯原理與技術(shù)》是2009年度普通高等教育精品教材《編譯原理》(第2版)的精簡版。針對少學(xué)時編譯原理課程教學(xué)而編寫?!  毒幾g原理與技術(shù)》介紹了基本的編譯原理和編譯技術(shù),內(nèi)容包括詞法分析、語法分析、語義分析、運行時存儲空間的組織和管理、中間代碼生成、代碼生成和代碼優(yōu)化,還有面向?qū)ο笳Z言的編譯、編譯系統(tǒng)和運行系統(tǒng)等,使讀者掌握基本的編譯原理與技術(shù),以提高學(xué)習(xí)編程語言的能力,以及在軟件開發(fā)中應(yīng)用編程語言的能力?!  毒幾g原理與技術(shù)》取材廣泛新穎,圖文并茂;強(qiáng)調(diào)對編譯技術(shù)的理解,淡化對相關(guān)理論的學(xué)習(xí);強(qiáng)調(diào)對各種方法的把握,淡化對各個算法的掌握,鼓勵讀者運用所學(xué)的知識去分析和解決實際問題。

圖書封面

評論、評分、閱讀與下載


    編譯原理與技術(shù) PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7