編譯器構造 查爾斯.N.費希爾 羅恩.K.塞隆 理查德.J.勒布朗 9787111768203 【台灣高等教育出版社】

圖書均為代購,正常情形下,訂後約兩周可抵台。
物品所在地:中國大陸
原出版社:機械工業
大陸簡體正版圖書,訂購後正常情形下約兩周可抵台。
NT$693
商品編號: 9787111768203
供貨狀況: 尚有庫存

此商品參與的優惠活動

加入最愛
商品介紹
*書籍均為代購,我們向大陸付款發訂後即無法取消,為避免造成不必要的損失,
下訂前請慎重考慮!下訂前請慎重考慮!謝謝。

*完成訂單後正常情形下約兩周可抵台
*本賣場提供之資訊僅供參考,以到貨標的為正確資訊。
印行年月:202504*若逾兩年請先於客服中心或Line洽詢存貨情況,謝謝。
台灣(台北市)在地出版社,每筆交易均開具統一發票,祝您中獎最高1000萬元。
書名:編譯器構造
ISBN:9787111768203
出版社:機械工業
著編譯者:查爾斯.N.費希爾 羅恩.K.塞隆 理查德.J.勒布朗
頁數:385
所在地:中國大陸 *此為代購商品
書號:1730109
可大量預訂,請先連絡。

編輯推薦
適讀人群 :高校計算機專業本科生
本書是一本經典的面向本科生理解編譯原理和編譯器構造的課程教材。本書以簡潔、清晰的風格全面介紹了編譯器構造的基本知識與關鍵技術。本書的三位原作者大學擁有30餘年的編譯器課程教學經驗,根據他們豐富的教學經驗和研究經驗編寫了這本教材。本書結合程序語言和編譯技術的發展,以Java語言作為編譯器的分析對象,並且採用面向對象的設計模式來組織編譯器中的數據結構,在很大程度上降低了編譯器構造的複雜程度,使初學編譯器的讀者能更加容易地上手實現自己的編譯器。

內容簡介
本書面向初學者,從編譯器構造的角度進行分析,旨在幫助讀者深入理解編譯器的設計原理和方法。全書共14章,主要內容包括:詞法分析和語法分析、語法制導翻譯、符號表和聲明處理、語義分析、虛擬機代碼、運行時支持、目標代碼生成等。全書內容安排緊湊合理,對編譯器構造的基本知識與關鍵技術進行了深入淺出的講解,並提供了詳盡清晰的算法,倡導在實踐中學習編譯器構造的相關技術。本書不僅可作為計算機專業本科生或研究生的教材,也適合作為相關領域技術人員的參考書。

作者簡介
查爾斯 N 費希爾 (Charles N Fischer) 美國威斯康星大學計算機科學系教授,長期為本科生和研究生講授編譯原理相關課程。研究興趣為編譯器設計與實現。
羅恩 K 塞隆 (Ron K Cytron) 美國聖路易斯華盛頓大學計算機科學與工程系教授,研究興趣為實時系統與程序設計語言。
理查德 J 勒布朗 (Richard J LeBlanc,Jr ) 美國佐治亞理工學院計算機系教授,主講編譯器與解釋器方面的課程。曾任ACM教育委員會委員,是SE2004教育規範委員會副主席。

目錄

目錄

Crafting a Compiler
前言
致謝
第1章 引言 1
1 1 編譯技術歷史 1
1 2 編譯器的功能 2
1 2 1 編譯器生成的機器代碼 3
1 2 2 目標代碼格式 4
1 3 解釋器 5
1 4 語法和語義 6
1 4 1 靜態語義 7
1 4 2 運行時語義 7
1 5 編譯器的組織 9
1 5 1 詞法分析器 10
1 5 2 語法分析器 10
1 5 3 類型檢查器 10
1 5 4 翻譯器 10
1 5 5 符號表 11
1 5 6 優化器 11
1 5 7 代碼生成器 11
1 5 8 編譯器編寫工具 12
1 6 程序設計語言和編譯器設計 12
1 7 計算機體系結構和編譯器設計 13
1 8 編譯器設計考慮 13
1 8 1 調試編譯器 14
1 8 2 優化編譯器 14
1 8 3 可重定位編譯器 14
1 9 集成開發環境 15
習題 15
第2章 一個簡單的編譯器 18
2 1 ac語言的一個非形式化定義 18
2 2 ac的形式化定義 19
2 2 1 語法規範 19
2 2 2 單詞規範 20
2 3 一個簡單編譯器的各階段 21
2 4 詞法分析 22
2 5 語法分析 23
2 5 1 預測語法分析例程 24
2 5 2 實現產生式 25
2 6 抽象語法樹 25
2 7 語義分析 27
2 7 1 符號表 27
2 7 2 類型檢查 27
2 8 代碼生成 29
習題 31
第3章 詞法分析——理論與實踐 32
3 1 詞法分析器概述 32
3 2 正則表達式 34
3 3 示例 35
3 4 有限自動機與詞法分析器 36
3 5 詞法分析器生成器 39
3 5 1 在Lex中定義單詞 40
3 5 2 字符集 40
3 5 3 使用正則表達式定義單詞 41
3 5 4 使用Lex處理字符 43
3 6 其他詞法分析器生成器 44
3 7 構建詞法分析器的實際考慮 45
3 7 1 處理標識符和字面值 45
3 7 2 使用編譯器指示以及列出
源碼行 48
3 7 3 結束詞法分析器 49
3 7 4 多超前字符 49
3 7 5 性能考慮 51
3 7 6 詞法錯誤恢復 52
3 8 正則表達式和有限自動機 53
3 8 1 將正則表達式轉換為NFA 54
3 8 2 創建DFA 54
3 8 3 優化有限自動機 56
3 8 4 將有限自動機轉換為正則
表達式 58
3 9 總結 60
習題 61
第4章 文法和語法分析 64
4 1 上下文無關文法 64
4 1 1 最左推導 66
4 1 2 最右推導 66
4 1 3 語法分析樹 66
4 1 4 其他類型的文法 67
4 2 CFG的性質 68
4 2 1 歸約文法 68
4 2 2 二義性 68
4 2 3 錯誤的語言定義 69
4 3 轉換擴展文法 69
4 4 語法分析器和識別器 70
4 5 文法分析算法 72
4 5 1 文法表示 72
4 5 2 推導空字符串 73
4 5 3 First集 74
4 5 4 Follow集 77
習題 79
第5章 自頂向下語法分析 82
5 1 概述 82
5 2 LL(k)文法 83
5 3 遞歸下降LL(1)語法分析器 85
5 4 表驅動LL(1)語法分析器 86
5 5 獲得LL(1)文法 88
5 5 1 公共前綴 88
5 5 2 左遞歸 89
5 6 一個非LL(1)語言 90
5 7 LL(1)分析器的性質 92
5 8 分析表的表示 92
5 8 1 緊湊存儲 93
5 8 2 壓縮 94
5 9 語法錯誤恢復和修復 96
5 9 1 錯誤恢復 96
5 9 2 錯誤修復 96
5 9 3 LL(1)分析器中的錯誤檢測 97
5 9 4 LL(1)分析器中的錯誤恢復 97
習題 98
第6章 自底向上語法分析 102
6 1 概述 102
6 2 移進–歸約語法分析器 103
6 2 1 LR語法分析器和最右推導 103
6 2 2 LR分析如針織 104
6 2 3 LR分析引擎 105
6 2 4 LR分析表 105
6 2 5 LR(k)分析 107
6 3 構造LR(0)分析表 109
6 4 衝突診斷 113
6 4 1 二義性文法 114
6 4 2 非LR(k)文法 116
6 5 衝突消解和表構造 117
6 5 1 SLR(k)分析表構造 117
6 5 2 LALR(k)分析表構造 120
6 5 3 LALR傳播圖 122
6 5 4 LR(k)表構造 125
習題 129
第7章 語法制導翻譯 135
7 1 概述 135
7 1 1 語義動作和語義值 135
7 1 2 綜合屬性和繼承屬性 136
7 2 自底向上語法制導翻譯 137
7 2 1 示例 137
7 2 2 產生式克隆 139
7 2 3 強制執行語義動作 140
7 2 4 激進的文法重構 141
7 3 自頂向下語法制導翻譯 142
7 4 抽象語法樹 143
7 4 1 具體語法樹與抽象語法樹 144
7 4 2 一種高效的AST數據結構 144
7 4 3 創建AST的基礎架構 145
7 5 AST設計和構造 146
7 5 1 設計 147
7 5 2 構造 148
7 6 左值和右值的AST結構 150
7 7 AST設計模式 152<

前言/序言
前 言
Crafting a Compiler
自1988年費希爾和勒布朗合著的Crafting a Compiler出版以來,情況已經發生了很大變化。雖然教師可能還記得那本書保存在5 25英寸軟盤上的附帶軟件,但現在的大多數學生既未曾擁有過也沒有見過這樣的軟盤。學生在課堂上和課外所體驗的編程語言發生了許多變化。1991年,這本書以兩種形式出現,其中的算法用C語言或Ada語言呈現。雖然現在C語言仍然是一種流行的語言,但Ada語言已經變得鮮為人知,沒有達到預期的流行程度。C++語言從C語言發展而來,加入了面向對象的特性。Java是作為一種更簡單的面向對象語言開發的,因其安全性和能在Web瀏覽器中運行而受到歡迎。美國大學理事會指定的大學先修課程已從Pascal改為C++,而後又改為Java。
雖然發生了很多變化,但學生還在繼續學習、教師也還在繼續教授編譯器構造這一課程。編譯器和編程語言翻譯領域的研究繼續快步前進,這是因為編譯器以適應日益多樣化的體系結構和編程語言為己任。軟件開發環境也依賴於編譯器與各種軟件工具鏈組件(如語法感知編輯器、性能剖析工具和調試器)的成功互動。所有的現代軟件都依賴於編譯器來嚴格檢查錯誤並忠實地翻譯程序。
隨著時間的推移,一些教科書經歷了相對較小的變化,可能增加了一些新的習題或示例。而本書則反映了1988年到1991年期間素材的大量實質性的修訂。雖然本書的重點仍然是講授編譯器結構的基本原理,但算法和方法層面已融入最新實踐:
已經從實際應用中消失的主題(例如,屬性文法)的相關內容已被儘量壓縮或完全刪除。
算法以偽代碼(pseudocode)的形式呈現,這對於學習過本學科基本算法的學生來說應該很熟悉。偽代碼使對算法的簡明表述及對算法的目的和構造的合理討論成為可能。
用特定語言實現這些算法的細節 已歸入Crafting a Compiler Supplement,該補充材料可在線獲取,網址為http: www pearsonhighered com/fischer/。
調整了語法分析理論和實踐的組織方式,以適用於各種教學方法。
有些學生可能會在較高層次上學習這部分內容,以獲得自頂向下和自底向上語法分析的寬廣視野。其他學生可以更詳細地研究特定的方法。
編譯器的前端和後端由抽象語法樹(Abstract Syntax Tree,AST)銜接,AST是作為語法分析的主要產出而創建的。大多數編譯器都會構建AST,但是鮮有教科書闡明AST的構造和用法。
引入了訪問者模式(visitor pattern),以便在語義分析和代碼生成期間遍歷AST。
提供了實驗室練習供教師使用。
教師可以將其中的一部分作為學生的練習,而其他部分則可從我們的課程支持網站
獲得。
有些教科書經過修訂,增加了更多的研究生水平的素材。雖然這些內容在高級課程中可能有用,但本書的主要讀者仍然是學習編譯器構造的本科生。研究生課程可以使用第13章 和第14章 的內容,並將前面的部分作為參考材料。
偽代碼和縮寫
本書的一個重要變化是,算法不再以任何特定的編程語言(如C或Ada)呈現,而是以偽代碼的形式呈現,所使用的風格對於那些研究過最基本算法的人來說應該是熟悉的[CLRS01]。偽代碼通過省略不必要的細節 來簡化算法的描述。然而,偽代碼暗示了實際編程語言中使用的結構,因此實現應該是直接的。本書廣泛使用縮寫(包括首字母縮寫)來簡化描述,並幫助讀者掌握編譯器構造中使用的術語。例如,在前言中已經使用了AST作為抽象語法樹的縮寫。
本書的使用方法
關於編譯器構造的入門課程可以從第1~3章 開始。關於語法分析技術,可以選擇自頂向下語法分析(第5章 )或自底向上語法分析(第6章 ),但有些教師會選擇同時介紹這兩種方法。可以根據需要講授第4章 的內容,以支持將要學習的語法分析技術。第7章 闡述了AST並給出了遍歷AST的訪問者模式。第8章 和第9章 介紹語義分析的各個方面,教師可自行決定講授哪些內容。如果是一學期的課程,則可就此結束。如果是一學年的課時,則可繼續學習代碼生成,如下所述。
第10章 介紹Java虛擬機(Java Virtual Machine,JVM),如果學生要在他們的項目中生成JVM代碼,就應講授這些內容。第11章 介紹虛擬機代碼生成。希望學生生成機器代碼的教師可以跳過第10章 和第11章,而只講第12章 和第13章 。入門課程可以包括第14章 開始部分有關自動程序優化的內容。
第4~6章 中涉及語法分析技術的更多細節 。第8章 和第9章 對類型檢查和語義分析進行了廣泛和深入的研究。第10章 和第14章 介紹高級概念,如靜態單賦值(Static Single Assignment,SSA)形式等。第14章 涉及程序分析和轉換的高級主題,包括數據流框架。第13章 和第14章 可以作為研究生編譯器課程的基礎,輔以前面的章

規格說明
大陸簡體正版圖書,訂購後正常情形下約兩周可抵台。
運送方式
已加入購物車
已更新購物車
網路異常,請重新整理