![]() ![]() |
編譯器構(gòu)造 [美]查爾斯·N.費(fèi)希爾 [美]羅恩·K.塞隆 [美]理查德·J.勒布朗 ![]() 本書面向初學(xué)者,從編譯器構(gòu)造的角度進(jìn)行分析,旨在幫助讀者深入理解編譯器的設(shè)計(jì)原理和方法。全書共14章,主要內(nèi)容包括:詞法分析和語法分析、語法制導(dǎo)翻譯、符號(hào)表和聲明處理、語義分析、虛擬機(jī)代碼、運(yùn)行時(shí)支持、目標(biāo)代碼生成等。全書內(nèi)容安排緊湊合理,對(duì)編譯器構(gòu)造的基本知識(shí)與關(guān)鍵技術(shù)進(jìn)行了深入淺出的講解,并提供了詳盡清晰的算法,倡導(dǎo)在實(shí)踐中學(xué)習(xí)編譯器構(gòu)造的相關(guān)技術(shù)。本書不僅可作為計(jì)算機(jī)專業(yè)本科生或研究生的教材,也適合作為相關(guān)領(lǐng)域技術(shù)人員的參考書。 本書是一本經(jīng)典的面向本科生理解編譯原理和編譯器構(gòu)造的課程教材。本書以簡(jiǎn)潔、清晰的風(fēng)格全面介紹了編譯器構(gòu)造的基本知識(shí)與關(guān)鍵技術(shù)。本書的三位原作者大學(xué)擁有30余年的編譯器課程教學(xué)經(jīng)驗(yàn),根據(jù)他們豐富的教學(xué)經(jīng)驗(yàn)和研究經(jīng)驗(yàn)編寫了這本教材。本書結(jié)合程序語言和編譯技術(shù)的發(fā)展,以Java語言作為編譯器的分析對(duì)象,并且采用面向?qū)ο蟮脑O(shè)計(jì)模式來組織編譯器中的數(shù)據(jù)結(jié)構(gòu),在很大程度上降低了編譯器構(gòu)造的復(fù)雜程度,使初學(xué)編譯器的讀者能更加容易地上手實(shí)現(xiàn)自己的編譯器。 前 言 自1988年費(fèi)希爾和勒布朗合著的Crafting a Compiler出版以來,情況已經(jīng)發(fā)生了很大變化。雖然教師可能還記得那本書保存在5.25英寸軟盤上的附帶軟件,但現(xiàn)在的大多數(shù)學(xué)生既未曾擁有過也沒有見過這樣的軟盤。學(xué)生在課堂上和課外所體驗(yàn)的編程語言發(fā)生了許多變化。1991年,這本書以兩種形式出現(xiàn),其中的算法用C語言或Ada語言呈現(xiàn)。雖然現(xiàn)在C語言仍然是一種流行的語言,但Ada語言已經(jīng)變得鮮為人知,沒有達(dá)到預(yù)期的流行程度。C 語言從C語言發(fā)展而來,加入了面向?qū)ο蟮奶匦。Java是作為一種更簡(jiǎn)單的面向?qū)ο笳Z言開發(fā)的,因其安全性和能在Web瀏覽器中運(yùn)行而受到歡迎。美國(guó)大學(xué)理事會(huì)指定的大學(xué)先修課程已從Pascal改為C ,而后又改為Java。 雖然發(fā)生了很多變化,但學(xué)生還在繼續(xù)學(xué)習(xí)、教師也還在繼續(xù)教授編譯器構(gòu)造這一課程。編譯器和編程語言翻譯領(lǐng)域的研究繼續(xù)快步前進(jìn),這是因?yàn)榫幾g器以適應(yīng)日益多樣化的體系結(jié)構(gòu)和編程語言為己任。軟件開發(fā)環(huán)境也依賴于編譯器與各種軟件工具鏈組件(如語法感知編輯器、性能剖析工具和調(diào)試器)的成功互動(dòng)。所有的現(xiàn)代軟件都依賴于編譯器來嚴(yán)格檢查錯(cuò)誤并忠實(shí)地翻譯程序。 隨著時(shí)間的推移,一些教科書經(jīng)歷了相對(duì)較小的變化,可能增加了一些新的習(xí)題或示例。而本書則反映了1988年到1991年期間素材的大量實(shí)質(zhì)性的修訂。雖然本書的重點(diǎn)仍然是講授編譯器結(jié)構(gòu)的基本原理,但算法和方法層面已融入最新實(shí)踐: ● 已經(jīng)從實(shí)際應(yīng)用中消失的主題(例如,屬性文法)的相關(guān)內(nèi)容已被盡量壓縮或完全刪除。 有些教科書經(jīng)過修訂,增加了更多的研究生水平的素材。雖然這些內(nèi)容在高級(jí)課程中可能有用,但本書的主要讀者仍然是學(xué)習(xí)編譯器構(gòu)造的本科生。研究生課程可以使用第13章和第14章的內(nèi)容,并將前面的部分作為參考材料。 偽代碼和縮寫 本書的使用方法 第10章介紹Java虛擬機(jī)(Java Virtual Machine,JVM),如果學(xué)生要在他們的項(xiàng)目中生成JVM代碼,就應(yīng)講授這些內(nèi)容。第11章介紹虛擬機(jī)代碼生成。希望學(xué)生生成機(jī)器代碼的教師可以跳過第10章和第11章,而只講第12章和第13章。入門課程可以包括第14章開始部分有關(guān)自動(dòng)程序優(yōu)化的內(nèi)容。 第4~6章中涉及語法分析技術(shù)的更多細(xì)節(jié)。第8章和第9章對(duì)類型檢查和語義分析進(jìn)行了廣泛和深入的研究。第10章和第14章介紹高級(jí)概念,如靜態(tài)單賦值(Static Single Assignment,SSA)形式等。第14章涉及程序分析和轉(zhuǎn)換的高級(jí)主題,包括數(shù)據(jù)流框架。第13章和第14章可以作為研究生編譯器課程的基礎(chǔ),輔以前面的章節(jié)作為參考材料。 各章概述 第1章 引言 第2章 一個(gè)簡(jiǎn)單的編譯器 第3章 詞法分析理論與實(shí)踐 第4章 文法和語法分析 第5章 自頂向下語法分析 第6章 自底向上語法分析 第7章 語法制導(dǎo)翻譯 第8章 符號(hào)表和聲明處理 該章還介紹了處理符號(hào)聲明所需的語義分析,包括類型、變量、數(shù)組、結(jié)構(gòu)和枚舉,同時(shí)介紹了類型檢查,包括面向?qū)ο箢、子類和超類?/p> 第9章 語義分析 第10章 中間表示 第11章 虛擬機(jī)代碼生成 雖然對(duì)生成機(jī)器碼感興趣的讀者可能會(huì)跳過第11章,但我們建議先學(xué)習(xí)這一章,然后再嘗試生成機(jī)器碼級(jí)別的代碼。第11章的思想很容易應(yīng)用于第12章和第13章,但從VM的角度來看,它們更容易理解。 第12章 運(yùn)行時(shí)支持 第13章 目標(biāo)代碼生成 第14章 程序優(yōu)化 查爾斯·N.費(fèi)希爾 (Charles N.Fischer) 美國(guó)威斯康星大學(xué)計(jì)算機(jī)科學(xué)系教授,長(zhǎng)期為本科生和研究生講授編譯原理相關(guān)課程。研究興趣為編譯器設(shè)計(jì)與實(shí)現(xiàn)。 羅恩·K.塞隆 (Ron K.Cytron) 美國(guó)圣路易斯華盛頓大學(xué)計(jì)算機(jī)科學(xué)與工程系教授,研究興趣為實(shí)時(shí)系統(tǒng)與程序設(shè)計(jì)語言。 理查德·J.勒布朗 (Richard J.LeBlanc,Jr.) 美國(guó)佐治亞理工學(xué)院計(jì)算機(jī)系教授,主講編譯器與解釋器方面的課程。曾任ACM教育委員會(huì)委員,是SE2004教育規(guī)范委員會(huì)副主席。 王剛,南開大學(xué)計(jì)算機(jī)學(xué)院教授、博士生導(dǎo)師。主要講授程序設(shè)計(jì)、算法、編譯、并行計(jì)算方面的課程。研究興趣包括計(jì)算機(jī)理論、海量信息存儲(chǔ)、并行與分布式計(jì)算、搜索引擎等,特別是在分布式存儲(chǔ)系統(tǒng)可靠性技術(shù)、云存儲(chǔ)用戶數(shù)據(jù)隱私保護(hù)、搜索引擎性能優(yōu)化等方向取得了一系列重要成果。近年來在計(jì)算機(jī)領(lǐng)域的國(guó)際頂尖學(xué)術(shù)期刊及國(guó)際頂級(jí)學(xué)術(shù)會(huì)議發(fā)表學(xué)術(shù)論文。主持國(guó)家863項(xiàng)目、國(guó)家自然科學(xué)基金項(xiàng)目、天津市自然科學(xué)基金項(xiàng)目等,主持與百度公司、奇虎360公司、華為公司等合作項(xiàng)目。現(xiàn)為IEEE/ACM/中國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)員、中國(guó)計(jì)算機(jī)學(xué)會(huì)信息存儲(chǔ)專委會(huì)委員、中國(guó)計(jì)算機(jī)學(xué)會(huì)理論計(jì)算機(jī)專委會(huì)委員。 目 錄
你還可能感興趣
我要評(píng)論
|