高等學校教材:編譯原理及實踐教程

高等學校教材:編譯原理及實踐教程

本書以一個編譯器的設計實現案例貫穿全書,以Sample語言為代表,利用軟體工程的思想,採取自頂向下分析設計、逐步求精的方法,從詞法分析開始,隨著教學的深入逐步對編譯程式及相關部分進行分析、設計,直至完成整個編譯器的設計。

基本介紹

  • 書名:編譯原理及實踐教程
  • 作者:黃賢英、王柯柯
  • ISBN:9787302164227
  • 定價:25元
  • 出版社:清華大學出版社
  • 出版時間:2009-3-27
  • 裝幀:平裝
  • 開本:16
圖書簡介,圖書前言,圖書目錄,

圖書簡介

本書以提高學生的軟體開發能力為目標,除了介紹與編譯有關的基礎知識外,更注重介紹設計、開發編譯程式的過程、方法和技術。本書強調理論和實踐相結合,主要從實用性和可操作性的角度把握; 內容豐富,文字精練,重點突出,不求大而全,但求簡而精。本書面向普通高校計算機專業的本科學生,也可作為自學考試教材及讀者自學的參考書。

圖書前言

編譯原理”是計算機及其相關專業的重要專業基礎課,主要研究設計和構造編譯程式的原理和方法。編譯原理蘊涵著計算機學科中解決問題的思路、形式化問題和解決問題的方法,對套用軟體和系統軟體的設計與開發有一定的啟發和指導作用,編譯程式構造的原理和技術在軟體工程、語言轉換等許多領域中有著廣泛套用。
本書主要面向一般本科院校,理論學時為40~48學時,壓縮了編譯課程中的理論部分,刪除了實用意義不大的編譯方法。以程式編譯的五個主要階段——詞法分析、語法分析、中間代碼生成、代碼最佳化和目標代碼生成為線索,重點放在設計與構造編譯程式及各個組成部分的軟體技術和實用方法上。通過本課程的教學,可以使學生建立一個較為完整的編譯系統的模型,掌握各個階段的基本算法、常用的編譯技術和方法,為今後從事套用軟體和系統軟體的開發打下一定的理論和實踐基礎。
本書的特色主要有:
(1) 力求將基本概念、基本原理和實現方法的思路闡述清楚,條理清晰,通俗易懂;
(2) 為便於自學,書中引入典型例題,以實例形式講解理論,加強學生對理論的理解,並配以大量習題,以鞏固所學的知識,並提供了參考答案;
(3) 為切實做到理論聯繫實際,便於讀者更深刻地理解編譯程式的實現過程,以Sample語言為例,貫穿本書的各個章節,重點介紹Sample語言的編譯程式在各個階段的具體實現技術和構造方法,並給出了部分程式框架;
(4) 本書注重實際套用,配套軟體實現了Sample語言的詞法分析、語法分析、語法制導的翻譯以及本書涉及到的各種核心算法,形象生動地展示了編譯程式的分析過程。教師可將該軟體用作課堂教學演示,也可用作“編譯原理”課程作業的參考實例,作為學生編譯課程的實訓內容;學生可以通過該軟體自學,在課後反覆觀看揣摩,並嘗試實現其中的部分內容。 加*的章節為可選內容,請教師根據具體情況選擇。
本書的第1、3~5、8章由黃賢英編寫,第2、6、7章由王柯柯編寫。劉恆洋、曹瓊老師為本書的配套軟體做了大量工作,楊武、劉潔老師為本書的編寫提供了寶貴建議,在此一併表示衷心感謝。
本書配套的電子教案已經過作者多年教學試用,重點突出,脈絡清晰,教學效果良好。此外,本書提供的配套軟體可在Windows 2000/XP等環境下運行,下載後直接安裝即可使用。這些資源均可從清華大學出版社網站的相關網頁上下載。

圖書目錄

第1章概述
1.1程式設計語言與翻譯程式
1.2編譯過程和編譯程式的結構
1.2.1編譯過程概述
1.2.2編譯程式的結構
1.2.3編譯階段的組合
1.3編譯程式的構造
1.3.1編譯程式的構造與生成
1.3.2Sample語言編譯程式的設計
1.4編譯程式的發展及套用
1.4.1編譯程式的發展
1.4.2為什麼要學習編譯原理及其構造技術
1.4.3編譯技術的套用
1.5小結
1.6習題
第2章形式語言基本知識
2.1符號和符號串
2.2上下文無關文法及其語言
2.2.1上下文無關文法
2.2.2推導、句型和語言
2.3語法樹和文法的二義性
2.3.1語法分析樹
2.3.2文法的二義性
2.4文法的分類
2.5類Pascal語言Sample的簡單介紹
2.5.1Sample語言字元集的定義
2.5.2Sample語言單詞的定義
2.5.3Sample語言數據類型的定義
2.5.4Sample語言表達式的定義
2.5.5Sample語言語句的定義
2.5.6Sample語言程式的定義
2.5.7符合Sample語言定義的源程式舉例
2.6小結
2.7習題
第3章詞法分析
3.1詞法分析的任務和功能
3.1.1詞法分析的功能
3.1.2單詞的類型和類別碼
3.2詞法分析器的設計
3.2.1詞法分析器的接口
3.2.2詞法分析程式的總體設計
3.2.3詞法分析程式的詳細設計
3.2.4單詞的識別和狀態轉換圖
3.2.5符號表及其操作
3.2.6詞法分析階段的錯誤處理
3.3正規文法、正規式與有窮自動機
3.3.1正規文法
3.3.2正規式
3.3.3有窮自動機
3.3.4正規文法與有窮自動機的等價性
3.3.5正規式與有窮自動機的等價性
3.4詞法分析器的自動產生
3.4.1Lex的概述
3.4.2Lex源檔案的格式
3.4.3Lex源檔案中正規式的約定
3.4.4Lex源檔案的翻譯規則
3.4.5Lex源程式設計舉例
3.4.6Lex使用中的一些注意事項
3.4.7使用Lex自動生成Sample語言的詞法分析器
3.5小結
3.6習題
第4章語法分析
4.1語法分析概述
4.2自上而下分析面臨的問題及其解決方法
4.2.1確定的自上而下分析面臨的兩個問題
4.2.2左遞歸的消除
4.2.3回溯的消除
4.2.4LL(1)文法
4.3確定的自上而下的分析方法
4.3.1遞歸下降分析法
4.3.2預測分析法
4.4Sample語言自上而下語法分析程式的設計
4.5自下而上語法分析的思想
4.5.1“移進歸約”分析方法
4.5.2規範歸約與句柄
4.6算符優先分析
4.6.1算符優先文法
4.6.2算符優先表的構造
4.6.3算符優先分析方法
*4.6.4算符優先函式
4.7LR分析法
4.7.1LR分析概述
4.7.2LR(0)分析
4.7.3SLR(1)分析
*4.7.4LR(1)分析
*4.7.5LALR(1)分析
*4.7.6二義文法在LR分析中的套用
4.8語法分析器的自動生成工具Yacc
4.8.1Yacc概述
4.8.2Yacc源檔案的格式
4.8.3Yacc的翻譯規則
4.8.4Yacc的輔助程式
4.9語法分析程式中的錯誤處理
4.9.1語法分析中的錯誤處理的一般原則
4.9.2自上而下語法分析的錯誤處理
4.9.3自下而上語法分析的錯誤處理
4.10小結
4.11習題
第5章語義分析和中間代碼生成
5.1靜態語義檢查
5.2中間代碼的形式
5.2.1逆波蘭式
5.2.2三地址代碼
5.3屬性文法和語法制導的翻譯
5.3.1屬性文法
5.3.2綜合屬性
5.3.3繼承屬性
5.3.4語法制導的翻譯方法
5.4常見語句的語法制導的翻譯
5.4.1常量說明語句的翻譯
5.4.2變數說明語句的翻譯
5.4.3簡單算術表達式和賦值語句的翻譯
5.4.4布爾表達式的翻譯
5.4.5IF語句的翻譯
5.4.6REPEAT語句的翻譯
5.4.7FOR語句的翻譯
5.5Sample語言語法制導的翻譯程式的設計
5.6小結
5.7習題
第6章運行時存儲空間的組織
6.1源程式及其目標程式執行時的活動
6.1.1源程式中的過程
6.1.2過程執行時的活動
6.1.3名字的作用域
6.1.4參數的傳遞
6.1.5名字的綁定
6.2程式執行時的存儲器組織
6.2.1程式執行時存儲器的劃分
6.2.2局部數據區的內容
6.2.3存儲分配策略
6.3靜態存儲分配
6.3.1靜態存儲分配的性質
6.3.2靜態存儲分配的實現
6.3.3臨時變數的地址分配
6.4棧式存儲分配
6.5堆式存儲分配
6.6小結
6.7習題
第7章代碼最佳化
7.1概述
7.1.1代碼最佳化器的結構及所處的地位
7.1.2最佳化的原則
7.1.3最佳化的主要種類
7.1.4基本塊的概念及流圖
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.2目標機器
8.3簡單的代碼生成算法
8.3.1中間代碼的簡單翻譯方法
8.3.2引用信息和活躍信息
8.3.3暫存器描述和地址描述
8.3.4基本塊的代碼生成算法
8.4從DAG生成目標代碼
8.5Sample語言代碼最佳化及目標代碼生成器的設計
8.6小結
8.7習題
參考文獻

相關詞條

熱門詞條

聯絡我們