出版時(shí)間:2005-2 出版社:清華大學(xué) 作者:張素琴 頁數(shù):456
Tag標(biāo)簽:無
內(nèi)容概要
本書特色:
這套教材已伴隨著計(jì)算機(jī)科學(xué)與技術(shù)的飛速發(fā)展茁壯成長了二十佘年,獲得了國家科學(xué)技術(shù)進(jìn)步獎(jiǎng)、國家級(jí)優(yōu)秀教材特等獎(jiǎng)等29項(xiàng)部級(jí)以上獎(jiǎng)勵(lì),被幾百所高校選作教材,教學(xué)效果好。現(xiàn)經(jīng)修訂和增加新品種、新內(nèi)容,基本涵蓋了本科生和碩士研究生的主要課程。這套系列教材體系完整、結(jié)構(gòu)嚴(yán)謹(jǐn)、理論結(jié)合實(shí)際、注重素質(zhì)培養(yǎng)。
· 提供一個(gè)簡單但不失典型性的編譯程序,有源碼(C和PASCAL兩種語言)和分析工具
便于清晰的展示編譯程序的基本構(gòu)成和實(shí)現(xiàn)技術(shù)。借助這個(gè)文本,學(xué)生可以使用高級(jí)語言擴(kuò)展該編譯程序,也可以利用編譯生成工具重新實(shí)現(xiàn)。
· 重點(diǎn)知識(shí)點(diǎn)有了典型例題的解析說明。
·
針對(duì)面向?qū)ο笳Z言的語法結(jié)構(gòu)及其語義的特征,著重從類及類的繼承結(jié)構(gòu)上,討論編譯實(shí)現(xiàn)技術(shù)及面向?qū)ο蠹夹g(shù)構(gòu)造編譯程序的思路,便于讀者對(duì)一般可復(fù)用軟件體系結(jié)構(gòu)的理解。
本書介紹編譯系統(tǒng)的一般構(gòu)造原理、基本實(shí)現(xiàn)技術(shù)和一些自動(dòng)構(gòu)造工具。主要由語言基礎(chǔ)知識(shí)、詞法分析、語法分析、中間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成、符號(hào)表的構(gòu)造和運(yùn)行時(shí)存儲(chǔ)空間的組織等部分組成。
書中在介紹編譯程序構(gòu)造基本原理的同時(shí)引入“PL/0語言的編譯程序”結(jié)構(gòu)及文本,還引入了LEX、YACC使用方法與實(shí)例。
本書是高等院校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的本科生教材,也可作為教師、研究生蔌軟件工程技術(shù)人員的參考書。
作者簡介
呂映芝
清華大學(xué)計(jì)算機(jī)系教授,1961年畢業(yè)于清華大學(xué)數(shù)學(xué)力學(xué)系計(jì)算數(shù)學(xué)專業(yè)。主要從事程序設(shè)計(jì)語言編譯原理的教學(xué)工作、程序語言結(jié)構(gòu)和自動(dòng)生成工具的研究工作以及程序設(shè)計(jì)語言編譯原理計(jì)算機(jī)輔助教學(xué)軟件的研制和開發(fā)工作。
書籍目錄
第1章 引論
1.1 什么是編譯程序
1.2 編譯過程和編譯程序的結(jié)構(gòu)
1.2.1 編譯過程概述
1.2.2 編譯程序的結(jié)構(gòu)
1.2.3 編譯階段的組合
1.3 解釋程序和一些軟件工具
1.3.1 解釋程序
1.3.2 處理源程序的軟件工具
1.4 程序設(shè)計(jì)語言范型
練習(xí)
第2章 pl/0編程程序的實(shí)現(xiàn)
2.1 pl/0語言描述
2.1.1 pl/0語言的語漢描述圖
2.1.2 pl/0語言文法的ebnf表示
2.2 pl/0編譯程序的結(jié)構(gòu)
2.3 pl/0編譯程序的詞法分析
2.4 pl/0編譯程序的語法語義分析
2.5 pl/0編譯程序的目標(biāo)代碼結(jié)構(gòu)和代碼生成
2.6 pl/0編譯程序的語法錯(cuò)誤處理
2.7 pl/0編譯程序的目標(biāo)代碼解釋執(zhí)行時(shí)的存儲(chǔ)分配
練習(xí)
第3章 文法和語言
3.1 文法的直觀概念
3.2 符號(hào)和符號(hào)串
3.3 文法和語言的形式定義
3.4 文法的類型
3.5 上下文無關(guān)文法及其語法樹
3.6 句型的分析
3.6.1 自上而下的分析方法
3.6.2 自下而上的分析方法
3.6.3 句型分析的有關(guān)問題
3.7 有關(guān)文法實(shí)用中的一些說明
3.7.1 有關(guān)文法的實(shí)用限制
3.7.2 上下文無關(guān)文法中的規(guī)則
3.8 典型例題解答
練習(xí)
第4章 詞法分析
4.1 詞法分析程序的設(shè)計(jì)
4.1.1 詞法分析程序與語法分析程序的接口方式
4.1.2 詞法分析程序的輸出
4.1.3 將詞法分析工作分離的考慮
4.2 單詞的描述工具
4.2.1 正規(guī)文法
4.2.2 正規(guī)式
4.2.3 正規(guī)文法和正規(guī)式的等性
4.3 有窮自動(dòng)機(jī)
4.3.1 確定的有窮自動(dòng)機(jī)(dfa)
4.3.2 不確定的有窮自動(dòng)機(jī)(nfa)
4.3.3 nfa轉(zhuǎn)換為等價(jià)的dfa
4.3.4 確定有窮自動(dòng)機(jī)的化簡
4.4 正規(guī)式和有窮自動(dòng)機(jī)的等價(jià)性
4.5 正規(guī)文法和有窮自動(dòng)機(jī)的等價(jià)性
4.6 詞法分析程序的自動(dòng)構(gòu)造工具
4.7 典型例題及解答
練習(xí)
第5章 自頂向下語法分析方法
5.1 確定的自頂向下分析思想
5.2 ll(1)文法的判別
5.3 某些非ll(1)文法到ll(1)文法的等價(jià)變換
5.4 不確定的自頂向下分析思想
5.5 確定的自頂向下分析方法
5.5.1 遞歸子程序法
5.5.2 預(yù)測(cè)分析方法
5.6 典型例題及解答
練習(xí)
第6章 自底向上優(yōu)先分析
6.1 自底向上優(yōu)先分析概述
6.2 簡單優(yōu)先分析法
6.2.1 優(yōu)先關(guān)系
6.2.2 簡單優(yōu)先文法的定義
6.2.3 簡單優(yōu)先分析法的操作步驟
6.3 算符優(yōu)先分析法
6.3.1 直觀算符優(yōu)先分析法
6.3.2 算符優(yōu)先文法的定義
6.3.3 算符優(yōu)先關(guān)系表的構(gòu)造
6.3.4 算符優(yōu)先分析算法
6.3.5 優(yōu)先函數(shù)
6.3.6 算符優(yōu)先分析法的局限性
6.4 典型例題及解答
練習(xí)
第7章 lr分析
7.1 lr分析概述
7.2 lr(0)分析
7.2.1 可歸前綴和子前綴
7.2.2 識(shí)別活前綴的有限自動(dòng)機(jī)
7.2.3 活前綴及其可歸前綴的一般計(jì)算方法
7.2.4 lr(0)項(xiàng)目集規(guī)范族的構(gòu)造
7.3 slr(1)分析
7.4 lr(1)分析
7.4.1 lr(1)項(xiàng)目集族的構(gòu)造
7.4.2 lr(1)分析表的構(gòu)造
7.5 lalr(1)分析
7.6 二義性文法在lr分析中的應(yīng)用
7.7 語法分析程序的自動(dòng)構(gòu)造工具yacc
7.8 典型例題及解答
練習(xí)
第8章 語法制導(dǎo)翻譯和中間代碼生成
8.1 屬性文法
8.2 語法制導(dǎo)翻譯概論
8.2.1 計(jì)算語義規(guī)則
8.2.2 s-屬性方法和自下而上翻譯
8.2.3 l-屬性文法在自上而下分析中的實(shí)現(xiàn)
8.2.4 l-屬性文法在自下而上分析中的實(shí)現(xiàn)
8.3 中間代碼的形式
8.3.1 逆波壯大記號(hào)
8.3.2 三元式和樹表表示
8.3.3 四元式
8.4 簡單賦值語句的翻譯
8.5 布爾表達(dá)式的翻譯
8.5.1 布爾表達(dá)式的翻譯方法
8.5.2 控制語句中布爾表達(dá)式的翻譯
8.6 控制結(jié)構(gòu)的翻譯
8.6.1 條件轉(zhuǎn)移
8.6.2 開關(guān)語句
8.6.3 for循環(huán)語句
8.6.4 出口語句
8.6.5 goto語句
8.6.6 過程調(diào)用的四元式產(chǎn)生
8.7 說明語句的翻譯
8.7.1 簡單說明語句的翻譯
8.7.2 過程中的說明
8.8 數(shù)組和結(jié)構(gòu)的翻譯
8.8.1 數(shù)組說明和數(shù)組元素的引用
8.8.2 結(jié)構(gòu)(記錄)說明和引用的翻譯
練習(xí)
第9章 符號(hào)表
9.1 符號(hào)表的作用和地位
9.2 符號(hào)的主要屬性及作用
9.3 符號(hào)表的組織
9.3.1 符號(hào)表的總體組織
9.3.2 符號(hào)表項(xiàng)的排列
9.3.3 關(guān)鍵字域的組織
9.3.4 其他域的組織
9.3.5 下堆鏈域的組織
9.4 符號(hào)表的管理
9.4.1 符號(hào)表的初始化
9.4.2 符號(hào)的登錄
9.4.3 符號(hào)的查找
9.4.4 符號(hào)表的分程序結(jié)構(gòu)層次的管理
第10章 目標(biāo)程序運(yùn)行時(shí)的存儲(chǔ)組織
10.1 數(shù)據(jù)空間的三種不同使用方法和管理方法
10.1.1 靜態(tài)存儲(chǔ)分配
10.1.2 動(dòng)態(tài)存儲(chǔ)分配
10.1.3 棧式動(dòng)態(tài)存儲(chǔ)分配
10.1.4 堆式動(dòng)態(tài)存儲(chǔ)分配
10.2 棧式存儲(chǔ)分配的實(shí)現(xiàn)
10.2.1 簡單的棧式存儲(chǔ)分配的實(shí)現(xiàn)
10.2.2 嵌套過程語言的棧式實(shí)現(xiàn)
10.2.3 分程序結(jié)構(gòu)的存儲(chǔ)管理
10.3 參數(shù)傳遞
10.3.1 傳值
10.3.2 傳地址
10.3.3 過程參數(shù)
10.4 過程調(diào)用、過程進(jìn)入和過程返回
練習(xí)
第11章 代碼優(yōu)化
11.1 優(yōu)化技術(shù)簡介
11.2 局部優(yōu)化
11.2.1 基本塊的劃分
11.2.2 基本塊的變換
11.2.3 基本塊的有向圖dag(directed acyclic graph)表示
11.2.4 dag的應(yīng)用
11.3 控制流分析和循環(huán)優(yōu)化
11.3.1 程序流圖
11.3.2 循環(huán)的查找
11.3.3 循環(huán)優(yōu)化
11.4 數(shù)據(jù)流的分析與全局優(yōu)化
11.4.1 一些主要的概念
11.4.2 數(shù)據(jù)流言程的一般形式
11.4.3 到達(dá)-定值數(shù)據(jù)流方程
11.4.4 可用表達(dá)式及其數(shù)據(jù)流方程
11.4.5 活躍變量數(shù)據(jù)流方程
11.4.6 復(fù)寫傳播
練習(xí)
第12章 代碼生成
12.1 代碼生成概述
12.1.1 代碼生成程序在編譯系統(tǒng)中的位置
12.1.2 設(shè)計(jì)代碼生成程序的基本問題
12.2 一個(gè)簡單的代碼生成程序
12.2.1 計(jì)算機(jī)模型
12.2.2 待用信息鏈表法
12.2.3 代碼生成算法
12.3 幾種常用的代碼生成程序的開發(fā)方法
12.3.1 解釋性代碼生成法
12.3.2 模式匹配代碼生成法
12.3.3 表驅(qū)動(dòng)代碼生成法
12.4 全局寄存器分配(圖著色法)
12.4.1 概述
12.4.2 圖著色寄存器分配法的相關(guān)技術(shù)
12.4.3 示例
12.5 代碼生成程序的自動(dòng)化構(gòu)造
12.5.1 模式匹配與動(dòng)態(tài)規(guī)劃
12.5.2 基于語法制導(dǎo)的代碼生成程序自動(dòng)構(gòu)造技術(shù)
12.5.3 基于語義制導(dǎo)的代碼生成程序自動(dòng)構(gòu)造技術(shù)
練習(xí)
第13章 編譯程序的構(gòu)造
13.1 編譯程序的書寫
13.1.1 編譯程序的書寫語言與t型圖
13.1.2 編譯程序的自展技術(shù)
13.2 可重定向編譯程序
13.2.1 概述
13.2.2 支持可重定向編譯的關(guān)鍵技術(shù)
13.2.3 常用的可重定編譯程序
13.3 gcc的剖析
13.3.1 gcc的總體結(jié)構(gòu)
13.3.2 gcc的中間表示
13.3.3 gcc的機(jī)器描述
13.3.4 gcc的代碼生成與機(jī)器描述的接口
13.4 gcc的定制
13.4.1 gcc的剪裁
13.4.2 gcc編譯程序的安裝與配置
13.5 gcc的優(yōu)化
13.5.1 概述
13.5.2 窺孔優(yōu)化
13.5.3 基于機(jī)器描述的窺孔優(yōu)化
13.5.4 修改gcc源程序的窺孔優(yōu)化
練習(xí)
第14章 面向?qū)ο笳Z言的編譯
14.1 面向?qū)ο笳Z言的基本概念
14.2 面向?qū)ο笳Z言語法結(jié)構(gòu)及語義處理的特征
14.2.1 面向?qū)ο笳Z言的類的語法結(jié)構(gòu)及語義
14.2.2 面向?qū)ο笳Z言的有效類、延遲類及延遲成員
14.2.3 面向?qū)ο笳Z言的類屬類
14.2.4 面向?qū)ο笳Z言的繼承類
14.3 多態(tài)實(shí)例變量、多態(tài)引用的類型檢查及綁定
14.3.1 實(shí)例變量和多態(tài)引用
14.3.2 靜態(tài)類型檢查及動(dòng)態(tài)類型檢查
14.3.3 對(duì)象的創(chuàng)建
14.4 面向?qū)ο蟛僮鞯恼Z義
14.4.1 類名的屬性構(gòu)造
14.4.2 類名的屬性及其結(jié)構(gòu)
14.5 類成員名的屬性及其結(jié)構(gòu)
14.5.1 類名的屬性及其結(jié)構(gòu)
14.5.2 類成員名的屬性及其結(jié)構(gòu)
14.6 對(duì)象的存儲(chǔ)管理及廢棄單元回收
14.6.1 對(duì)象的三種存儲(chǔ)區(qū)組織管理方式
14.6.2 靜態(tài)模型和棧式模型廢棄單元的回收
14.6.3 堆式模型廢棄單元的回收
練習(xí)
第15章 編譯程序的面向?qū)ο髽?gòu)造
15.1 編譯程序面向?qū)ο髽?gòu)造的基本概念
15.1.1 編譯程序的需求
15.1.2 編譯程序的分解
15.1.3 類的構(gòu)造層次
15.1.4 類的特性定義
15.2 構(gòu)造編譯程序的面向?qū)ο箢悗?br /> 15.2.1 對(duì)傳統(tǒng)編譯程序構(gòu)造中軟件復(fù)用的分析
15.2.2 面向?qū)ο缶幾g類庫的地位
15.2.3 語言編譯論的面向?qū)ο笳撚蚍治?br /> 15.3面向?qū)ο缶幾g程序的符號(hào)表構(gòu)造
練習(xí)
附錄a pl、0編譯程序文本
a.1 pascal版本
a.2 c版本
參考文獻(xiàn)
編輯推薦
《編譯原理》是高等院校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的本科生教材,也可作為教師、研究生蔌軟件工程技術(shù)人員的參考書。
圖書封面
圖書標(biāo)簽Tags
無
評(píng)論、評(píng)分、閱讀與下載