出版時(shí)間:2008-7 出版社:哈爾濱工程大學(xué)出版社 作者:張素莉 等 著 頁(yè)數(shù):250
前言
編譯技術(shù)是計(jì)算機(jī)語(yǔ)言發(fā)展的支柱,也是計(jì)算機(jī)科學(xué)中發(fā)展最迅速、最成熟的一個(gè)分支?!熬幾g原理”是一門(mén)研究設(shè)計(jì)和構(gòu)造編譯程序原理和方法的課程,是計(jì)算機(jī)及其相關(guān)專(zhuān)業(yè)的一門(mén)核心課程,在教學(xué)中占有極其重要的地位。該課程蘊(yùn)含著計(jì)算機(jī)學(xué)科中解決問(wèn)題的思路及形式化問(wèn)題和解決問(wèn)題的方法。編譯程序是計(jì)算機(jī)系統(tǒng)軟件的重要組成部分,其基本原理和實(shí)現(xiàn)技術(shù)也適用于一般軟件的設(shè)計(jì)和實(shí)現(xiàn),因此對(duì)應(yīng)用軟件和系統(tǒng)軟件的設(shè)計(jì)與開(kāi)發(fā)有一定的啟發(fā)和指導(dǎo)作用,在軟件工程、軟件自動(dòng)化、軟件再工程、語(yǔ)言轉(zhuǎn)換、程序分析等領(lǐng)域具有廣泛的應(yīng)用。本書(shū)主要介紹設(shè)計(jì)和構(gòu)造編譯程序的一般原理、基本方法和主要實(shí)現(xiàn)技術(shù)。通過(guò)該課程的學(xué)習(xí),學(xué)生能夠掌握編譯系統(tǒng)的結(jié)構(gòu)、工作流程及編譯程序各組成部分的設(shè)計(jì)原理和常用的編譯技術(shù)和方法,為今后從事應(yīng)用軟件和系統(tǒng)軟件的開(kāi)發(fā)奠定一定的理論和實(shí)踐基礎(chǔ)?! ”緯?shū)共分9章。第1章介紹了編譯程序的基礎(chǔ)知識(shí),包括編譯工作的基本過(guò)程及各階段的基本任務(wù);第2章介紹了文法及語(yǔ)言的基本概念、文法分類(lèi)、短語(yǔ)、簡(jiǎn)單短語(yǔ)與句柄,語(yǔ)法樹(shù)和二義性等;第3章介紹了詞法分析程序的設(shè)計(jì)原理與構(gòu)造方法;第4章介紹了語(yǔ)法分析的基本思想和分析技術(shù),包括語(yǔ)法分析的任務(wù)、自頂向下分析法和自底向上分析法等;第5章介紹了語(yǔ)義分析與中間代碼的生成;第6章介紹了符號(hào)表的組織與管理,包括符號(hào)表的作用、符號(hào)表的組織和使用方法;第7章介紹了程序運(yùn)行時(shí)的存儲(chǔ)組織與分配技術(shù);第8章介紹了代碼優(yōu)化的基本概念、基本塊的劃分、局部?jī)?yōu)化和循環(huán)優(yōu)化方法等;第9章介紹了目標(biāo)代碼生成的基本技術(shù)?! ”緯?shū)系統(tǒng)性強(qiáng),概念清晰,內(nèi)容簡(jiǎn)明易懂,每章章首配有本章的學(xué)習(xí)目標(biāo)和學(xué)習(xí)要求,章末配有本章小結(jié)和適量的習(xí)題,使學(xué)習(xí)者可以快速掌握書(shū)中的內(nèi)容。該書(shū)根據(jù)編者多年的教學(xué)經(jīng)驗(yàn)編寫(xiě)而成,在成書(shū)的過(guò)程中編者參考了有關(guān)文獻(xiàn),在此向這些書(shū)籍的作者一并表示感謝。由于編者水平有限,時(shí)間倉(cāng)促,書(shū)中難免存在一些缺點(diǎn)和不足,敬請(qǐng)讀者多提寶貴意見(jiàn),以便再版時(shí)修訂補(bǔ)充。
內(nèi)容概要
《編譯原理》是一門(mén)研究設(shè)計(jì)和構(gòu)造編譯程序原理和方法的課程,是計(jì)算機(jī)專(zhuān)業(yè)的一門(mén)重要的核心課程?!丁笆晃濉敝攸c(diǎn)規(guī)劃教材·高等院校計(jì)算機(jī)及其應(yīng)用系列:編譯原理》系統(tǒng)介紹了編譯程序構(gòu)造的一般原理和基本實(shí)現(xiàn)方法,主要內(nèi)容包括詞法分析、語(yǔ)法分析、語(yǔ)義分析與中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成、符號(hào)表的組織與管理和運(yùn)行時(shí)的存儲(chǔ)組織與分配技術(shù)等。《“十一五”重點(diǎn)規(guī)劃教材·高等院校計(jì)算機(jī)及其應(yīng)用系列:編譯原理》內(nèi)容豐富,系統(tǒng)性強(qiáng),內(nèi)容循序漸進(jìn),實(shí)例豐富,文字簡(jiǎn)練,通俗易懂,而且每章都配有各種類(lèi)型的習(xí)題。
書(shū)籍目錄
第1章 編譯概述1.1 程序的翻譯1.2 編譯程序的組成1.3 編譯程序的構(gòu)造1.4 小結(jié)第2章 形式語(yǔ)言的基本知識(shí)2.1 字母表和符號(hào)串的基本概念2.2 文法和語(yǔ)言的形式定義2.3 語(yǔ)法樹(shù)與文法二義性2.4 文法和語(yǔ)言的分類(lèi)2.5 小結(jié)第3章 詞法分析3.1 詞法分析的任務(wù)3.2 詞法分析程序的輸出形式3.3 詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)3.4 正規(guī)式與有窮自動(dòng)機(jī)3.5 詞法分析程序的自動(dòng)生成工具呶3.6 實(shí)例語(yǔ)言的詞法分析程序3.7 小結(jié)第4章 語(yǔ)法分析4.1 語(yǔ)法分析的任務(wù)4.2 自頂向下分析法4.3 自底向上分析法4.4 LR分析法4.5 語(yǔ)法分析程序的自動(dòng)生成工具YACC4.6 實(shí)例語(yǔ)言編譯程序的語(yǔ)法分析4.7 小結(jié)第5章 語(yǔ)義分析與中間代碼的生成5.1 語(yǔ)義分析的任務(wù)5.2 語(yǔ)法制導(dǎo)翻譯5.3 中間代碼5.4 說(shuō)明語(yǔ)句的翻譯5.5 賦值語(yǔ)句的翻譯5.6 布爾表達(dá)式的翻譯5.7 控制流語(yǔ)句的翻譯5.8 過(guò)程調(diào)用的翻譯5.9 實(shí)例編譯程序的語(yǔ)義分析5.10 小結(jié)第6章 符號(hào)表管理6.1 符號(hào)表的作用6.2 符號(hào)表的主要內(nèi)容和作用6.3 符號(hào)表的組織6.4 符號(hào)表的管理6.5 小結(jié)第7章 運(yùn)行時(shí)的存儲(chǔ)組織與分配7.1 存儲(chǔ)組織概述7.2 靜態(tài)存儲(chǔ)分配7.3 棧式動(dòng)態(tài)存儲(chǔ)分配7.4 堆式動(dòng)態(tài)存儲(chǔ)分配7.5 小結(jié)第8章 代碼優(yōu)化8.1 局部?jī)?yōu)化8.2 循環(huán)優(yōu)化8.3 小結(jié)第9章 目標(biāo)代碼生成9.1 目標(biāo)代碼的形式9.2 假想的計(jì)算機(jī)模型9.3 一個(gè)簡(jiǎn)單的代碼生成程序9.4 小結(jié)附錄A C語(yǔ)言實(shí)現(xiàn)的實(shí)例語(yǔ)言編譯程序附錄B YACC語(yǔ)言實(shí)現(xiàn)的實(shí)例語(yǔ)言編譯程序參考文獻(xiàn)
章節(jié)摘錄
?。?)類(lèi)型檢查確保程序的每一部分在語(yǔ)言的類(lèi)型規(guī)則的作用下有意義。例如,參與運(yùn)算的操作數(shù)的類(lèi)型應(yīng)相容,否則編譯器會(huì)報(bào)錯(cuò)?! 。?)控制流檢查用以保證控制語(yǔ)句擁有合法的轉(zhuǎn)向點(diǎn),即引起控制流從某個(gè)結(jié)構(gòu)中跳轉(zhuǎn)出來(lái)的語(yǔ)句必須能夠決定控制流轉(zhuǎn)向的目標(biāo)地址。如C語(yǔ)言中的break語(yǔ)句將導(dǎo)致控制流離開(kāi)包含其最小的while,for和switch語(yǔ)句,如果找不到這樣的語(yǔ)句,將導(dǎo)致錯(cuò)誤?! 。?)一致性檢查有些情況下一個(gè)對(duì)象只能被定義一次。如相同作用域內(nèi)標(biāo)識(shí)符只能說(shuō)明一次,case語(yǔ)句中的標(biāo)簽也應(yīng)該是唯一的?! 。?)相關(guān)名稱檢查有時(shí)候同樣的名字會(huì)多次出現(xiàn)。如Ada中,循環(huán)或塊中都將有一個(gè)名字同時(shí)出現(xiàn)在構(gòu)造器的開(kāi)始和結(jié)束。編譯器將檢查同樣的名字可以在兩端被使用。 5.1.2語(yǔ)義分析的任務(wù) 語(yǔ)義分析的根本任務(wù)是對(duì)源程序在進(jìn)行詞法分析和語(yǔ)法分析的基礎(chǔ)上,進(jìn)一步分析其含義,在理解其含義的基礎(chǔ)上為生成相應(yīng)的目標(biāo)代碼作準(zhǔn)備或者直接生成目標(biāo)代碼?! §o態(tài)語(yǔ)義分析包括執(zhí)行分析的描述和使用合適的算法對(duì)分析的實(shí)現(xiàn),它和詞法分析及語(yǔ)法分析相類(lèi)似。例如,在語(yǔ)法分析中使用上下文無(wú)關(guān)文法描述語(yǔ)法結(jié)構(gòu),并用自頂向下或自底向上的分析算法實(shí)現(xiàn)語(yǔ)法結(jié)構(gòu)。在語(yǔ)義分析中,不能用正規(guī)文法或者上下文無(wú)關(guān)文法進(jìn)行描述,一個(gè)原因是沒(méi)有標(biāo)準(zhǔn)的方法來(lái)說(shuō)明語(yǔ)言的靜態(tài)語(yǔ)義;另一個(gè)原因是對(duì)于各種語(yǔ)言,靜態(tài)語(yǔ)義分析的種類(lèi)和總量的變化范圍很大。因此,語(yǔ)義的形式化描述是相當(dāng)困難的,目前常常使用的且實(shí)現(xiàn)得很好的描述語(yǔ)義分析方法是利用屬性文法描述程序設(shè)計(jì)語(yǔ)言的語(yǔ)義,然后采用語(yǔ)法制導(dǎo)翻譯的方法完成對(duì)語(yǔ)法單位的翻譯工作?! ?.2語(yǔ)法制導(dǎo)翻譯 語(yǔ)法制導(dǎo)翻譯方法就是在語(yǔ)法分析中依隨分析的過(guò)程,根據(jù)每個(gè)產(chǎn)生式添加的語(yǔ)義動(dòng)作進(jìn)行翻譯的方法。本節(jié)主要介紹屬性文法及其語(yǔ)法制導(dǎo)翻譯的概念?! ?.2.1屬性文法 屬性文法是Knuth于1968年提出來(lái)的,也被稱為屬性翻譯文法。屬性文法以上下文無(wú)關(guān)文法為基礎(chǔ),且為每個(gè)文法符號(hào)配備了一些屬性。屬性代表著上下文無(wú)關(guān)文法中每個(gè)文法符號(hào)的語(yǔ)義,這種語(yǔ)義符號(hào)可能由符號(hào)的類(lèi)型、值、符號(hào)表的內(nèi)容,甚至一段代碼序列構(gòu)成,而且一個(gè)符號(hào)可以有多個(gè)屬性。屬性同變量一樣,可以進(jìn)行計(jì)算和傳遞,屬性加工的過(guò)程就是語(yǔ)義處理的過(guò)程。為文法的每個(gè)產(chǎn)生式配備的計(jì)算屬性規(guī)則稱為語(yǔ)義規(guī)則。通常情況下,文法的屬性分為繼承屬性和綜合屬性兩種?! ±^承屬性用于“自上而下”傳遞信息,即文法產(chǎn)生式右部符號(hào)的某些屬性是根據(jù)其左部符號(hào)的屬性和(或)右部的其他符號(hào)的某些屬性計(jì)算得到的。在語(yǔ)法樹(shù)中,一個(gè)節(jié)點(diǎn)的繼承屬性由此節(jié)點(diǎn)的父節(jié)點(diǎn)和(或)兄弟節(jié)點(diǎn)的某些屬性計(jì)算得到,即沿語(yǔ)法樹(shù)向下傳遞,由根節(jié)點(diǎn)到分枝節(jié)點(diǎn),反映了其對(duì)上下文依賴的特性。因而繼承屬性可以很方便地表示程序設(shè)計(jì)語(yǔ)言結(jié)構(gòu)中的上下文依賴關(guān)系。 ……
圖書(shū)封面
評(píng)論、評(píng)分、閱讀與下載
250萬(wàn)本中文圖書(shū)簡(jiǎn)介、評(píng)論、評(píng)分,PDF格式免費(fèi)下載。 第一圖書(shū)網(wǎng) 手機(jī)版