編譯原理及實踐教程(第4版)微課視頻版
黃賢英 王柯柯 曹瓊
商品描述
目錄大綱
目錄
第1章編譯概述
1.1程序設計語言及翻譯程序
1.1.1程序設計語言的發展
1.1.2翻譯程序大家族
1.1.3高級語言程序的運行方式
1.2編譯系統
1.2.1高級語言編譯流程
1.2.2高級語言編譯實例
1.3編譯過程和編譯程序的結構
1.3.1編譯過程概述
1.3.2編譯程序的結構
1.3.3編譯階段的組合
1.4編譯程序的構造方法
1.5認識高級語言
1.5.1高級語言的構成成分
1.5.2程序的結構
1.5.3Sample語言規範
1.5.4符合Sample語言規範的源程序舉例
1.6編譯程序的發展及應用
1.6.1編譯器的發展
1.6.2編譯技術的應用
1.6.3為什麼要學習編譯原理及其構造技術
1.7本書結構
1.8小結
1.9習題
第2章詞法分析
2.1詞法分析概述
2.2高級語言中的單詞
2.2.1單詞的分類
2.2.2單詞的種別碼
2.3單詞的識別
2.3.1狀態轉換圖
2.3.2單詞識別程序
2.3.3超前搜索技術和雙界符的識別
2.3.4數值型常數的識別與狀態轉換圖的合並
2.4詞法分析器的設計
2.5正則表達式與有窮自動機
2.5.1符號和符號串
2.5.2集合的運算及語言的定義
2.5.3正則表達式
2.5.4有窮自動機
2.5.5正則表達式與有窮自動機的等價性
2.6詞法分析器的自動生成工具
2.6.1Lex概述
2.6.2Lex源文件的書寫
2.6.3Lex的工作原理
2.6.4Lex使用中的一些註意事項
2.6.5使用Lex自動生成詞法分析器
2.7詞法分析中的錯誤處理
2.8小結
2.9習題
第3章語法分析
3.1語法分析概述
3.2上下文無關文法
3.2.1文法的定義
3.2.2推導
3.2.3文法產生的語言
3.2.4語法樹
3.2.5二義文法
3.2.6消除二義性
3.2.7Sample語言文法描述
3.3自上而下的語法分析
3.3.1自上而下分析方法中的問題探究
3.3.2LL(1)文法
3.3.3遞歸下降分析方法
3.3.4預測分析方法
3.4自下而上的語法分析
3.4.1自下而上分析方法概述
3.4.2算符優先分析
3.4.3LR分析法
3.5語法分析器的自動生成工具YACC
3.5.1YACC概述
3.5.2YACC源文件的格式
3.5.3YACC的翻譯規則
3.5.4YACC的輔助程序
3.6語法分析中的錯誤處理
3.6.1語法分析中的錯誤處理的一般原則
3.6.2自上而下語法分析的錯誤處理
3.6.3自下而上語法分析的錯誤處理
3.7小結
3.8習題
第4章語義分析
4.1語義分析概述
4.2Sample語言的語義描述
4.2.1程序的語義
4.2.2函數的語義
4.2.3各種語句的語義
4.2.4表達式的語義
4.2.5各種名字的聲明和使用的語義
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.5屬性文法
4.5.1屬性與語義規則
4.5.2屬性的計算
4.6語法制導的語義處理方法
4.6.1L屬性文法
4.6.2翻譯模式
4.6.3S屬性文法的自下而上語義處理方法
4.6.4L屬性文法的自上而下語義處理方法
4.7類型聲明的語義處理
4.7.1常量聲明
4.7.2變量聲明
4.7.3函數聲明
4.8小結
4.9習題
第5章中間代碼生成
5.1中間代碼生成概述
5.2中間代碼
5.2.1逆波蘭式
5.2.2三地址代碼
5.2.3抽象語法樹
5.2.4有向無環圖
5.3表達式的翻譯
5.3.1幾個語義變量和語義函數
5.3.2表達式的通用翻譯方法
5.3.3布爾表達式的優化翻譯方法
5.4控制語句的翻譯
5.4.1if語句的翻譯
5.4.2do…while語句的翻譯
5.4.3for語句的翻譯
5.5函數定義及函數調用的翻譯
5.5.1函數調用過程
5.5.2函數調用的翻譯
5.5.3函數定義的翻譯
5.6中間代碼生成器的設計
5.7小結
5.8習題
第6章運行時存儲組織
6.1存儲組織
6.1.1程序執行時存儲器的劃分
6.1.2活動記錄
6.1.3局部數據布局
6.2函數調用
6.2.1源程序中的函數
6.2.2函數執行時的活動
6.2.3名字的作用域
6.2.4參數的傳遞
6.2.5名字的綁定
6.3存儲分配策略
6.3.1靜態存儲分配
6.3.2棧式存儲分配
6.3.3堆式存儲分配
*6.4垃圾回收機制
6.4.1可達性
6.4.2引用計數回收器
6.4.3標記清掃回收器
6.4.4復制回收器
6.5C語言程序運行時存儲實例
6.5.1內存的劃分及程序執行的總體情況
6.5.2案例程序運行時內存的變化
6.6小結
6.7習題
第7章代碼優化
7.1代碼優化概述
7.1.1代碼優化的地位
7.1.2基本塊的概念及流圖
7.2局部優化
7.2.1刪除公共子表達式
7.2.2復寫傳播
7.2.3刪除無用代碼
7.2.4代數恒等變換
7.2.5基本塊的DAG表示及優化
7.3循環優化
7.3.1循環的定義
7.3.2代碼外提
7.3.3強度削弱
7.3.4刪除歸納變量
7.4小結
7.5習題
第8章目標代碼生成
8.1目標代碼生成概述
8.1.1代碼生成器的接口
8.1.2代碼生成器應考慮的幾個問題
8.2目標機及指令系統簡介
8.2.180x86體系結構
8.2.280x86中的寄存器
8.2.380x86指令系統
8.3一個簡單的代碼生成器
8.3.1算術運算類四元式的翻譯
8.3.2關系運算類四元式的翻譯
8.3.3布爾運算類四元式的翻譯
8.3.4跳轉類四元式的翻譯
8.3.5函數相關四元式的翻譯
8.3.6簡單目標代碼生成方法
8.4基本塊的代碼生成器
8.4.1引用信息和活躍信息
8.4.2寄存器描述和地址描述
8.4.3基本塊的代碼生成
8.5從DAG生成目標代碼
8.6代碼優化及目標代碼生成器的設計
8.6.1目標代碼生成器的結構
8.6.2構成完整的匯編語言程序
8.7小結
8.8習題
附錄ASample語言定義
附錄B本書用到的所有的四元式及其含義
附錄C本書用到的所有四元式對應的匯編指令序列
參考文獻







