本書(shū)介紹編譯理論的基礎(chǔ)及實(shí)現(xiàn)方法,強(qiáng)調(diào)語(yǔ)言的形式化定義、編譯技術(shù)和各種概念及實(shí)現(xiàn)過(guò)程的具體方法。全書(shū)共9章,內(nèi)容包括編譯引論、形式語(yǔ)言和有限自動(dòng)機(jī)理論、詞法分析、語(yǔ)法分析、語(yǔ)法制導(dǎo)翻譯與中間代碼生成、運(yùn)行時(shí)的存儲(chǔ)組織與分配、符號(hào)表、代碼優(yōu)化、目標(biāo)代碼生成。介紹過(guò)程以算法為核心,力求簡(jiǎn)單明了地反映編譯的基礎(chǔ)知識(shí),為計(jì)算機(jī)軟件工作者開(kāi)發(fā)大型軟件打下良好的基礎(chǔ)。
本書(shū)可作為高等工科院校計(jì)算機(jī)專(zhuān)業(yè)的本科或?qū)?平滩模部勺鳛榇T士研究生及計(jì)算機(jī)軟件技術(shù)人員的參考書(shū)。
本書(shū)可作為高等工科院校計(jì)算機(jī)專(zhuān)業(yè)的本科或?qū)?平滩模部勺鳛榇T士研究生學(xué)習(xí)及計(jì)算機(jī)軟件技術(shù)人員的參考書(shū)。
全書(shū)共分為九章,第1章緒論,介紹了編譯程序有關(guān)概念,編譯過(guò)程、編譯程序的組織和結(jié)構(gòu)等要點(diǎn)。第2章作為后續(xù)各章的理論基礎(chǔ),主要介紹了描述語(yǔ)言的兩大工具文法和有限自動(dòng)機(jī)。第3章以正規(guī)式作為單詞識(shí)別工具,從手工和自動(dòng)兩個(gè)角度討論了詞法分析器的設(shè)計(jì)及實(shí)現(xiàn)。第4章對(duì)上下文無(wú)關(guān)文法的兩類(lèi)語(yǔ)法分析方法,即自上而下和自下而上的幾種經(jīng)典方法展開(kāi)了討論。如遞歸子程序法、LL(1)分析法、算法優(yōu)先分析和LR分析進(jìn)行了詳細(xì)的講解。第5章介紹了語(yǔ)義分析,涉及到語(yǔ)法制導(dǎo)翻譯與中間代碼生成。重點(diǎn)講解了屬性文法、翻譯模式、中間代碼表現(xiàn)形式和流行的高級(jí)程序設(shè)計(jì)語(yǔ)言中典型語(yǔ)句的翻譯。第6章介紹了編譯程序運(yùn)行時(shí)環(huán)境的有關(guān)概念和存儲(chǔ)組織與分配技術(shù)。第7章介紹了整個(gè)編譯過(guò)程都要涉及到的數(shù)據(jù)結(jié)構(gòu)-符號(hào)表。第8章介紹了代碼優(yōu)化,展開(kāi)討論了優(yōu)化的基本概念,優(yōu)化涉及到的數(shù)據(jù)流分析技術(shù)和控制流分析技術(shù)。第9章簡(jiǎn)單介紹了代碼生成的有關(guān)知識(shí)點(diǎn)。并在附錄中給出了基于前端的編譯程序算法的程序文本。
第1章引論
1.1什么是編譯程序
1.1.1編譯程序與高級(jí)程序設(shè)計(jì)語(yǔ)言的關(guān)系
1.1.2高級(jí)語(yǔ)言源程序的執(zhí)行過(guò)程
1.1.3與編譯器有關(guān)的程序
1.2編譯過(guò)程與編譯程序的組織結(jié)構(gòu)
1.2.1編譯過(guò)程概述
1.2.2編譯程序的組織結(jié)構(gòu)
1.2.3編譯階段的組合
1.3編譯程序的構(gòu)造與實(shí)現(xiàn)
1.3.1如何構(gòu)造一個(gè)編譯程序
1.3.2編譯程序的開(kāi)發(fā)
1.3.3編譯程序的自動(dòng)構(gòu)造工具
習(xí)題
第2章形式語(yǔ)言和有限自動(dòng)機(jī)理論
2.1文法和語(yǔ)言
2.1.1字母表和符號(hào)串
2.1.2文法和語(yǔ)言的形式化定義
2.1.3語(yǔ)法分析樹(shù)與文法二義性
2.1.4文法和語(yǔ)言的分類(lèi)
2.2有限自動(dòng)機(jī)
2.2.1確定的有限自動(dòng)機(jī)(DFA)
2.2.2非確定的有限自動(dòng)機(jī)(NFA)
2.2.3NFA轉(zhuǎn)換為等價(jià)的DFA
2.2.4確定的有限自動(dòng)機(jī)的化簡(jiǎn)
習(xí)題
第3章詞法分析
3.1詞法分析基本思想
3.1.1詞法分析需求分析
3.1.2詞法分析任務(wù)
3.1.3詞法分析方式
3.2單詞的描述工具
3.2.1正規(guī)文法和正規(guī)式
3.2.2正規(guī)式與有限自動(dòng)機(jī)的等價(jià)性
3.2.3正規(guī)文法和有限自動(dòng)機(jī)的等價(jià)性
3.3單詞的識(shí)別
3.3.1單詞分類(lèi)
3.3.2單詞的內(nèi)部表示
3.3.3單詞的形式化描述
3.4詞法分析程序的設(shè)計(jì)及實(shí)現(xiàn)
3.4.1詞法分析程序的輸入
3.4.2掃描緩沖區(qū)及其預(yù)處理
3.4.3由詞法規(guī)則畫(huà)出狀態(tài)轉(zhuǎn)換圖
3.4.4單詞對(duì)應(yīng)狀態(tài)轉(zhuǎn)換圖的實(shí)現(xiàn)
3.5詞法分析程序的自動(dòng)實(shí)現(xiàn)
3.5.1Lex介紹
3.5.2Lex語(yǔ)法基礎(chǔ)
3.5.3詞法分析器自動(dòng)構(gòu)造
習(xí)題
第4章語(yǔ)法分析
4.1自頂向下的語(yǔ)法分析方法
4.1.1包含回溯的自頂向下語(yǔ)法分析
4.1.2回溯產(chǎn)生的原因與解決方法
4.1.3遞歸下降分析法
4.1.4 LL(1)分析法與LL(1)分析器
4.2自底向上的語(yǔ)法分析方法
4.2.1“移進(jìn)歸約”分析
4.2.2規(guī)范歸約與句柄
4.2.3算符優(yōu)先分析法
4.2.4LR分析法
4.2.5語(yǔ)法分析程序自動(dòng)生成器YACC
習(xí)題
第5章語(yǔ)法制導(dǎo)翻譯與中間代碼生成
5.1兩種翻譯方法簡(jiǎn)介
5.2屬性文法
5.2.1綜合屬性
5.2.2繼承屬性
5.3依賴圖
5.4語(yǔ)法制導(dǎo)翻譯
5.4.1S屬性文法與自底向上翻譯
5.4.2L屬性文法與自頂向下翻譯
5.4.3翻譯模式
5.5中間代碼的形式
5.5.1逆波蘭表示法
5.5.2三元式表示法
5.5.3四元式表示法
5.5.4圖表示法
5.6中間代碼生成
5.6.1說(shuō)明語(yǔ)句的翻譯
5.6.2賦值語(yǔ)句的翻譯
5.6.3賦值語(yǔ)句中的布爾表達(dá)式的翻譯
5.6.4控制流語(yǔ)句中的布爾表達(dá)式的翻譯
5.6.5控制流語(yǔ)句的翻譯
5.6.6數(shù)組元素的翻譯
5.6.7函數(shù)調(diào)用的翻譯
習(xí)題
第6章運(yùn)行時(shí)的存儲(chǔ)組織與分配
6.1概述
6.1.1關(guān)于存儲(chǔ)組織
6.1.2函數(shù)(或過(guò)程)的活動(dòng)記錄
6.1.3存儲(chǔ)分配策略
6.2靜態(tài)存儲(chǔ)分配
6.3基于棧的運(yùn)行時(shí)動(dòng)態(tài)存儲(chǔ)分配
6.3.1簡(jiǎn)單棧式存儲(chǔ)分配的實(shí)現(xiàn)
6.3.2嵌套過(guò)程語(yǔ)言的棧式存儲(chǔ)分配的實(shí)現(xiàn)
6.4基于堆的動(dòng)態(tài)存儲(chǔ)分配的實(shí)現(xiàn)
6.5參數(shù)傳遞
6.5.1傳值
6.5.2傳地址
習(xí)題
第7章符號(hào)表
7.1符號(hào)表的作用
7.2符號(hào)表的內(nèi)容
7.3符號(hào)表的組織
7.3.1符號(hào)表的數(shù)據(jù)結(jié)構(gòu)
7.3.2關(guān)鍵字域的組織
7.3.3其他域的組織
7.4符號(hào)表舉例
7.4.1無(wú)序表
7.4.2有序表
7.4.3散列符號(hào)表
7.4.4棧式符號(hào)表
習(xí)題
第8章代碼優(yōu)化
8.1概述
8.2局部?jī)?yōu)化
8.2.1基本塊的劃分
8.2.2基本塊的優(yōu)化
8.2.3基本塊的有向圖表示
8.3循環(huán)優(yōu)化
8.3.1控制流圖
8.3.2基本屬性
8.3.3支配結(jié)點(diǎn)和后必經(jīng)結(jié)點(diǎn)
8.3.4循環(huán)的查找
8.3.5循環(huán)優(yōu)化
8.4全局優(yōu)化
8.4.1相關(guān)概念及數(shù)據(jù)流方程
8.4.2可到達(dá)定義
8.4.3結(jié)構(gòu)化程序的數(shù)據(jù)流分析
8.4.4數(shù)據(jù)流方程的迭代解
8.4.5活躍變量分析
習(xí)題
第9章目標(biāo)代碼生成
9.1目標(biāo)代碼的形式
9.2目標(biāo)代碼生成的主要問(wèn)題
9.2.1目標(biāo)程序
9.2.2指令選擇
9.2.3寄存器分配
9.2.4計(jì)算次序選擇
9.3目標(biāo)機(jī)器
9.3.1目標(biāo)機(jī)器的指令系統(tǒng)
9.3.2指令開(kāi)銷(xiāo)
9.4一個(gè)簡(jiǎn)單的代碼生成器
9.4.1寄存器描述和地址描述
9.4.2代碼生成算法
9.4.3寄存器選擇函數(shù)
9.4.4為變址和指針語(yǔ)句產(chǎn)生代碼
9.4.5條件語(yǔ)句
9.5寄存器分配的原則
習(xí)題
附錄A基于前端的編譯程序算法
A.1詞法分析器的實(shí)現(xiàn)
A.2遞歸下降語(yǔ)法分析器的實(shí)現(xiàn)
A.3算法優(yōu)先語(yǔ)法分析器的實(shí)現(xiàn)
A.4LR語(yǔ)法分析器的實(shí)現(xiàn)
參考文獻(xiàn)