編譯程式設計藝術

編譯程式設計藝術

《編譯程式設計藝術》是2010年1月1日機械工業出版社出版的圖書,作者是[美] 皮特曼( Pittman T.) 。

基本介紹

  • 中文名:編譯程式設計藝術
  • 作者:[美] 皮特曼( Pittman T.)
  • 出版社:機械工業出版社
  • ISBN:9787111288107
內容簡介,圖書目錄,

內容簡介

《編譯程式設計藝術理論與實踐》詳細介紹了編譯程式設計中的詞法分析(掃描程式)、語法分析(分析程式)、語義分析(約束程式)、中間代碼最佳化以及代碼生成等內容。作為頗受好評的編譯原理優秀入門教材,《編譯程式設計藝術理論與實踐》的最大特色是在全書貫穿了一種基於文法的指導思路:在語法分析階段,該書遵循了一般教材採用的上下文無關文法;在語義分析階段,採用以上下文無關文法為基礎的屬性文法;而在代碼最佳化和代碼生成階段,則採用了變換屬性文法。書中最後還給出變換屬性文法的一種自編譯實現。此外,《編譯程式設計藝術理論與實踐》還探討了面向不同計算機體系結構的代碼生成技術以及非過程式語言的編譯問題。
《編譯程式設計藝術理論與實踐》適合作為高等院校計算機科學與技術、軟體工程以及相關專業編譯原理課程的教學參考書,同時也可供計算機語言及其處理技術愛好者參考。

圖書目錄

出版者的話
譯者序
前言
第1章 編譯程式理論概述
1.1 簡介
1.2 語言與翻譯程式
1.3 文法的作用
1.4 若干例子
1.5 編譯程式的結構
1.5.1 詞法分析
1.5.2 字元串表
1.5.3 語法分析
1.5.4 約束
1.5.5 符號表
1.5.6 代碼生成
1.5.7 最佳化
符號
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第2章 文法:喬姆斯基層次
2.1 簡介
2.2 文法
2.2.1 字母表與串
2.2.2 非終結符與產生式
2.2.3 若干文法例子
2.3 喬姆斯基層次
2.4 文法及其機器
2.4.1 圖靈機
2.4.2 線性有界自動機
2.4.3 下推自動機
2.4.4 刪除空產生式
2.4.5 比較上下文無關文法和上下文敏感文法
2.4.6 有窮狀態自動機
2.5 空串與空語言
2.6 規範推導
2.7 二義性
2.8 文法思維的藝術
2.8.1 有窮狀態自動機的局限性
2.8.2 上下文無關文法的計數
2.8.3 對上下文敏感
小結
符號
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第3章 掃描程式和正則語言
3.1 詞法分析簡介
3.2 正則表達式
3.2.1 正則表達式代數
3.2.2 正則表達式的形式化特性
3.3 文法與正則表達式的轉換
3.4 有窮狀態自動機
3.5 不確定的有窮狀態自動機
3.6 將文法轉換為自動機
3.7 自動機的轉換
3.7.1 刪除空環路
3.7.2 刪除空變遷
3.7.3 自動機的確定化
3.7.4 自動機的約簡
3.8 將自動機轉換為文法
3.9 左線性文法
3.10 在計算機上實現有窮狀態自動機
3.11 掃描程式的特殊實現問題
3.11.1 輸入字母表的大小
3.11.2 掃描程式自動機中的停機狀態
3.11.3 過濾空格與注釋
3.11.4 單詞的輸出
3.12 字元串表的實現
3.12.1 基於線性查找的實現
3.12.2 基於散列表的實現
3.12.3 基於查找樹的實現
3.12.4 不同實現的性能比較
3.13 保留字
3.14 使用掃描程式生成工具
小結
符號
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第4章 分析程式和上下文無關語言
4.1 簡介
4.2 下推自動機
4.2.1 停機條件的等價性
4.2.2 根據上下文無關文法構造下推自動機
4.3 LL(k)條件
4.3.1 First和和Follow集
4.3.2 選擇集
4.4 左遞歸
4.5 公共左因子
4.6 為上下文無關文法擴展正則表達式運算符
4.7 使用分析程式生成工具
4.7.1 使用TAG編譯程式
4.7.2 使用YACC
4.8 遞歸下降分析程式
4.9 遞歸下降分析程式作為下推自動機
小結
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第5章 語義分析與屬性文法
5.1 簡介
5.2 屬性文法
5.2.1 繼承屬性和綜合屬性
5.2.2 屬性值流
5.3 非終結符作為屬性求值函式
5.4 符號表作為屬性
5.5 Micro-Modula的屬性文法
5.6 在TAG編譯程式中使用屬性
5.7 作用域與標識符類別
5.7.1 標識符作用域的文法
5.7.2 標識符作用域例子分析
5.7.3 符號表的其他問題
5.8 在遞歸下降中實現屬性
5.9 實現符號表
小結
符號
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第6章 語法制導代碼生成
6.1 簡介
6.2 計算機硬體體系結構
6.3 棧機器的表達式求值
6.4 IttyBitty棧機器
6.5 帶屬性的代碼生成
6.5.1 運算符優先權與結合性質
6.5.2 程式結構的語義
6.5.3 向前分支問題
6.6 過程和函式的代碼生成
6.7 塊結構的棧幀管理
6.7.1 幀與幀指針
6.7.2 靜態鏈與動態鏈
6.7.3 幀指針的Display向量
6.8 其他數據類型
6.9 結構化數據類型
6.9.1 指針類型
6.9.2 記錄結構
6.9.3 數組的語義
6.10 其他數據結構
6.11 Itty Bitty棧機器的輸入和輸出
6.12 語法制導語義的局限
6.13 手工編寫編譯程式的代碼生成
6.14 語法制導語義的套用
6.14.1 TinyBASIC解釋程式
6.14.2 Micro-Modula美化列印工具
小結
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第7章 自底向上分析程式的自動化
設計
7.1 簡介
7.2 LR(k)分析程式
7.2.1 構造LR(k)狀態機
7.2.2 一個LR(2)分析程式
7.2.3 歸約與移進操作
7.3 衝突
7.4 例子:文法G2的衝突解析
7.5 在棧中保存狀態
7.6 其他LR(k)分析程式:SLR
7.7 LALR(k)分析程式
7.8 自底向上分析程式的實現
7.9 出錯恢復
7.10 LR分析程式中的屬性求值
小結
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第8章 變換屬性文法
8.1 簡介
8.2 程式的樹表示
8.3 樹變換文法
8.3.1 非生成的文法
8.3.2 一個TAG例子
8.3.3 求值次序
8.3.4 信息流與存儲
8.3.5 帶樹值的屬性
8.3.6 不確定的分析
8.4.組合串文法與樹文法
8.5 TAG中的類型檢查
8.6 基於變換的代碼最佳化
8.6.1 數據流分析
8.6.2 數據流分析中使用屬性文法
8.7 中間代碼樹表示的替代方案
8.7.1 四元式的數據流
8.7.2 循環的數據流分析
8.8 實用最佳化變換綜述
8.8.1 模擬執行最佳化的類別
8.8.2 常量摺疊分析
8.8.3 使用值編號檢測公共子表達式
8.8.4 左移動提升
8.8.5 右移動提升
8.8.6 無用代碼以及其他從右到左的數據流分析
8.8.7 數學等式與代碼選擇
8.8.8 循環結構分析
8.9 實現抽象語法樹
8.10 實現TAG驅動的樹變換
小結
符號
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第9章 代碼生成與最佳化
9.1 簡介
9.2 循環最佳化
9.2.1 循環的範圍分析
9.2.2 歸納變數
9.2.3 循環展開
9.3 暫存器與記憶體分配
9.3.1 暫存器分配算法
9.3.2 表達式中的暫存器分配
9.3.3 更好的暫存器分配數據流分析
9.3.4 循環的暫存器分配
9.3.5 定址模式
9.3.6 分支定址選擇
9.3.7 分支鏈
9.4 代碼生成的複雜性
9.4.1 指令選擇
9.4.2 強度削弱
9.5 專用指令
9.5.1 RISC和流水線處理器調度
9.5.2 向量處理器
9.6 代碼最佳化的變形
9.6.1 代碼最佳化的分類
9.6.2 窺孔最佳化
小結
縮略詞
關鍵術語
練習
複習小測驗
編譯程式實驗項目
進一步閱讀
第10章 非過程式語言
10.1 簡介
10.2 套用式語言的編譯
10.2.1 Lisp語言的一些概念
10.2.2 尾遞歸
10.2.3 實現一個套用式語言的編譯程式
10.3 變換屬性文法的編譯程式
10.3.1 TAG編譯程式的組成部分
10.3.2 文法中的疊代運算符
10.3.3 向用戶報告語法錯誤
10.3.4 自動構造掃描程式
10.3.5 TAG編譯程式的語法分析
10.3.6 樹變換
10.3.7 語法錯誤停機
小結
關鍵術語
練習
複習小測驗
進一步閱讀
附錄A Itty Bitty Modula語法圖
附錄B TAG編譯程式的TAG
附錄C IttyBitty棧機器的指令集
附錄D 四種計算機的代碼生成表

相關詞條

熱門詞條

聯絡我們