編譯原理

出版時間:2010-10  出版社:人民郵電出版社  作者:林奕 等著  頁數(shù):205  

前言

編譯原理是計算機領(lǐng)域中一門較為“古老”和“偏僻”的課程。說它“古老”,是因為其中很多主要技術(shù)都源自20世紀(jì)80年代以前的老技術(shù);說它“偏僻”,是因為很多人也許永遠也不會參與一個編譯器的設(shè)計項目。雖然這門課程既“古老”又“偏僻”,但編譯原理課程并沒有成為“古董”。實際上,除了對傳統(tǒng)意義上的編譯優(yōu)化技術(shù)進行深入研究之外,編譯技術(shù)可以用在所有使用程序設(shè)計語言的地方,如瀏覽器對HTML、XML的解析,Adobe Acrobat和AutoCAD對格式化文檔的解析,對:ISP、ASP、ActionScript等腳本語言的解析,分布式計算中DCOM、CORBA等接口定義語言(IDL)的翻譯以及各種軟件工具的設(shè)計。在虛擬機、多核編程、嵌入式程序設(shè)計等領(lǐng)域,編譯技術(shù)也得到了廣泛應(yīng)用。因此,學(xué)好編譯技術(shù)對于學(xué)生未來從事計算機軟件相關(guān)的工作具有重要價值。編譯原理是一門理論和實踐性都很強的課程。在我們的教學(xué)實踐中,教師和學(xué)生普遍感覺這門課程難講、難學(xué)。為了更好地幫助學(xué)生理解和學(xué)習(xí)本課程的內(nèi)容,本書在保證編譯理論較為完整的同時,提供了很多例題并給出了詳細的解答。同時,為了保持內(nèi)容的簡潔和清晰,本書對所講述的理論和技術(shù)進行了有針對性的選擇。

內(nèi)容概要

本書系統(tǒng)地介紹了編譯程序的基本結(jié)構(gòu)、工作流程、關(guān)鍵算法與思想以及輔助設(shè)計工具。主要內(nèi)容包括程序設(shè)計語言基本理論,詞法分析、語法分析的主要模型和算法,語義分析和屬性文法,語法制導(dǎo)的代碼生成技術(shù),運行時存儲空間組織與管理以及代碼生成和優(yōu)化等。本書簡潔明了地論述了編譯器設(shè)計中采用的主要技術(shù),并提供了大量例題及其解答。學(xué)習(xí)本書不僅可以使學(xué)生掌握編譯思想和技術(shù),而且也為加深對程序設(shè)計語言的理解和理解軟件底層運行機理奠定了基礎(chǔ)。書中每章都有難度適宜的習(xí)題,可以使學(xué)生更好地掌握所學(xué)知識。    本書可作為高等學(xué)校計算機及相關(guān)專業(yè)的教材,也可以作為考研學(xué)生的參考書。

書籍目錄

第1章  緒論  1.1  匯編語言和高級程序設(shè)計語言  1.2  程序設(shè)計語言的編譯技術(shù)  1.3  編譯技術(shù)的基本構(gòu)造與工作原理  1.4  程序設(shè)計語言的編譯技術(shù)    1.4.1  詞法分析    1.4.2  語法分析    1.4.3  語義分析    1.4.4  中間代碼的生成    1.4.5  代碼優(yōu)化    1.4.6  目標(biāo)代碼生成    1.4.7  程序信息管理與錯誤檢查和處理  1.5  編譯程序的工作過程  1.6  文法及其分類    1.6.1  文法    1.6.2  文法及語言的Chomskey分類    1.6.3  規(guī)范推導(dǎo)    1.6.4.文法的二義性  1.7  本書內(nèi)容簡介  習(xí)題第2章  掃描器與正規(guī)語言  2.1  正規(guī)表達式    2.1.1  正規(guī)表達式代數(shù)    2.1.2  正規(guī)表達式的性質(zhì)  2.2  有限狀態(tài)自動機  2.3  非確定的有限狀態(tài)自動機  2.4  將正規(guī)文法轉(zhuǎn)換為自動機  2.5  NFDA的確定化及化簡  2.6  從有限狀態(tài)自動機轉(zhuǎn)換到正規(guī)文法  2.7  有限自動機在計算機中的實現(xiàn)  2.8  掃描器實現(xiàn)中的特殊問題    2.8.1  輸入符號表    2.8.2  掃描器自動機中的終止?fàn)顟B(tài)    2.8.3  刪除空白符號與注釋    2.8.4  輸出單詞  2.9  字符串表的實現(xiàn)  2.10  保留字  2.11  使用掃描器自動生成工具  2.12  例題解析  習(xí)題第3章  語法分析與前后文無關(guān)文法  3.1  下推自動機    3.1.1  停機條件的等價性    3.1.2  從前后文無關(guān)文法CFG構(gòu)造PDA  3.2  LL(K)范文法    3.2.1  FIRST集與FOLLOW集    3.2.2  選擇集合  3.3  文法的左遞歸性  3.4  公共左因子  3.5  用正規(guī)表達式運算符拓廣CFG  3.6  遞歸下降分析程序  3.7  作為下推自動機的遞歸下降分析程序  3.8  自底向上的語法分析器的構(gòu)造    3.8.1  自底向上的語法分析    3.8.2  LR(K)分析法  3.9  語法分析器生成工具簡介  習(xí)題第4章  語法制導(dǎo)的代碼生成  4.1  常見的中間語言簡介    4.1.1  逆波蘭表示    4.1.2  四元式    4.1.3  其他表示法  4.2  賦值語句的翻譯  4.3  布爾表達式的翻譯  4.4  程序流程控制語句的翻譯    4.4.1  常見控制結(jié)構(gòu)的翻譯    4.4.2  語句標(biāo)號及GOTO語句的翻譯    4.4.3  多分支語句的翻譯  4.5  含數(shù)組元素的算術(shù)表達式及賦值語句的翻譯    4.5.1  下標(biāo)變量地址的計算    4.5.2  含有下標(biāo)變量的賦值語句的翻譯  4.6  過程說明和過程調(diào)用的翻譯    4.6.1  過程說明的翻譯    4.6.2  實參和形參間的信息傳遞    4.6.3  過程語句的翻譯    4.6.4  關(guān)于形實結(jié)合的進一步討論  4.7  說明語句的翻譯    4.7.1  類型說明(變量及數(shù)組定義)語句的翻譯    4.7.2  數(shù)據(jù)類型定義語句的翻譯  習(xí)題第5章  符號表  5.1  概述  5.2  符號表的內(nèi)容、用途與創(chuàng)建過程    5.2.1  符號及其所表示的信息    5.2.2  符號表    5.2.3  符號表的用途  5.3  設(shè)計符號表時需要考慮的幾個問題  5.4  符號表的創(chuàng)建和使用    5.4.1  符號表的創(chuàng)建及其在語義分析中的使用    5.4.2  符號表在內(nèi)存分配和代碼生成階段的使用  5.5  符號表的數(shù)據(jù)結(jié)構(gòu)與算法    5.5.1  符號表數(shù)據(jù)結(jié)構(gòu)和算法的選擇    5.5.2  哈希表設(shè)計    5.5.3  支持作用域的符號表  習(xí)題第6章  靜態(tài)與運行時的存儲管理  6.1  可執(zhí)行程序的產(chǎn)生和執(zhí)行過程  6.2  可執(zhí)行程序的存儲布局與操作  6.3  內(nèi)存管理技術(shù):靜態(tài)內(nèi)存管理  6.4  動態(tài)內(nèi)存管理  6.5  棧式內(nèi)存管理    6.5.1  遞歸調(diào)用引起的問題    6.5.2  棧    6.5.3  活動樹    6.5.4  棧模型和活動樹模型的比較    6.5.5  棧式內(nèi)存管理的基本思想和必須解決的問題    6.5.6  活動記錄和調(diào)用序列  6.6  堆式管理和垃圾回收技術(shù)  習(xí)題第7章  代碼優(yōu)化  7.1  概述  7.2  中間代碼生成階段的代碼優(yōu)化  7.3  代碼優(yōu)化的基本原則、思路和范圍  7.4  基本塊及其優(yōu)化方法    7.4.1  基本塊、基本塊劃分算法和控制流圖    7.4.2  基于DAG模型的基本塊優(yōu)化技術(shù)    7.4.3  基于值編號技術(shù)的基本塊優(yōu)化算法    7.4.4  基本塊中的其他優(yōu)化    7.4.5  更大范圍的優(yōu)化  7.5  數(shù)據(jù)流分析    7.5.1  基于數(shù)據(jù)流分析的冗余表達式刪除    7.5.2  活性分析    7.5.3  過程間數(shù)據(jù)流分析  7.6  循環(huán)優(yōu)化    7.6.1  循環(huán)的識別    7.6.2  循環(huán)優(yōu)化  習(xí)題第8章  代碼生成  8.1  代碼生成的基本功能  8.2  代碼生成的不同方式  8.3  代碼生成的關(guān)鍵技術(shù)簡介    8.3.1  代碼生成技術(shù)需要考慮的內(nèi)容    8.3.2  代碼生成的關(guān)鍵技術(shù)    8.3.3  指令篩選技術(shù)簡介    8.3.4  指令調(diào)度技術(shù)簡介    8.3.5  寄存器分配技術(shù)簡介  8.4  代碼生成、軟件調(diào)試和其他技術(shù)  習(xí)題參考文獻

章節(jié)摘錄

插圖:1.狹義的編譯器概念高級語言為程序員提供了比匯編語言更為方便的程序設(shè)計工具,使程序員的工作效率得到了極大的提高。然而,對于底層計算機硬件系統(tǒng)來說,CPU仍然只能執(zhí)行由二進制指令序列表示的程序代碼。這樣一來,高級語言編寫的程序只有被翻譯為具有相同功能的匯編語言程序或被直接翻譯為可執(zhí)行指令序列后,才能被CPU真正地執(zhí)行。由于高級語言程序和CPU指令系統(tǒng)在形式和內(nèi)容上的差別遠比匯編語言和二進制指令的差別大得多,因此需要更為復(fù)雜的技術(shù)將其翻譯為等價的可執(zhí)行指令序列(或先翻譯為匯編程序,再由匯編器將其轉(zhuǎn)換為可執(zhí)行指令序列)。編譯器就是實現(xiàn)這種把高級語言編寫的程序翻譯為具有相同功能的底層指令序列或匯編程序的軟件系統(tǒng)。編譯器設(shè)計時采用的各種技術(shù)統(tǒng)稱為編譯技術(shù)。一般來說,編譯器需要具有兩個基本的功能。判斷程序的合法性。識別輸入的源程序是否符合語言定義的要求。例如,對于C語言程序來說,變量是否以字母開頭,if語句是否包含了合法的表達式等。程序的等價翻譯和錯誤提示。如果源程序合法,則可將其轉(zhuǎn)換為另一種語言表示的程序(稱為目標(biāo)程序)。否則,將給出程序的出錯提示,以方便軟件開發(fā)人員查找和修改程序中的錯誤。

編輯推薦

《編譯原理》從總體上介紹了編譯器各子系統(tǒng)的工作原理與相互關(guān)系,著重論述了詞法分析、語法分析、語義分析、代碼優(yōu)化和代碼生成等關(guān)鍵階段的核心原理、算法與機制?!毒幾g原理》內(nèi)容全面,并結(jié)合實際軟件運行環(huán)境展開論述,做到重視理論但不脫離實際,便于學(xué)生從整體和實際軟件系統(tǒng)的角度理解編譯器的內(nèi)在工作機理。注重編譯器全系統(tǒng)工作原理的完整介紹全面講解編譯器設(shè)計中的關(guān)鍵模型和算法結(jié)合實例介紹實際目標(biāo)代碼結(jié)構(gòu)與執(zhí)行機理

圖書封面

評論、評分、閱讀與下載


    編譯原理 PDF格式下載


用戶評論 (總計1條)

 
 

  •   話說怎么買了這么多的這類型的書,我盆友也下了血本了~
 

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

京ICP備13047387號-7