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