出版時間:2010-8 出版社:人民郵電出版社 作者:王生原 等編著 頁數:294
Tag標簽:無
前言
編譯程序是重要的計算機系統(tǒng)軟件。編譯程序的設計和實現涉及程序設計語言、計算機體系結構、語言理論、算法和軟件工程等學科知識,正如著名的計算機科學家AlfredV.Aho和JeffreyD.ullman在他們的編譯教材中說得那樣:這些原理和技術在每一個計算機學者的工作生涯中,都會反復用到?! ”緯鶕髡叨嗄甑慕虒W經驗,參照國內外較具影響的專著和教材編寫,主要介紹經典的編譯原理和技術,內容包括詞法分析程序和語法分析程序的設計及自動構造理論、語法制導翻譯基礎、語義分析、中間代碼生成、目標代碼運行時的存儲組織策略,代碼優(yōu)化和目標代碼生成等。這些內容是計算機科學理論應用于計算機系統(tǒng)設計的典范,是計算機學科體系中不可缺少的部分。本書選擇PL/O編譯程序作為實例,以利于原理部分相應知識點的講解。此外,考慮到近年來嵌入式系統(tǒng)的迅速發(fā)展、體系結構的推陳出新對編譯技術的迫切需求,本書安排了有關開源的GCC編譯器和相關工具Binutils的章節(jié),為學生將來可能從事相關領域工作構筑基礎。
內容概要
本書主要介紹編譯系統(tǒng)的一般構造原理和基本實現技術。內容包括語言基礎知識、詞法分析、語法分析、中間代碼生成、代碼優(yōu)化、目標代碼生成、符號表的構造和運行時存儲空間的組織等,同時將“PL/0語言編譯程序”的設計作為實例貫穿于相關章節(jié)中。最后還通過一系列程序實例介紹了工業(yè)界廣泛使用的開源工具GCC和Binutils。
書籍目錄
第1章 編譯程序概論 1.1 什么是編譯程序 1.2 編譯過程和編譯程序的結構 1.2.1 詞法分析 1.2.2 語法分析 1.2.3 語義分析 1.2.4 中間代碼生成 1.2.5 代碼優(yōu)化 1.2.6 目標代碼生成 1.2.7 符號表管理和出錯處理 1.2.8 編譯階段的組合和編譯結構 1.3 實例:PL/0編譯程序 1.3.1 PL/0語言簡介 1.3.2 PL/0語言處理系統(tǒng) 習題第2章 語言和文法 2.1 語言的基本概念 2.1.1 字母表和字 2.1.2 關于字的運算和字母表上的運算 2.1.3 語言 2.1.4 關于語言的運算 2.2 上下文無關文法 2.2.1 上下文無關文法的基本概念 2.2.2 歸約與推導 2.2.3 上下文無關語言 2.2.4 句型、句子與分析樹 2.2.5 歸約、推導與分析樹之間關系 2.2.6 文法的二義性 2.3 PL/0語言的語法 2.3.1 PL/0語言語法的上下文無關文法描述 2.3.2 PL/0語言語法的EBNF描述 習題第3章 詞法分析程序及其自動構造 3.1 詞法分析概述 3.1.1 詞法分析的任務 3.1.2 詞法分析在編譯程序中的組織 3.1.3 詞法分析程序中如何識別單詞 3.2 實例:PL/0編譯程序中詞法分析程序的設計和實現 3.3 詞法分析程序自動構造原理 3.3.1 正規(guī)表達式與正規(guī)語言 3.3.2 有限自動機 3.3.3 詞法分析程序構造的自動化 3.4 LEX:一個詞法分析程序的生成工具 3.4.1 LEX描述文件中使用的正規(guī)表達式 3.4.2 LEX描述文件的格式 3.4.3 LEX的使用 3.4.4 與YACC的接口約定 3.4.5 用LEX構造PL/0詞法分析程序 習題第4章 自頂向下語法分析 4.1 自頂向下分析思想 4.2 LL(1)分析方法 4.2.1 First集合和Follow集合 4.2.2 LL(1)文法 4.2.3 LL(1)分析的實現 4.2.4 一些有用的文法變換 4.3 實例:PL/0編譯程序中語法分析程序的設計和實現 4.3.1 PL/0語法分析程序的自頂向下預測分析思想 4.3.2 PL/0遞歸下降語法分析程序的設計 4.3.3 PL/0編譯程序中的錯誤處理 習題第5章 自底向上語法分析 5.1 自底向上分析思想 5.1.1 短語和直接短語 5.1.2 句柄 5.1.3 移進-歸約分析 5.2 LR分析方法 ……第6章 語法制導的語義分析和中間代碼生成第7章 符號表第8章 目標程序運行時的存儲組織第9章 代碼優(yōu)化和代碼生成第10章 編譯器和相關工具實例——GCC/Binutils附錄A PL/0編譯程序文本附錄B 用于生成某個PL/0編譯程序的LEX描述文件和YACC描述文件參考文獻
章節(jié)摘錄
圖1.7所示的編譯過程的階段劃分是一種典型的處理模式,事實上并非所有的編譯程序都分成這樣幾個階段,某些階段可能組合在一起,這些階段間的源程序的內部表示形式就沒必要構造出來。比如有些編譯程序并不要生成中間代碼,而是在語法分析和語義分析后直接產生目標指令,有些編譯程序沒有優(yōu)化階段的工作等?! ∵@里所討論的編譯過程中階段的劃分是編譯程序的邏輯組織。有時,常常把編譯的過程分為前端(front end)和后端(back end),前端由那樣一些階段組成:這些階段的工作主要依賴于源語言而與目標機無關。通常這些階段包括詞法分析、語法分析、語義分析和中間代碼生成,某些優(yōu)化工作也可能在前端做,還包括與前端每個階段相關的出錯處理工作和符號表管理工作。后端工作指那些依賴于目標機而一般不依賴源語言,只與中間代碼有關的那些階段,即目標代碼生成、目標代碼優(yōu)化,以及相關出錯處理和符號表操作。若按照這種組合方式設計編譯程序,則某一編譯程序的前端加上相應不同的后端則可以為不同的機器構成同一個源語言的編譯程序。而不同語言編譯的前端生成同一種中間語言,再使用一個共同的后端,則可為同一機器生成幾個語言的編譯程序。
編輯推薦
沒有深奧理論,但求論述嚴謹 沒有面面俱到,但求自成體系 立足原理學習,兼顧實際應用 編譯程序在計算機科學技術的發(fā)展歷史中發(fā)揮了巨大作用,是計算機系統(tǒng)的核心支撐軟件。編譯原理一直是國內外大學計算機相關專業(yè)的核心課程,其知識結構融貫整個計算機系統(tǒng),其理論基礎是聯(lián)系計算機科學和計算機系統(tǒng)的典范。《編譯原理》介紹編譯程序構造的一般原理和基本技術,注重知識體系的基礎性和連貫性,內容由語言基礎知識、詞法分析、語法分析、語法制導的語義處理基礎、語義分析和中間代碼生成、符號表組織、運行時存儲組織、代碼優(yōu)化和目標代碼生成等部分組成。同時將“PL/O語言編譯程序”的設計作為實例貫穿于相關章節(jié)中。 最后通過一系列程序實例介紹了工業(yè)界廣泛使用的開源工具GCC和Binutils。《編譯原理》可作為計算機相關專業(yè)本科階段的教材,也可用于自學或教學參考?!毒幾g原理》的作者長期從事與編譯理論和技術相關的課程教學,具有較豐富的教學經驗,著有多部編譯課程教材,并在程序設計語言理論和系統(tǒng)的研究領域取得許多有影響的成果,發(fā)表了較高水平的論文。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載