編譯原理及實現(第2版)

編譯原理及實現(第2版)

《編譯原理及實現(第2版)》是2014年2月13日清華大學出版社出版的圖書,作者是孫悅紅。

基本介紹

  • 書名:編譯原理及實現(第2版)
  • 作者:孫悅紅 
  • ISBN:9787302265849
  • 定價:28元
  • 出版社清華大學出版社
  • 出版時間:2014年2月13日
  • 裝幀:平裝
內容簡介,圖書目錄,

內容簡介

本書以通俗易懂的語言介紹編譯原理的理論和常用的方法與技術,並著重介紹各種編譯方法的實現途徑。全書共分10章,包括形式語言基礎、詞法分析、語法分析、語義分析及代碼生成、符號表管理、運行時的存儲分配,以及代碼最佳化等。考慮目前學計算機專業的學生對C語言比較了解,本書以C語言為雛形設計了一種TEST語言,並在介紹全書內容時,用TEST語言進行分析與實現,使編譯原理的抽象性通過TEST語言編譯器的實現而具體化,從而使讀者輕鬆掌握編譯原理。
本書 理論與實踐並重,內容深入淺出,便於自學。每章後都提供了適量的習題。
本書 可作為高等學校計算機專業的教材,也可供從事計算機套用和開發的人員使用。

圖書目錄

第1章 編譯概述1
1.1 程式設計語言1
1.2 翻譯程式2
1.3 編譯程式的組成3
1.3.1 詞法分析4
1.3.2 語法分析4
1.3.3 語義分析及中間代碼生成5
1.3.4 代碼最佳化5
1.3.5 目標代碼生成6
1.3.6 符號表管理6
1.3.7 錯誤處理7
1.4 編譯程式的結構7
1.4.1 單遍編譯程式7
1.4.2 多遍編譯程式7
1.4.3 編譯程式分遍的優缺點8
1.4.4 “端”的概念 8
1.5 編譯程式的前後處理器9
1.5.1 預處理器9
1.5.2 彙編程式9
1.5.3 連線載入程式10
1.6 TEST語言與編譯器10
1.6.1 TEST語言10
1.6.2 TEST編譯器11
1.6.3 TEST機11
習題11
第2章 文法和語言12
2.1 字母表和符號串12
2.1.1 字母表12
2.1.2 符號串13
2.1.3 符號串及其集合的運算13
2.2 文法14
2.2.1 文法形式定義14
2.2.2 文法的EBNF表示16
2.3 推導17
2.3.1 直接推導定義17
2.3.2 推導定義18
2.3.3 規範推導18
2.4 句型和句子18
2.5 語言19
2.6 遞歸規則與遞歸文法20
2.6.1 遞歸規則20
2.6.2 遞歸文法20
2.7 短語、簡單短語和句柄21
2.8 語法樹22
2.9 子樹與短語22
2.10 由樹構造推導過程23
2.11 文法的二義性23
2.12 有關文法的實用限制25
2.13 文法和語言分類26
習題27
第3章 詞法分析29
3.1 詞法分析的功能29
3.2 程式語言的單詞符號種類及詞法分析輸出30
3.3 正則文法及狀態圖31
3.3.1 狀態圖31
3.3.2 狀態圖的用法32
3.4 詞法分析程式的設計與實現33
3.4.1 TEST語言的詞法規則及狀態圖33
3.4.2 TEST語言詞法分析程式的構造35
3.4.3 TEST語言的詞法分析程式實現36
3.5 正則表達式38
3.5.1 正則表達式定義38
3.5.2 正則文法到正則表達式的轉換39
3.6 有窮自動機40
3.6.1 確定的有窮自動機40
3.6.2 不確定的有窮自動機42
3.6.3 NFA到DFA的轉化44
3.6.4 正則表達式與有窮自動機的等價性47
3.6.5 確定的有窮自動機的化簡49
3.6.6 根據DFA構造詞法分析程式51
3.7 詞法分析程式的自動生成器LEX52
3.7.1 用LEX語言表達正則表達式53
3.7.2 LEX源程式結構54
3.7.3 使用LEX生成TEST語言的詞法分析程式58
習題60
第4章 語法分析--自頂向下分析62
4.1 自頂向下分析方法62
4.2 FIRST集合和FOLLOW集合63
4.2.1 FIRST集合定義及構造方法63
4.2.2 FOLLOW集合定義及構造方法 64
4.3 遞歸下降分析65
4.3.1 遞歸下降分析的基本方法65
4.3.2 遞歸下降分析中存在的問題及解決方法65
4.3.3 TEST語言的遞歸下降分析實現69
4.4 LL(1)分析方法72
4.4.1 LL(1)分析的基本方法72
4.4.2 LL(1)分析表的構造方法75
4.4.3 LL(1)分析的主要問題及解決方法76
習題78
第5章 語法分析--自底向上分析80
5.1 規範推導、規範句型和規範歸約80
5.2 自底向上分析方法的一般過程81
5.3 LR分析方法82
5.3.1 LR分析器邏輯結構82
5.3.2 LR分析表構成82
5.3.3 LR分析過程84
5.4 LR(0)分析器85
5.4.1 活前綴和可歸前綴85
5.4.2 LR(0)項目86
5.4.3 構造識別活前綴的有窮自動機88
5.4.4 LR(0)分析表的構造92
5.4.5 LR(0)分析器的工作過程94
5.4.6 LR(0)文法95
5.5 SLR(1)分析器96
5.5.1 SLR解決方法的基本思想98
5.5.2 SLR(1)分析表的構造98
5.6 LR(1)分析器102
5.6.1 LR(1)項目104
5.6.2 LR(1)項目集規範族構造算法105
5.6.3 LR(1)分析表的構造108
5.7 LALR(1)分析器110
5.8 語法分析程式的自動生成工具--YACC114
5.8.1 YACC源程式結構115
5.8.2 YACC源程式說明部分的組成115
5.8.3 YACC源程式的語法規則部分的組成116
5.8.4 YACC源程式的程式部分的組成117
5.8.5 二義性文法的處理119
5.8.6 YACC示例運行119
習題120
第6章 語法制導翻譯技術122
6.1 翻譯文法122
6.2 語法制導翻譯124
6.3 自頂向下語法制導翻譯125
6.3.1 遞歸下降翻譯125
6.3.2 LL(1)翻譯器128
6.4 屬性翻譯文法130
6.4.1 綜合屬性130
6.4.2 繼承屬性132
6.4.3 屬性翻譯文法定義133
6.4.4 屬性翻譯文法舉例--算術表達式的翻譯134
6.5 屬性文法的自頂向下翻譯136
6.5.1 L-屬性翻譯文法136
6.5.2 L-屬性翻譯文法的翻譯實現--遞歸下降翻譯137
6.5.3 L-屬性翻譯文法的翻譯實現--LL(1)法142
6.6 自底向上語法制導翻譯146
6.6.1 波蘭翻譯146
6.6.2 S-屬性文法148
6.6.3 S-屬性波蘭翻譯文法的翻譯實現149
習題151
第7章 符號表管理技術153
7.1 何時建立和訪問符號表153
7.2 符號表的組織和內容154
7.3 符號表上的操作156
7.4 非塊程式結構語言的符號表結構157
7.5 塊程式結構語言的符號表組織159
7.5.1 塊程式結構語言的概念159
7.5.2 棧式符號表160
習題161
第8章 程式運行時的存儲組織及管理162
8.1 程式運行時的存儲組織162
8.2 靜態存儲分配163
8.3 棧式動態存儲分配164
8.3.1 活動記錄165
8.3.2 運行時的地址計算167
8.3.3 遞歸過程的處理167
8.4 堆式動態存儲分配168
8.4.1 堆分配方式168
8.4.2 堆式存儲管理技術169
習題172
第9章 語義分析和代碼生成173
9.1 語義分析的概念173
9.2 中間代碼174
9.2.1 波蘭後綴表示174
9.2.2 N-元表示175
9.2.3 棧式抽象機及其彙編指令176
9.3 聲明的處理178
9.3.1 符號常量178
9.3.2 簡單變數179
9.3.3 數組181
9.3.4 過程聲明184
9.4 表達式語句184
9.5 if語句189
9.6 while語句191
9.7 for循環語句192
9.8 write_語句194
9.9 read_語句195
9.10 過程調用和返回196
9.10.1 參數的基本傳遞形式196
9.10.2 過程調用197
9.10.3 過程定義的處理197
9.10.4 返回語句和過程終止語句199
9.11 語義分析及代碼生成實現199
9.12 錯誤處理199
習題200
第10章 代碼最佳化201
10.1 局部最佳化201
10.1.1 基本塊的劃分202
10.1.2 基本塊的最佳化技術203
10.1.3 基本塊的DAG表示204
10.1.4 基本塊最佳化的實現209
10.2 循環內的最佳化210
10.2.1 循環結構的定義210
10.2.2 循環的查找211
10.2.3 循環最佳化的實現212
習題218
附錄A TEST語言文法規則219
A.1 TEST語言詞法規則219
A.2 TEST的語法規則219
A.3 TEST的語義和代碼生成221
附錄B 詞法分析程式223
B.1 詞法分析程式223
B.2 主程式225
附錄C 語法分析程式227
C.1 語法分析程式227
C.2 主程式236
附錄D 語義及代碼生成程式237
D.1 語法、語義及代碼生成程式237
D.2 主程式250
附錄E TEST抽象機模擬器完整程式251
E.1 TESTmachine函式251
E.2 主程式256

相關詞條

熱門詞條

聯絡我們