編譯程式設計原理與技術

詞法分析器的作用 語法分析器的作用 語法分析器的地位

基本信息

出版社: 北京郵電大學出版社; 第1版 (2002年9月1日)
叢書名: 21世紀信息通信系列教材
平裝: 328頁
正文語種: 簡體中文
開本: 16
ISBN: 9787563506231
條形碼: 9787563506231
商品尺寸: 25.2 x 18 x 1.8 cm
商品重量: 558 g
品牌: 北京郵電大學出版社
ASIN: B003XU5SQ0

內容簡介

編譯程式設計原理與技術》內容簡介:在較多地參考了國內外權威人士著作的基礎上,《編譯程式設計原理與技術》系統地介紹了編譯程式設計的基本原理和技術。其主要內容包括詞法分析、語法分析、類型檢查、中間代碼生成、代碼生成和代碼最佳化等。《編譯程式設計原理與技術》旨在培養學生髮現問題、提出問題,進而分析和解決問題的能力。《編譯程式設計原理與技術》內容充實,圖文並茂,各章節內容循序漸進,並注意理論與實踐的結合,可作為高等院校計算機科學與技術專業的教材或參考書,也可供其他專業的學生或從事計算機工作的工程技術人員閱讀參考。

目錄

第1章 形式語言與自動機基礎
1.1 語言和文法
1.1.1 字母表和符號串
1.1.2 語言
1.1.3 文法及其形式定義
1.1.4 推導和短語
1.1.5 分析樹及二義性
1.1.6 文法的變換
1.2 自動機與正規表達式
1.2.1 確定的有限自動機(DFA)
1.2.2 非確定的有限自動機(NFA)
1.2.3 具有 -轉移的非確定的有限自動機
1.2.4 正規文法與有限自動機的等價性
1.2.5 正規表達式與有限自動機的等價性
1.2.6 正規表達式與正規文法
1.2.7 DFA的化簡
習題
第2章 編譯概述
2.1 翻譯和解釋
2.1.1 程式設計語言
2.1.2 翻譯程式
2.2 編譯的階段
2.2.1 分析階段
2.2.2 綜合階段
2.2.3 符號表管理
2.2.4 錯誤處理
2.2.5 前端和後端
2.2.6 “遍”的概念
2.3 編譯程式的前後處理器
2.3.1 預處理器
2.3.2 彙編程式
2.3.3 連線裝配程式
2.4 編譯原理和技術的套用
習題
第3章 詞法分析
3.1 詞法分析器的作用
3.1.1 詞法分析器與語法分析器的關係
3.1.2 分離詞法分析器的好處
3.2 詞法分析器的輸入與輸出
3.2.1 設定輸入緩衝器的必要性
3.2.2 配對緩衝器
3.2.3 詞法分析器的輸出
3.3 記號的描述和識別
3.3.1 詞法與正規文法
3.3.2 記號的文法
3.3.3 狀態轉換圖與記號的識別
3.4 詞法分析程式的設計與實現
3.4.1 文法及狀態轉換圖
3.4.2 詞法分析器的構造
3.4.3 詞法分析器的實現
3.5 軟體工具LEX
3.5.1 LEX規格說明
3.5.2 LEX的工作原理
習題
第4章 語法分析
4.1 語法分析器的作用
4.1.1 語法分析器的地位
4.1.2 常用的分析方法
4.1.3 語法錯誤的處理
4.2 自頂向下分析
4.2.1 遞歸下降分析方法
4.2.2 預測分析器
4.2.3 非遞歸的預測分析器
4.3 自底向上分析
4.3.1 規範歸約
4.3.2 “移進-歸約”方法的實現
4.4 LR分析器
4.4.1 LR分析器的模型及工作過程
4.4.2 SLR分析表的構造
4.4.3 LR(1)分析表的構造
4.4.4 LALR分析表的構造
4.4.5 LR分析方法對二義文法的套用
4.4.6 LR分析的錯誤處理與恢復
4.5 軟體工具YACC
4.5.1 YACC說明檔案
4.5.2 用YACC處理二義文法
4.5.3 用LEX建立YACC的詞法分析器
4.5.4 YACC內部名稱
習題
第5章 語法制導翻譯技術
5.1 語法制導定義
5.1.1 語法制導定義的形式
5.1.2 綜合屬性
5.1.3 繼承屬性
5.1.4 依賴圖
5.1.5 計算次序
5.2 S屬性定義的自底向上翻譯
5.2.1 語法樹
5.2.2 構造表達式的語法樹
5.2.3 構造表達式的語法樹的語法制導定義
5.2.4 表達式的有向非循環圖(dag)
5.2.5 S屬性定義的自底向上實現
5.3 L屬性定義
5.3.1 L屬性定義
5.3.2 翻譯方案
5.4 L屬性定義的自頂向下翻譯
5.4.1 消除翻譯方案中的左遞歸
5.4.2 預測翻譯器的設計
5.5 L屬性定義的自底向上翻譯
5.5.1 從翻譯方案中去掉嵌入的動作
5.5.2 分析棧中的繼承屬性
5.5.3 模擬繼承屬性的計算
5.5.4 用綜合屬性代替繼承屬性
5.6 非L屬性定義的翻譯
5.6.1 從左到右遍歷子結點
5.6. 2 其他遍歷順序
習題
第6章 類型檢查
6.1 語義分析的概念
6.2 類型體制
6.2.1 類型表達式
6.2.2 類型體制
6.2.3 靜態和動態類型檢查
6.2.4 錯誤恢復
6.3 簡單類型檢查器的說明
6.3.1 語言說明
6.3.2 確定標識符的類型
6.3.3 表達式的類型檢查
6.3.4 語句的類型檢查
6.4 類型表達式的等價
6.4.1 類型表達式的結構等價
6.4.2 類型表達式的名字等價
6.4.3 類型表示中的環
6.5 類型檢查有關的其他主題
6.5.1 函式和運算符的重載
6.5.2 類型轉換
6.5.3 多態函式
6.6 符號表
6.6.1 建立和訪問符號表的時機
6.6.2 符號表的內容
6.6.3 在符號表上的操作
6.6.4 符號表的組織
習題
第7章 運行時刻環境
7.1 基本概念
7.1.1 過程
7.1.2 活動樹
7.1.3 控制棧
7.1.4 聲明的作用域
7.1.5 名字的聯編
7.2 存儲組織
7.2.1 運行時刻記憶體的劃分
7.2.2 活動記錄
7.2.3 編譯時局部數據的安排
7.3 存儲分配策略
7.3.1 靜態存儲分配
7.3.2 棧式存儲分配
7.3.3 堆式存儲分配
7.4 訪問非局部名字
7.4.1 程式塊
7.4.2 非嵌套過程的靜態作用域
7.4.3 嵌套過程的靜態作用域
7.4.4 動態作用域規則
7.5 參數傳遞方式
7.5.1 傳值調用
7.5.2 引用調用
7.5.3 複製恢復
7.5.4 傳名調用
習題
第8章 中間代碼生成
8.1 中間語言
8.1.1 圖示法
8.1.2 三地址代碼
8.1.3 語法制導翻譯生成三地址代碼
8.2 聲明語句的翻譯
8.2.1 過程中的聲明語句
8.2.2 過程定義的處理
8.2.3 記錄聲明的處理
8.3 賦值語句的翻譯
8.3.1 表達式中僅涉及簡單變數的情況
8.3.2 表達式中涉及數組元素的情況
8.3.3 記錄中域的訪問
8.4 布爾表達式的翻譯
8.4.1 翻譯布爾表達式的方法
8.4.2 數值表示法
8.4.3 控制流語句
8.4.4 布爾表達式的控制流翻譯
8.5 CASE語句的翻譯
8.6 回填技術
8.6.1 使用回填技術翻譯布爾表達式
8.6.2 使用回填技術翻譯控制流語句
8.6.3 標號和轉移語句的翻譯
8.7 過程調用語句的翻譯
習題
第9章 目標代碼生成
9.1 代碼生成器設計時要考慮的問題
9.1.1 代碼生成器的輸入
9.1.2 代碼生成器的輸出
9.1.3 存儲管理
9.1.4 指令選擇
9.1.5 暫存器分配
9.1.6 計算次序的選擇
9.1.7 代碼生成器的設計
9.2 目標機器
9.2.1 目標機器
9.2.2 指令代價
9.3 運行時的存儲管理
9.3.1 靜態存儲分配
9.3.2 棧式存儲分配
9.3.3 運行時名字的地址
9.4 基本塊與控制流圖
9.4.1 基本塊
9.4.2 控制流圖
9.5 下次引用信息
9.6 一個簡單的代碼生成器
9.6.1 暫存器描述器和地址描述器
9.6.2 函式getreg
9.6.3 代碼生成算法
9.6.4 為其他類型的語句生成目標代碼
習題
第10章 代碼最佳化
10.1 最佳化概述
10.1.1 程式最佳化
10.1.2 最佳化器的組織
10.1.3 最佳化的主要種類
10.2 基本塊的最佳化
10.2.1 常數合併及常數傳播
10.2.2 刪除冗餘的公共表達
10.2.3 複寫傳播
10.2.4 刪除死代碼
10.2.5 削弱計算強度
10.2.6 臨時變數改名
10.2.7 交換語句的位置
10.3 循環最佳化
10.3.1 循環展開
10.3.2 頻度削弱/代碼外提
10.3.3 歸納變數的刪除
10.3.4 削弱計算強度
10.4 窺孔最佳化
10.4.1 冗餘傳送
10.4.2 死代碼
10.4.3 控制流最佳化
10.4.4 代數化簡
10.4.5 強度削弱
10.4.6 利用機器的特點
10.5 dag在代碼最佳化中的套用
10.5.1 基本塊的dag的構造
10.5.2 dag的套用
習題
第11章 編譯程式的設計與實現
11.1 設計與實現方法
11.1.1 編譯程式的實現語言
11.1.2 構造編譯程式的自展方法
11.1.3 構造編譯程式的移植方法
11.1.4 編譯程式構造舉例
11.2 編譯實踐
11.2.1 Sub_P語言說明
11.2.2 Sub_P編譯程式的設計說明
11.2.3 Sub_P編譯程式的測試
11.2.4 設計報告要求
參考文獻

相關詞條

熱門詞條

聯絡我們