編譯原理

出版時(shí)間:2010-8  出版社:人民郵電出版社  作者:王生原 等編著  頁(yè)數(shù):294  
Tag標(biāo)簽:無(wú)  

前言

  編譯程序是重要的計(jì)算機(jī)系統(tǒng)軟件。編譯程序的設(shè)計(jì)和實(shí)現(xiàn)涉及程序設(shè)計(jì)語(yǔ)言、計(jì)算機(jī)體系結(jié)構(gòu)、語(yǔ)言理論、算法和軟件工程等學(xué)科知識(shí),正如著名的計(jì)算機(jī)科學(xué)家AlfredV.Aho和JeffreyD.ullman在他們的編譯教材中說得那樣:這些原理和技術(shù)在每一個(gè)計(jì)算機(jī)學(xué)者的工作生涯中,都會(huì)反復(fù)用到?! ”緯鶕?jù)作者多年的教學(xué)經(jīng)驗(yàn),參照國(guó)內(nèi)外較具影響的專著和教材編寫,主要介紹經(jīng)典的編譯原理和技術(shù),內(nèi)容包括詞法分析程序和語(yǔ)法分析程序的設(shè)計(jì)及自動(dòng)構(gòu)造理論、語(yǔ)法制導(dǎo)翻譯基礎(chǔ)、語(yǔ)義分析、中間代碼生成、目標(biāo)代碼運(yùn)行時(shí)的存儲(chǔ)組織策略,代碼優(yōu)化和目標(biāo)代碼生成等。這些內(nèi)容是計(jì)算機(jī)科學(xué)理論應(yīng)用于計(jì)算機(jī)系統(tǒng)設(shè)計(jì)的典范,是計(jì)算機(jī)學(xué)科體系中不可缺少的部分。本書選擇PL/O編譯程序作為實(shí)例,以利于原理部分相應(yīng)知識(shí)點(diǎn)的講解。此外,考慮到近年來嵌入式系統(tǒng)的迅速發(fā)展、體系結(jié)構(gòu)的推陳出新對(duì)編譯技術(shù)的迫切需求,本書安排了有關(guān)開源的GCC編譯器和相關(guān)工具Binutils的章節(jié),為學(xué)生將來可能從事相關(guān)領(lǐng)域工作構(gòu)筑基礎(chǔ)。

內(nèi)容概要

本書主要介紹編譯系統(tǒng)的一般構(gòu)造原理和基本實(shí)現(xiàn)技術(shù)。內(nèi)容包括語(yǔ)言基礎(chǔ)知識(shí)、詞法分析、語(yǔ)法分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成、符號(hào)表的構(gòu)造和運(yùn)行時(shí)存儲(chǔ)空間的組織等,同時(shí)將“PL/0語(yǔ)言編譯程序”的設(shè)計(jì)作為實(shí)例貫穿于相關(guān)章節(jié)中。最后還通過一系列程序?qū)嵗榻B了工業(yè)界廣泛使用的開源工具GCC和Binutils。

書籍目錄

第1章 編譯程序概論 1.1 什么是編譯程序 1.2 編譯過程和編譯程序的結(jié)構(gòu)  1.2.1 詞法分析  1.2.2 語(yǔ)法分析  1.2.3 語(yǔ)義分析  1.2.4 中間代碼生成  1.2.5 代碼優(yōu)化  1.2.6 目標(biāo)代碼生成  1.2.7 符號(hào)表管理和出錯(cuò)處理  1.2.8 編譯階段的組合和編譯結(jié)構(gòu) 1.3 實(shí)例:PL/0編譯程序  1.3.1 PL/0語(yǔ)言簡(jiǎn)介  1.3.2 PL/0語(yǔ)言處理系統(tǒng) 習(xí)題第2章 語(yǔ)言和文法 2.1 語(yǔ)言的基本概念  2.1.1 字母表和字  2.1.2 關(guān)于字的運(yùn)算和字母表上的運(yùn)算  2.1.3 語(yǔ)言  2.1.4 關(guān)于語(yǔ)言的運(yùn)算 2.2 上下文無(wú)關(guān)文法  2.2.1 上下文無(wú)關(guān)文法的基本概念  2.2.2 歸約與推導(dǎo)  2.2.3 上下文無(wú)關(guān)語(yǔ)言  2.2.4 句型、句子與分析樹  2.2.5 歸約、推導(dǎo)與分析樹之間關(guān)系  2.2.6 文法的二義性 2.3 PL/0語(yǔ)言的語(yǔ)法  2.3.1 PL/0語(yǔ)言語(yǔ)法的上下文無(wú)關(guān)文法描述  2.3.2 PL/0語(yǔ)言語(yǔ)法的EBNF描述 習(xí)題第3章 詞法分析程序及其自動(dòng)構(gòu)造 3.1 詞法分析概述  3.1.1 詞法分析的任務(wù)  3.1.2 詞法分析在編譯程序中的組織  3.1.3 詞法分析程序中如何識(shí)別單詞 3.2 實(shí)例:PL/0編譯程序中詞法分析程序的設(shè)計(jì)和實(shí)現(xiàn) 3.3 詞法分析程序自動(dòng)構(gòu)造原理  3.3.1 正規(guī)表達(dá)式與正規(guī)語(yǔ)言  3.3.2 有限自動(dòng)機(jī)  3.3.3 詞法分析程序構(gòu)造的自動(dòng)化 3.4 LEX:一個(gè)詞法分析程序的生成工具  3.4.1 LEX描述文件中使用的正規(guī)表達(dá)式  3.4.2 LEX描述文件的格式  3.4.3 LEX的使用  3.4.4 與YACC的接口約定  3.4.5 用LEX構(gòu)造PL/0詞法分析程序 習(xí)題第4章 自頂向下語(yǔ)法分析 4.1 自頂向下分析思想 4.2 LL(1)分析方法  4.2.1 First集合和Follow集合  4.2.2 LL(1)文法  4.2.3 LL(1)分析的實(shí)現(xiàn)  4.2.4 一些有用的文法變換 4.3 實(shí)例:PL/0編譯程序中語(yǔ)法分析程序的設(shè)計(jì)和實(shí)現(xiàn)  4.3.1 PL/0語(yǔ)法分析程序的自頂向下預(yù)測(cè)分析思想  4.3.2 PL/0遞歸下降語(yǔ)法分析程序的設(shè)計(jì)  4.3.3 PL/0編譯程序中的錯(cuò)誤處理 習(xí)題第5章 自底向上語(yǔ)法分析 5.1 自底向上分析思想  5.1.1 短語(yǔ)和直接短語(yǔ)  5.1.2 句柄  5.1.3 移進(jìn)-歸約分析 5.2 LR分析方法  ……第6章 語(yǔ)法制導(dǎo)的語(yǔ)義分析和中間代碼生成第7章 符號(hào)表第8章 目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織第9章 代碼優(yōu)化和代碼生成第10章 編譯器和相關(guān)工具實(shí)例——GCC/Binutils附錄A PL/0編譯程序文本附錄B 用于生成某個(gè)PL/0編譯程序的LEX描述文件和YACC描述文件參考文獻(xiàn)

章節(jié)摘錄

  圖1.7所示的編譯過程的階段劃分是一種典型的處理模式,事實(shí)上并非所有的編譯程序都分成這樣幾個(gè)階段,某些階段可能組合在一起,這些階段間的源程序的內(nèi)部表示形式就沒必要構(gòu)造出來。比如有些編譯程序并不要生成中間代碼,而是在語(yǔ)法分析和語(yǔ)義分析后直接產(chǎn)生目標(biāo)指令,有些編譯程序沒有優(yōu)化階段的工作等?! ∵@里所討論的編譯過程中階段的劃分是編譯程序的邏輯組織。有時(shí),常常把編譯的過程分為前端(front end)和后端(back end),前端由那樣一些階段組成:這些階段的工作主要依賴于源語(yǔ)言而與目標(biāo)機(jī)無(wú)關(guān)。通常這些階段包括詞法分析、語(yǔ)法分析、語(yǔ)義分析和中間代碼生成,某些優(yōu)化工作也可能在前端做,還包括與前端每個(gè)階段相關(guān)的出錯(cuò)處理工作和符號(hào)表管理工作。后端工作指那些依賴于目標(biāo)機(jī)而一般不依賴源語(yǔ)言,只與中間代碼有關(guān)的那些階段,即目標(biāo)代碼生成、目標(biāo)代碼優(yōu)化,以及相關(guān)出錯(cuò)處理和符號(hào)表操作。若按照這種組合方式設(shè)計(jì)編譯程序,則某一編譯程序的前端加上相應(yīng)不同的后端則可以為不同的機(jī)器構(gòu)成同一個(gè)源語(yǔ)言的編譯程序。而不同語(yǔ)言編譯的前端生成同一種中間語(yǔ)言,再使用一個(gè)共同的后端,則可為同一機(jī)器生成幾個(gè)語(yǔ)言的編譯程序。

編輯推薦

  沒有深?yuàn)W理論,但求論述嚴(yán)謹(jǐn)  沒有面面俱到,但求自成體系  立足原理學(xué)習(xí),兼顧實(shí)際應(yīng)用  編譯程序在計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展歷史中發(fā)揮了巨大作用,是計(jì)算機(jī)系統(tǒng)的核心支撐軟件。編譯原理一直是國(guó)內(nèi)外大學(xué)計(jì)算機(jī)相關(guān)專業(yè)的核心課程,其知識(shí)結(jié)構(gòu)融貫整個(gè)計(jì)算機(jī)系統(tǒng),其理論基礎(chǔ)是聯(lián)系計(jì)算機(jī)科學(xué)和計(jì)算機(jī)系統(tǒng)的典范?!毒幾g原理》介紹編譯程序構(gòu)造的一般原理和基本技術(shù),注重知識(shí)體系的基礎(chǔ)性和連貫性,內(nèi)容由語(yǔ)言基礎(chǔ)知識(shí)、詞法分析、語(yǔ)法分析、語(yǔ)法制導(dǎo)的語(yǔ)義處理基礎(chǔ)、語(yǔ)義分析和中間代碼生成、符號(hào)表組織、運(yùn)行時(shí)存儲(chǔ)組織、代碼優(yōu)化和目標(biāo)代碼生成等部分組成。同時(shí)將“PL/O語(yǔ)言編譯程序”的設(shè)計(jì)作為實(shí)例貫穿于相關(guān)章節(jié)中?! ∽詈笸ㄟ^一系列程序?qū)嵗榻B了工業(yè)界廣泛使用的開源工具GCC和Binutils?!毒幾g原理》可作為計(jì)算機(jī)相關(guān)專業(yè)本科階段的教材,也可用于自學(xué)或教學(xué)參考?!毒幾g原理》的作者長(zhǎng)期從事與編譯理論和技術(shù)相關(guān)的課程教學(xué),具有較豐富的教學(xué)經(jīng)驗(yàn),著有多部編譯課程教材,并在程序設(shè)計(jì)語(yǔ)言理論和系統(tǒng)的研究領(lǐng)域取得許多有影響的成果,發(fā)表了較高水平的論文。

圖書封面

圖書標(biāo)簽Tags

無(wú)

評(píng)論、評(píng)分、閱讀與下載


    編譯原理 PDF格式下載


用戶評(píng)論 (總計(jì)0條)

 
 

 

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

京ICP備13047387號(hào)-7