編譯原理基礎

編譯原理基礎

《編譯原理基礎》是西安電子科技大學出版社出版的一本書。

本書系統地介紹了程式設計語言翻譯的基本原理與技術,內容包括編譯器構造的所有重要階段:詞法分析、語法分析、語義分析與中間代碼生成、代碼最佳化、運行時的存儲分配以及目標代碼的生成等。本書還介紹了編譯器編寫工具LEx和YAcc的工作原理與使用方法,並對語法制導翻譯與屬性計算、類型與類型檢查、數據流分析等編譯器構造和程式分析技術中當前重點關注的原理和方法進行了討論。本書既可以作為工科院校計算機專業或非計算機專業本科生與研究生的教材,也可以作為軟體技術人員和程式設計語言愛好者的參考書。

本書配有電子教案,有需要者可從出版社網站下載,免費提供。

基本介紹

  • 書名:編譯原理基礎
  • 作者:劉堅
  • ISBN:978-7-5606-1111-2
  • 定價:29.00元
  • 出版社:西安電子科技大學出版社
  • 出版時間:2008年9月
  • 開本:787×1092 1/16
內容簡介,圖書目錄,

內容簡介

本書系統地介紹了程式設計語言翻譯的基本原理與技術,內容包括編譯器構造的所有重要階段:詞法分析、語法分析、語義分析與中間代碼生成、代碼最佳化、運行時的存儲分配以及目標代碼的生成等。本書還介紹了編譯器編寫工具LExYAcc的工作原理與使用方法,並對語法制導翻譯與屬性計算、類型與類型檢查、數據流分析等編譯器構造和程式分析技術中當前重點關注的原理和方法進行了討論。本書既可以作為工科院校計算機專業或非計算機專業本科生與研究生的教材,也可以作為軟體技術人員和程式設計語言愛好者的參考書。
本書配有電子教案,有需要者可從出版社網站下載,免費提供。

圖書目錄

第1章 引言
1.1 從面向機器的語言到面向人類的語言
1.2 語言之間的翻譯
l.3 編譯器與解釋器
1.4 編譯器的工作原理與基本組成
1.4.1 通用程式設計語言的主要成分
1.4.2 以階段劃分編譯器
1.4.3 編譯器各階段的工作
1.4.4 編譯器的分析/綜合模式
1.4.5 編譯器掃描的遍數
1.5 編譯器的編寫
1.6 本章小結
習題
第2章 詞法分析
2.1 詞法分析中的若干問題
2.1.1 記號、模式與單詞
2.1.2 記號的屬性
2.1.3 詞法分析器的作用與工作方式
2.1.4 輸入緩衝區
.2.2 模式的形式化描述
2.2.1 字元串與語言
2.2.2 正規式與正規集
2.2.3 記號的說明
2.3 記號的識別——有限自動機
2.3.1 不確定的有限自動機(NondeterministicFiniteAutomata,NFA)
2.3.2 確定的有限自動機(DeterministicFiniteAutomata,DFA)
2.3.3 有限自動機的等價
2.4 從正規式到詞法分析器
2.4.1 從正規式到NFA
2.4.2 從NFA到DFA
2.4.3 最小化DFA
2.4.4 DFA的“短路”計算
2.4.5 由DFA構造詞法分析器
2.5 本章小結
習題
第3章 語法分析
3.1 語法分析的若干問題
3.1.1 語法分析器的作用
3.1.2 語法錯誤的處理原則
3.2 上下文無關文法
3.2.1 上下文無關文法的定義與表示
3.2.2 cFG產生語言的基本方法——推導
3.2.3 推導、分析樹與語法樹
3.2.4 二義性與二義性的消除
3.3 語言與文法簡介
3.3.1 正規式與上下文無關文法
3.3.2 上下文有關文法
3.3.3 形式語言與自動機簡介
3.4 自上而下語法分析
3.4.1 自上而下分析的一般方法
3.4.2 消除左遞歸
3.4.3 提取左因子
3.4.4 遞歸下降分析
3.4.5 預測分析器
3.5 自下而上語法分析
3.5.1 自下而上分析的基本方法
3.5.2 LR分析
3.6 LR(1)與LALR(1)分析
3.6.1 SLR分析器的弱點
3.6.2 LR(1)分析器
3.6.3 LALR(1)分析器
3.6.4 LR(1)與LALR(1)的關係
3.6.5 LR(1)與二義文法的關係
3.7 編譯器編寫工具
3.7.1 詞法分析器生成器LEx
3.7.2 語法分析器生成器YACC
3.7.3 語言識別器生成工具簡述
3.8 本章小結
習題
第4章 靜態語義分析
4.1 語法制導翻譯簡介
4.1.1 語法與語義
4.1.2 屬性與語義規則
4.1.3 語義規則的兩種形式
4.1.4 LR分析翻譯方案的設計
4.1.5 遞歸下降分析翻譯方案的設計
4.2 屬性的計算
4.2.1 綜合屬性與自下而上分析
4.2.2 繼承屬性與自上而下分析
4.2.3 依賴圖與屬性計算
4.2.4 L-屬性的增量分析
4.2.5 L-屬性的自下而上計算
4.2.6 屬性的空間分配
4.2.7 YAcc源程式中的語法制導翻譯.
4.3 中間代碼簡介
4.3.1 後綴式
4.3.2 三地址碼
4.3.3 圖形表示
4.4 符號表簡介
4.4.1 符號表條目
4.4.2 構成名字的字元串
4.4.3 名字的作用域
4.4.4 線性表
4.4.5 散列表
4.5 聲明語句的翻譯
4.5.1 變數的聲明
4.5.2 數組變數的聲明
4.5.3 過程的定義與聲明
4.5.4 記錄的域名
4.6 簡單算術表達式與賦值句
4.6.1 簡單變數的語法制導翻譯
4.6.2 變數的類型轉換
4.7 數組元素的引用
4.7.1 數組元素的地址計算
4.7.2 數組元素引用的語法制導翻譯
4.8 布爾表達式
4.8.1 布爾表達式的作用與結構
4.8.2 布爾表達式的計算方法
4.8.3 數值表示與直接計算的語法制導翻譯
4.8.4 短路計算的語法制導翻譯
4.8.5 拉鏈與回填
4.9 控制語句
4.9.1 標號與無條件轉移
4.9.2 條件轉移
4.10 過程調用
4.11 類型檢查
4.11.1 類型、類型系統與類型檢查
4.11.2 類型系統
4.11.3 簡單的類型檢查
4.11.4 類型表達式的等價
4.11.5 多態函式的類型檢查
4.11.6 特定多態的類型檢查
4.12 本章小結
習題
第5章 運行環境
5.1 過程的動態特性
5.1.1 過程與活動
5.1.2 控制棧與活動記錄
5.1.3 名字的綁定
5.2 運行時數據空間的組織
5.2.1 運行時記憶體的劃分與數據空間的存儲分配策略
5.2.2 靜態與動態分配簡介
5.3 棧式動態分配
5.3.1 控制棧中的活動記錄
5.3.2 調用序列與返回序列
5.3.3 棧式分配中對非本地名字的訪問
5.3.4 參數傳遞的實現
5.4 本章小結
習題
第6章 代碼生成
6.1 代碼生成的相關問題
6.2 簡單的計算機模型
6.3 簡單的代碼生成器
6.3.1 基本塊、流圖與循環
6.3.2 下次引用信息與活躍信息
6.3.3 簡單的代碼生成
6.4 本章小結
習題
第7章 代碼最佳化
7.1 局部最佳化
7.1.1 基本塊的最佳化
7.1.2 窺孔最佳化
7.1.3 表達式的最佳化代碼生成
7.2 獨立於機器的最佳化
7.2.1 運行實例:快排序
7.2.2 全局公共子表達式
7.2.3 複寫傳播(CopyPropagation)
7.2.4 死代碼消除(Dead-CodeElimination).
7.2.5 代碼外提(CodeMotion)
7.2.6 歸納變數與強度削弱
7.3 數據流分析簡介
7.3.1 數據流抽象
7.3.2 數據流分析模式
7.3.3 基本塊上的數據流模式
7.3.4 到達定值(ReachingDefinitions)
7.3.5 活躍變數(LiveVatribale)
7.3.6 可用表達式(AvailabalExpression)
7.3.7 小結
7.4 數據流分析的數學基礎
7.4.1 半格(Semilattices)
7.4.2 轉換函式(TransferFunctions)
7.4.3 通用框架的疊代算法
7.4.4 數據流解的意義
7.5 本章小結
習題
參考文獻

相關詞條

熱門詞條

聯絡我們