編譯原理與技術 張莉 9787040646221 【台灣高等教育出版社】

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

此商品參與的優惠活動

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

*完成訂單後正常情形下約兩周可抵台
*本賣場提供之資訊僅供參考,以到貨標的為正確資訊。
印行年月:202505*若逾兩年請先於客服中心或Line洽詢存貨情況,謝謝。
台灣(台北市)在地出版社,每筆交易均開具統一發票,祝您中獎最高1000萬元。
書名:編譯原理與技術
ISBN:9787040646221
出版社:高等教育
著編譯者:張莉
頁數:523
所在地:中國大陸 *此為代購商品
書號:1736979
可大量預訂,請先連絡。

內容簡介
本書是計算機領域本科教育教學改革試點工作計劃(”101計劃”)系列教材之一。本書側重編譯基礎,融入前沿技術,旨在著力培養未來能夠突破基礎研究和應用創新的計算機領域領軍人才。
全書共分四部分。第一部分為基礎篇(1~8章 ),包含語言與文法基礎以及從詞法分析到代碼生成的編譯全過程,力求為學生描繪從源代碼到中間代碼的一個完整翻譯過程。第二部分(9~11章 )對程序分析和編譯優化做專門講解,突出面向特定硬件平臺的代碼生成和優化,培養學生的社會責任感和使命感,為國產硬件構建生態環境提供人才基礎。第三部分(12~14章 )介紹編譯程序生成工具,讓學生掌握程序自動生成的基礎方法,培養學生的抽象思維和形式化描述與推理能力。第四部分(15~16章 )對當前最流行的編譯器實例進行深入分析,並介紹一些高級編譯技術。
本書可作為本科計算機類專業編譯原理或者編譯技術課程教材,也可供相關技術人員參考使用。

目錄

第一部分 基礎篇
第1章 編譯概述 3
1 1 什麼是程序設計語言 5
1 1 1 程序設計語言的定義方法 5
1 1 2 程序設計語言發展歷程與新一代編程語言 6
1 1 3 程序設計語言的處理系統 9
1 1 4 編譯程序和解釋程序 10
1 2 編譯程序相關處理系統 12
1 2 1 翻譯程序 12
1 2 2 預處理器 12
1 2 3 宏處理器 13
1 2 4 編譯程序 13
1 2 5 程序設計環境 16
1 3 開源編譯器 17
1 3 1 GCC 17
1 3 2 LLVM/clang 20
1 3 3 其他開源編譯器 23
1 4 編譯技術應用 25
1 4 1 程序理解工具 25
1 4 2 軟件測試工具 25
1 4 3 自然語言處理 26
1 4 4 數據庫查詢優化 27
練習1 28
第2章 語言和文法基礎 29
2 1 文法的表示形式 31
2 1 1 語法樹 31
2 1 2 規則 32
2 1 3 由規則推導句子 32
2 2 符號和符號串 34
2 2 1 字母表和符號串 35
2 2 2 符號串及其集合運算 35
2 3 文法和語言 37
2 3 1 文法的形式定義 37
2 3 2 語言的形式定義 39
2 3 3 文法和語言分類 40
2 3 4 推導的定義及語法樹的生成 41
2 3 5 遞歸規則和遞歸文法 43
2 3 6 短語、直接短語和句柄 45
2 3 7 文法的二義性 46
2 3 8 有關文法的實用限制 49
2 4 擴充的BNF表示和語法圖 51
2 4 1 擴充的BNF表示 51
2 4 2 語法圖 52
練習 53
第3章 詞法分析程序的設計 55
3 1 詞法分析程序的功能及實現方案 57
3 2 單詞的種類及詞法分析程序的輸出形式 58
3 2 1 單詞的種類 58
3 2 2 詞法分析程序的輸出形式 58
3 3 正則文法及其狀態圖 60
3 3 1 狀態圖 60
3 3 2 狀態圖的使用 61
3 4 詞法分析程序的設計與實現 62
3 4 1 文法及其狀態圖 62
3 4 2 詞法分析程序的構造 64
3 4 3 詞法分析程序的實現 66
練習 69
第4章 語法分析:遞歸下降分析法 71
4 1 語法分析概述 73
4 1 1 語法分析程序的功能 73
4 1 2 語法分析的分類 73
4 2 自頂向下分析方法及問題分析 76
4 2 1 帶回溯的自頂向下分析方法 76
4 2 2 存在的問題及解決辦法 77
4 3 遞歸下降分析法(遞歸子程序法) 84
4 4 基於遞歸下降分析法的語法分析程序構造 85
4 5 錯誤處理 90
4 5 1 概述 90
4 5 2 錯誤的分類 91
4 5 3 錯誤的診察與報告 91
4 5 4 錯誤處理技術 93
練習 97
第5章 符號表 99
5 1 符號表的作用 101
5 2 符號的常見屬性 103
5 3 符號表的結構與實現 107
5 4 塊結構語言基於靜態嵌套作用域的符號表組織與管理 110
5 4 1 單符號表的組織與管理 111
5 4 2 多符號表的組織與管理 114
5 5 影響符號訪問規則與查找方式的其他典型語言特性 116
練習 121
第6章 運行時的存儲組織及管理 125
6 1 運行時存儲組織的作用與任務 127
6 2 程序運行時存儲空間的佈局 128
6 3 存儲分配策略 130
6 3 1 靜態存儲分配 131
6 3 2 棧式存儲分配 131
6 3 3 堆式存儲分配 132
6 4 活動記錄 134
6 4 1 活動記錄的創建與撤銷 134
6 4 2 活動記錄中的局部數據示例 137
6 4 3 嵌套過程/函數定義中非局部量的訪問 140
6 4 4 嵌套語句塊的非局部量訪問 145
6 4 5 動態作用域規則下的非局部量訪問 146
6 5 函數/過程調用與參數傳遞 146
6 5 1 典型的函數/過程調用序列 146
6 5 2 參數傳遞方式 151
6 6 垃圾回收 157
6 6 1 概述 157
6 6 2 引用計數 158
6 6 3 標記-清除 160
6 6 4 複製回收 163
6 6 5 分代回收 166
6 6 6 增量回收 168
6 7 面向對象語言的運行時組織 171
6 7 1 “類”和”對象”的角色 171
6 7 2 面向對象程序的運行時特徵 172
6 7 3 對象的存儲組織 173
6 7 4 例程/方法的動態綁定 175
6 7 5 其他話題 178
6 8 函數式語言的運行時組織 179
6 8 1 “等式推理”與”高階函數” 179
6 8 2 函數式程序的運行時存儲特徵 181
6 8 3 閉包的存儲組織 182
6 8 4 尾調用/尾遞歸的活動記錄 185
6 8 5 函數記憶簿與惰性求值 186
練習 190
第7章 語法制導翻譯技術 195
7 1 翻譯文法 197
7 2 語法制導翻譯 199
7 3 屬性翻譯文法 200
7 3 1 綜合屬性 200
7 3 2 繼承屬性 202
7 3 3 屬性翻譯文法 204
7 3 4 屬性翻譯文法舉例——算術表達式的翻譯 205
7 4 自頂向下語法制導翻譯 208
7 4 1 翻譯文法的自頂向下翻譯 208
7 4 2 屬性翻譯文法的自頂向下翻譯 212
練習 219
第8章 語義分析和中間代碼生成 223
8 1 語義分析概述 225
8 2 源程序的中間形式 227
8 2 1 波蘭表示 227
8 2 2 N-元表示和三地址代碼 228
8 2 3 抽象語法樹 230
8 2 4 抽象機代碼 232
8 2 5 棧式抽象機及其彙編指令 235
8 3 聲明語句的處理 237
8 3 1 常量類型 238
8 3 2 簡單變量 239
8 3 3 數組變量 240
8 3 4 指針變量 243
8 3 5 記錄變量 244
8 3 6 過程聲明 245
8 4 表達式 245
8 5 賦值語句 252
8 6 控制語句 254
8 6 1 if語句 254
8 6 2 分情形語句 256
8 6 3 repeat-while語句 259
8 6 4 for循環語句 260
8 7 過程調用和返回 262
8 7 1 參數的基本傳遞形式 262
8 7 2 過程調用 263
8 7 3 返回語句和過程終止 268
8 8 輸入輸出語句 268
8 8 1 16輸入語句 268
8 8 2 輸出語句 271
8 9 編譯程序的輔助功能 272
練習 274
第二部分 編譯優化與代碼生成
第三部 編譯器的自動生成技術
第四部分 編譯器實例分析與高級編譯技術
參考文獻

精彩書摘
第一部分 基礎篇
把高級程序設計語言翻譯成匯編語言或機器語言的工作稱為編譯 成這項翻譯工作的軟件系統稱設設為計計編譯程序或編譯器。本書書介紹編譯原理及編譯器的 和實現技術,學習編譯原理和技術也是深入理解程序語言的工作原理和設計高質量程序的基礎。
基礎篇為必修部分,介紹編譯的基礎概念和一個完整的翻譯過程,即將高級語言編寫的程序翻譯為一個彙編偽代碼(P-code)的完整過程。在此基礎上,培養學生具備編寫一個簡單編譯程序的能力,以及深入理解高級語言程序運行原理的能力。
第1章 編譯概述
掌握編譯程序設計原理和構造技術具有十分普遍的意義,是計算機科學研究者、軟件工程技術人員所必須掌握的專業基礎知識,可以說每一位計算機科學工作者在其整個科研生涯中,都會反復用到與編譯有關的原理和技術。編譯程序的設計涉及程序設計語言、計算機體系結構、形式語言理論、算法、數據結構和軟件工程等多個領域。本章 將介紹程序設計語言、編譯程序相關處理系統、開源編譯器以及編譯技術應用等內容。
1 1 什麼是程序設計語言
語言是思維的表現形式,人與人之間通過自然語言來傳達彼此的思想,因此,語言是用來傳遞信息的媒介和手段。在計算機的應用領域中,程序設計語言(也稱為”程序語言”或”編程語言”)充當了人與問題以及與協助解決該問題的計算機之間的通信工具,簡而言之人與計算機之間的中介就是程序設計語言。一種有效的程序設計語言能提高計算機程序的開發效率和對問題的表達能力它必須能填補人們通常的思維方式與計算機執行所要求的精確性之間的溝壑。程序設計語言正是為更好地滿足這方面的要求而不斷向前發展的。
1 1 1 程序設計語言的定義方法
程序設計語言是一種人工語言。各種程序設計語言是有嚴格定義的(即該語言的規格說明)。語言的定義由語法和語義來規定。
1 程序設計語言的定義與組成
1946年第一台電子數字計算機(electronic digital computer)出現,它一問世就成為強有力的計算工具。面對預定的任務(問題),只要告訴計算機”做什麼”和”怎麼做”,計算機就可以自動進行計算,對給定的問題求解。為此,人們需要將計算所需的信息告訴計算機,同時也要求計算機將計算結果告訴人們。這樣,人與計算機之間就要進行通信(com-munication),既然要通信,就需要信息的載體。因此人們設計出詞匯量少、語法簡單、意義明確的語言作為載體,這樣的載體通常稱為程序設計語言(programming language)。每當設計出一種新類型的計算機,就隨之產生一種該機器能理解並能直接執行的程序設計語言,這種語言稱為機器語言(machine language)。用機器語言編寫的程序由二進制代碼組成,計算機可以直接執行。對人來說,機器語言程序既難編寫又難讀懂。為了提高程序的可寫性(writability)和可讀性(readability),人們將機器語言符號化,於是產生了匯編語言(assembly language)。機器語言和匯編語言都是與機器有關的語言(machine-dependent language),通常稱為低級語言(low-level language)。其他與機器無關的程序設計語言(machine-independent language):通常被稱為高級語言(high-level language)。因為計算機只能理解機器語言和執行用機器語言編寫的程序,而不能直接執行用匯編語言和高級語言編寫的程序,所以必須將它們翻譯成功能上完全等價的機器語言程序計算機才能執行。這個翻譯工作由一個特殊的程序自動完成。將匯編語言程序翻譯為機器語言程序的程序被稱為匯編程序(assembler),又稱彙編器;將高級語言程序翻譯為低級語言程序的程序被稱為編譯程序(compiler),又稱編譯器。通常稱編寫一個高級語言的編譯程序為對該語言的實現。
2 程序設計語言的分類
語言的分類沒有統一的標準,通常按不同標準有不同的分類方法和結果。最主流的是按語言設計理論基礎來分類,可分為4類語言:
強制式語言
強制式語言也稱命令式語言(imperative language)。其特點是命令驅動,面向語句。一個強制式語言程序由一系列語句組成,每個語句的執行引起若干存儲單元中的值的改變。
應用式語言
與強制式語言不同,應用式語言(applicativ

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