《編譯原理(第3版)/“十二五”普通高等教育本科國家級規(guī)劃教材》介紹編譯器構(gòu)造的一般原理和基本實現(xiàn)方法,內(nèi)容包括詞法分析、語法分析、語義分析、中間代碼生成、目標(biāo)代碼生成、獨立于機器的優(yōu)化和依賴于機器的優(yōu)化等。除了介紹命令式編程語言的編譯技術(shù)外,《編譯原理(第3版)/“十二五”普通高等教育本科國家級規(guī)劃教材》還介紹面向?qū)ο缶幊陶Z言和函數(shù)式編程語言的實現(xiàn)技術(shù)。另外,《編譯原理(第3版)/“十二五”普通高等教育本科國家級規(guī)劃教材》還強調(diào)一些相關(guān)的理論知識,如形式語言和自動機理論、語法制導(dǎo)的定義和屬性文法、類型論和類型系統(tǒng)等。 《編譯原理(第3版)/“十二五”普通高等教育本科國家級規(guī)劃教材》內(nèi)容豐富、講解深入,注意理論聯(lián)系實際,可作為高等學(xué)校計算機科學(xué)及相關(guān)專業(yè)的教材,也可供計算機軟件工程技術(shù)人員參考。
《編譯原理(第3版)/“十二五”普通高等教育本科國家規(guī)劃教材》特色:
內(nèi)容全面、強調(diào)主線。包括詞法分析、語法分析、語法制導(dǎo)的翻譯、靜態(tài)語義分析、運行時存儲空間的組織和管理、中間代碼生成、目標(biāo)代碼生成、代碼優(yōu)化、編譯系統(tǒng)與運行系統(tǒng)、面向?qū)ο笳Z言編譯技術(shù)和函數(shù)式語言編譯技術(shù)等,并以編譯的各個邏輯階段為主線?重視理論和形式方法。在圍繞主線的同時,將相關(guān)理論和形式化技術(shù)的介紹穿插其中,有助于學(xué)生較快地領(lǐng)會和掌握;內(nèi)容難易有別,難度較大的內(nèi)容作為可選部分放在每章的最后,以拓寬教材的適用面。習(xí)題聯(lián)系實際。本教材的很多例題和習(xí)題是從實際碰到的問題中抽象或抽取出來的:它們聯(lián)系編程、編譯、運行的實際,能激發(fā)學(xué)生學(xué)習(xí)本課程的興趣。
陳意云,1946年生,教授,博士生導(dǎo)師。1980年畢業(yè)于中國科學(xué)技術(shù)大學(xué),1982年12月在上海華東計算技術(shù)研究所獲碩士學(xué)位。1983年到中國科學(xué)技術(shù)大學(xué)計算機系工作,1989年到美國芝加哥大學(xué)訪問兩年。長期從事程序設(shè)計語言理論和實現(xiàn)技術(shù)、程序驗證、軟件安全等方面的研究工作,主持了7項與這些方向有關(guān)的國家自然科學(xué)基金項目。長期從事“編譯原理”和“程序設(shè)計語言理論”等課程的教學(xué)工作,2007年獲安徽省教學(xué)名師獎。本書兩位作者在編譯原理課程系列教材建設(shè)方面的工作獲2005年安徽省高等教育省級教學(xué)成果三等獎。
張昱,1972年生,副教授。1996年畢業(yè)于合肥工業(yè)大學(xué),獲碩士學(xué)位;2004年12月畢業(yè)于中國科學(xué)技術(shù)大學(xué),獲博士學(xué)位。主要從事“數(shù)據(jù)結(jié)構(gòu)”、“縭譯原理”、“程序設(shè)計語言理論”等課程的教學(xué)工作。主要研究方向是:程序設(shè)計語言理論和實現(xiàn)技術(shù),特別是面向新型系統(tǒng)結(jié)構(gòu)的并行語言設(shè)計和編譯、并行程序分析和驗證,即時編譯器輔助的垃圾收集技術(shù)。
第1章 引論
1.1 編譯器概述
1.1.1 詞法分析
1.1.2 語法分析
1.1.3 語義分析
1.1.4 中間代碼生成
1.1.5 代碼優(yōu)化
1.1.6 代碼生成
1.1.7 符號表管理
1.1.8 階段的分組
1.1.9 解釋器
1.2 編譯器技術(shù)的應(yīng)用
1.2.1 高級語言的實現(xiàn)
1.2.2 針對計算機體系結(jié)構(gòu)的優(yōu)化
1.2.3 新計算機體系結(jié)構(gòu)的設(shè)計
1.2.4 程序翻譯
1.2.5 提高軟件開發(fā)效率的工具
習(xí)題1
第2章 詞法分析
2.1 詞法記號及屬性
2.1.1 詞法記號、模式、詞法單元
2.1.2 詞法記號的屬性
2.1.3 詞法錯誤
2.2 詞法記號的描述與識別
2.2.1 串和語言
2.2.2 正規(guī)式
2.2.3 正規(guī)定義
2.2.4 狀態(tài)轉(zhuǎn)換圖
2.3 有限自動機
2.3.1 不確定的有限自動機
2.3.2 確定的有限自動機
2.3.3 NFA到DFA的變換
2.3.4 DFA的化簡
2.4 從正規(guī)式到有限自動機
2.5 詞法分析器的生成器
習(xí)題2
第3章 語法分析
3.1 上下文無關(guān)文法
3.1.1 上下文無關(guān)文法的定義
3.1.2 推導(dǎo)
3.1.3 分析樹
3.1.4 二義性
3.2 語言和文法
3.2.1 正規(guī)式和上下文無關(guān)文法的比較
3.2.2 分離詞法分析器的理由
3.2.3 驗證文法產(chǎn)生的語言
3.2.4 適當(dāng)?shù)谋磉_(dá)式文法
3.2.5 消除二義性
3.2.6 消除左遞歸
3.2.7 提左因子
3.2.8 非上下文無關(guān)的語言構(gòu)造
3.2.9 形式語言鳥瞰
3.3 自上而下分析
3.3.1 自上而下分析的一般方法
3.3.2 LL(1)文法
3.3.3 遞歸下降的預(yù)測分析
3.3.4 非遞歸的預(yù)測分析
3.3.5 構(gòu)造預(yù)測分析表
3.3.6 預(yù)測分析的錯誤恢復(fù)
3.4 自下而上分析
3.4.1 歸約
3.4.2 句柄
3.4.3 用棧實現(xiàn)移進(jìn)一歸約分析
3.4.4 移進(jìn)一歸約分析的沖突
3.5 LR分析器
3.5.1 LR分析算法
3.5.2 LR文法和LR分析方法的特點
3.5.3 構(gòu)造SLR分析表
3.5.4 構(gòu)造規(guī)范的LR分析表
3.5.5 構(gòu)造LALR分析表
3.5.6 非二義且非LR的上下文無關(guān)文法
3.6 二義文法的應(yīng)用
3.6.1 使用算符的優(yōu)先級和結(jié)合性來解決沖突
3.6.2 使用其他約定來解決沖突
3.6.3 LR分析的錯誤恢復(fù)
3.7 語法分析器的生成器
3.7.1 分析器的生成器Yacc
3.7.2 用Yacc處理二義文法
3.7.3 Yace的錯誤恢復(fù)
習(xí)題3
第4章 語法制導(dǎo)的翻譯
4.1 語法制導(dǎo)的定義
4.1.1 語法制導(dǎo)定義的形式
4.1.2 綜合屬性
4.1.3 繼承屬性
4.1.4 屬性依賴圖
4.1.5 屬性計算次序
4.2 S屬性定義的自下而上計算
4.2.1 語法樹
4.2.2 構(gòu)造語法樹的語法制導(dǎo)定義
4.2.3 S屬性的自下而上計算
4.3 L屬性定義的自上而下計算
4.3.1 L屬性定義
4.3.2 翻譯方案
4.3.3 預(yù)測翻譯器的設(shè)計
4.3.4 用綜合屬性代替繼承屬性
4.4 L屬性的自下而上計算
4.4.1 刪除翻譯方案中嵌入的動作
4.4.2 分析棧上的繼承屬性
4.4.3 模擬繼承屬性的計算
習(xí)題4
第5章 類型檢查
5.1 類型在編程語言中的作用
5.1.1 執(zhí)行錯誤和安全語言
5.1.2 類型化語言和類型系統(tǒng)
5.1.3 類型化語言的優(yōu)點
5.2 類型系統(tǒng)的描述語言
5.2.1 定型斷言
5.2.2 定型規(guī)則
5.2.3 類型檢查和類型推斷
5.3 一個簡單類型檢查器的規(guī)范
5.3.1 一個簡單的語言
5.3.2 類型系統(tǒng)
5.3.3 類型檢查
5.3.4 類型轉(zhuǎn)換
5.4 多態(tài)函數(shù)
5.4.1 為什么要使用多態(tài)函數(shù)
5.4.2 類型變量
5.4.3 一個含多態(tài)函數(shù)的語言
5.4.4 代換、實例與合
5.4.5 多態(tài)函數(shù)的類型檢查
5.5 類型表達(dá)式的等價
5.5.1 類型表達(dá)式的結(jié)構(gòu)等價
5.5.2 類型表達(dá)式的名字等價
……
第6章 運行時存儲空間的組織和管理
第7章 中間代碼生成
第8章 代碼生成
第9章 獨立于機器的優(yōu)化
第10章 依賴于機器的優(yōu)化
第11章 編譯系統(tǒng)和運行時系統(tǒng)
第12章 面向?qū)ο笳Z言的編譯
第13章 函數(shù)式語言的編譯