《計算機科學叢書·編譯原理》是2009年5月1日機械工業出版社出版的圖書,作者是(美國) 阿霍 (Aho.A.V.)等 等 譯者:趙建華 鄭滔 戴新宇
基本介紹
- 書名:計算機科學叢書·編譯原理
- 作者:(美國) 阿霍 (Aho.A.V.)等
- 譯者:趙建華 鄭滔 戴新宇
- 頁數:412頁
- 出版社:機械工業出版社
- 裝幀:平裝
圖書信息,作者簡介,內容簡介,目錄,
圖書信息
第2版 (2009年5月1日)
外文書名: Compilers: Principles, Techniques and Tools, Second Edition
叢書名: 計算機科學叢書
正文語種: 簡體中文
開本: 16
ISBN: 9787111269298, 7111269292
條形碼: 9787111269298
尺寸: 25.6 x 18.2 x 1.8 cm
重量: 680 g
作者簡介
作者:(美國) 阿霍 (Aho.A.V.)等 等 譯者:趙建華 鄭滔 戴新宇
Alfred V.Aho,博士是哥倫比亞大學計算機科學系主管本科生教學的副主任,tEEEFe,10w,美國科學與藝術學院及國家工程學院院士,曾獲得IEEE的馮·諾伊曼獎。他是《編譯原理》(Compiler:Principles,Techniques,andTools)的第一作者。他目前的研究方向為量子計算、程式設計語言.編譯器和算法等。
Ravi Sethi,Avaya實驗室總裁,曾任貝爾實驗室高級副總裁和Lucent Technologies通信軟體的CTO。他曾在賓夕法尼亞州立大學,亞利桑那州立大學和普林斯頓大學任教,是ACM會士。
Monica S.Lam,史丹福大學計算機科學系教授,曾任Tensilica的首席科學家,也是Moka5的首任CEO。曾經主持SUIF項目,該項目產生了最流行的研究用編譯器之一。
趙建華:南京大學計算機科學與技術系教師,研究興趣與方向:形式化方法(主要包括模型檢驗(Model checking),數據精化技術),軟體工程,程式設計語言。
戴新宇:南京大學計算機科學與技術系博士、副教授,南京大學計算機科學與技術系教師。
內容簡介
《編譯原理(本科教學版第2版)》基於該書第2版進行改編,內容更加精練和實用,體系更加符合國內教學情況,適合作為高等院校計算機及相關專業本科生的編譯原理課程的教材,也是廣大研究人員和技術人員的極佳參考讀物。
《編譯原理(本科教學版第2版)》是編譯領域無可替代的經典著作,被廣大計算機專業人士譽為“龍書”。《編譯原理(本科教學版第2版)》上一版自1986年出版以來,被世界各地的著名高等院校和研究機構(包括美國哥倫比亞大學。史丹福大學、哈佛大學、普林斯頓大學。貝爾實驗室)作為本科生和研究生的編譯原理課程的教材。該書對我國高等計算機教育領域也產生了重大影響。
第2版對每一章都進行了全面的修訂,以反映自上一版出版20多年來軟體工程、程式設計語言和計算機體系結構方面的發展對編譯技術的影響。第2版全面介紹了編譯器的設計,並強調編譯技術在軟體設計和開發中的廣泛套用。每章中都包含大量的習題和豐富的參考文獻。
《編譯原理(本科教學版第2版)》基於該書第2版進行改編,保留其中的基本內容,壓縮或刪除了一些高級內容,更適合作為國內高校計算機及相關專業本科生編譯原理課程教材。
目錄
出版者的話
改編者序
前言
第1章 引論
1.1 語言處理器
1.2 一個編譯器的結構
1.2.1 詞法分析
1.2.2 語法分析
1.2.3 語義分析
1.2.4 中間代碼生成
1.2.5 代碼最佳化
1.2.6 代碼生成
1.2.7 符號表管理
1.2.8 將多個步驟組合成趟
1.2.9 編譯器構造工具
1.3 程式設計語言的發展歷程
1.3.1 走向高級程式設計語言
1.3.2 對編譯器的影響
1.3.3 1.3節的練習
1.4 構建一個編譯器的相關科學
1.4.1 編譯器設計和實現中的建模
1.4.2 代碼最佳化的科學
1.5 編譯技術的套用
1.5.1 高級程式設計語言的實現
1.5.2 針對計算機體系結構的最佳化
1.5.3 新計算機體系結構的設計
1.5.4 程式翻譯
1.5.5 軟體生產率工具
1.6 程式設計語言基礎
1.6.1 靜態和動態的區別
1.6.2 環境與狀態
1.6.3 靜態作用域和塊結構
1.6.4 顯式訪問控制
1.6.5 動態作用域
1.6.6 參數傳遞機制
1.6.7 別名
1.6.8 1.6節的練習
1.7 第1章總結
1.8 第1章參考文獻
第2章 一個簡單的語法制導翻譯器
2.1 引言
2.2 語法定義
2.2.1 文法定義
2.2.2 推導
2.2.3 語法分析樹
2.2.4 二義性
2.2.5 運算符的結合性
2.2.6 運算符的優先權
2.2.7 2.2節的練習
2.3 語法制導翻譯
2.3.1 後綴表示
2.3.2 綜合屬性
2.3.3 簡單語法制導定義
2.3.4 樹的遍歷
2.3.5 翻譯方案
2.3.6 2.3節的練習
2.4 語法分析
2.4.1 自頂向下分析方法
2.4.2 預測分析法
2.4.3 何時使用產生式
2.4.4 設計一個預測分析器
2.4.5 左遞歸
2.4.6 2.4節的練習
2.5 簡單表達式的翻譯器
2.5.1 抽象語法和具體語法
2.5.2 調整翻譯方案
2.5.3 非終結符號的過程
2.5.4 翻譯器的簡化
2.5.5 完整的程式
2.6 詞法分析
2.6.1 剔除空白和注釋
2.6.2 預讀
2.6.3 常量
2.6.4 識別關鍵字和標識符
2.6.5 詞法分析器
2.6.6 2.6節的練習
2.7 符號表
2.7.1 為每個作用域設定一個符號表
2.7.2 符號表的使用
2.8 生成中間代碼
2.8.1 兩種中間表示形式
2.8.2 語法樹的構造
2.8.3 靜態檢查
2.8.4 三地址碼
2.8.5 2.8節的練習
2.9 第2章總結
2.5.5 完整的程式
2.6 詞法分析
2.6.1 剔除空白和注釋
2.6.2 預讀
2.6.3 常量
2.6.4 識別關鍵字和標識符
2.6.5 詞法分析器
2.6.6 2.6節的練習
2.7 符號表
2.7.1 為每個作用域設定—個符號表
2.7.2 符號表的使用
2.8 生成中間代碼
2.8.1 兩種中間表示形式
2.8.2 語法樹的構造
2.8.3 靜態檢查
2.8.4 三地址碼
2.8.5 2.8節的練習
2.9 第2章總結
第3章 詞法分析
3.1 詞法分析器的作用
3.1.1 詞法分析及語法分析
3.1.2 詞法單元、模式和詞素
3.1.3 詞法單元的屬性
3.1.4 詞法錯誤
3.1.5 3.1節的練習
3.2 詞法單元的規約
3.2.1 串和語言
3.2.2 語言上的運算
3.2.3 正則表達式
3.2.4 正則定義
3.2.5 正則表達式的擴展
3.2.6 3.2 節的練習
3.3 詞法單元的識別
3.3.1 狀態轉換圖
3.3.2 保留字和標識符的識別
3.3.3 完成我們的例子
3.3.4 基於狀態轉換圖的詞法分析器的體系結構
3.3.5 3.3 節的練習
3.4 詞法分析器生成工具Lex
3.4.1 Lex的使用
3.4.2 Lex程式的結構
3.4.3 Lex中的衝突解決
3.4.4 向前看運算符
3.4.5 3.4節的練習
3.5 有窮自動機
3.5.1 不確定的有窮自動機
3.5.2 轉換表
3.5.3 自動機中輸入字元串的接受
3.5.4 確定的有窮自動機
3.5.5 3.5節的練習
3.6 從正則表達式到自動機
3.6.1 從NFA到DFA的轉換
3.6.2 最小化一個DFA的狀態數
3.6.3 從正則表達式構造NFA
3.6.4 字元串處理算法的效率
3.6.5 3.6節的練習
3.7 詞法分析器生成工具的設計
3.7.1 生成的詞法分析器的結構
3.7.2 詞法分析器使用的DFA
3.7.3 詞法分析器的狀態最小化
3.7.4 實現向前看運算符
3.7.5 3.7節的練習
3.8 第3章總結
3.9 第3章參考文獻
第4章 語法分析
4.1 引論
4.1.1 語法分析器的作用
4.1.2 代表性的文法
4.1.3 語法錯誤的處理
4.1.4 錯誤恢復策略
4.2 上下文無關文法
4.2.1 上下文無關文法的正式定義
4.2.2 符號表示的約定
4.2.3 推導
4.2.4 語法分析樹和推導
4.2.5 二義性
4.2.6 驗證文法生成的語言
4.2.7 上下文無關文法和正則表達式
4.2.8 4.2節的練習
4.3 設計文法
4.3.1 詞法分析和語法分析
4.3.2 消除二義性
4.3.3 左遞歸的消除
4.3.4 提取左公因子
4.3.5 非上下文無關語言的構造
4.3.6 4.3節的練習
4.4 自頂向下的語法分析
4.4.1 遞歸下降的語法分析
4.4.2 FIRST和FOLLOW
4.4.3 LL(1)文法
4.4.4 非遞歸的預測分析
4.4.5 預測分析中的錯誤恢復
4.4.6 4.4節的練習
4.5 自底向上的語法分析
4.5.1 歸約
4.5.2 句柄剪枝
4.5.3 移人一歸約語法分析技術
4.5.4 移入一歸約語法分析中的衝突
4.5.5 4.5節的練習
4.6 LR語法分析技術介紹:簡單LR技術
4.6.1 為什麼使用LR語法分析器
4.6.2 項和LR(0)自動機
4.6.3 LR語法分析算法
4.6.4 構造SLR語法分析表
4.6.5 可行前綴
4.6.6 4.6節的練習
4.7 更強大的LR語法分析器
4.7.1 規範LR(1)項
4.7.2 構造LR(1)項集
4.7.3 規範LR(1)語法分析表
4.7.4 構造LALR語法分析表
4.7.5 高效構造LALR語法分析表的方法
4.7.6 4.7節的練習
4.8 使用二義性文法
4.8.1 用優先權和結合性解決衝突
4.8.2 “懸空=else”的二義性
4.8.3 LR語法分析中的錯誤恢復
4.8.4 4.8節的練習
4.9 語法分析器生成工具
4.9.1 語法分析器生成工具Yacc
4.9.2 使用帶有二義性文法的Yacc規約
4.9.3 用Lex創建Yacc的詞法分析器
4.9.4 Yacc中的錯誤恢復
4.9.5 4.9節的練習
4.10 第4章總結
4.11 第4章參考文獻
第5章 語法制導的翻譯
第6章 中間代碼生成
第7章 運行時刻環境
第8章 代碼生成
第9章 機器無關最佳化
附錄 一個完整的編譯器前端