商品簡介
作者簡介
序
“編譯原理”是一門研究設計和構造編譯程序原理和方法的課程,是計算機類各專業必備的一門重要專業基礎課。這門課程蘊含著計算機科學中分析解決問題的思路、形式化問題和解決問題的方法,對應用軟件和系統軟件的設計與開發有一定的啟發和指導作用;編譯程序構造的原理和技術在軟件工程、逆向工程、軟件再工程、語言翻譯、搜索引擎及其他領域中有著廣泛的應用。
計算機程序如何從源代碼變換成能執行的機器碼?本書主要介紹設計和構造編譯程序的一般原理、基本方法和主要實現技術。通過本課程的學習,使學生掌握編譯系統的結構劃分、工作流程及編譯程序各組成部分的設計原理和常用的編譯技術和方法;另外,書中編譯器的實驗環節,學生需要靈活運用數據結構、匯編語言、自動機理論等多門課程的知識,是培養鍛煉學生解決實際問題能力的重要環節。有誰能想到當年編譯器中詞法自動生成工具Flex的作者之一埃裡克·施密特能當上穀歌的CEO,現在Alphabet公司(穀歌母公司)的董事長希望編譯原理課程為讀者今後從事應用軟件和系統軟件的開發打下一定的理論和實踐基礎。
在本書編寫過程中,充分考慮本課程的特點,力求將基本概念、基本原理和實現方法的思路闡述清楚、條理清晰、通俗易懂、便於自學,為了幫助學生掌握每章的重點和難點,每章附有小結、自測練習題和習題,書末附有自測練習題和習題參考答案。
本教材參考學時數為60~70學時,書中主要算法、例題、習題均以C語言為背景,其主要內容包括:編譯程序結構及各部分功能、文法和語言的基本概念和表示、詞法分析、語法分析、屬性文法與語法制導翻譯技術、符號表、運行時存儲空間的組織、代碼優化與目標代碼生成、並行編譯技術概述等。
“編譯原理”是一門實踐性較強的課程,為了理論聯繫實際,本書在附錄C中擬定了實驗內容、要求及實驗參考算法,並給出了相應的編譯實驗程序的C語言框架。附錄A、附錄B中介紹的自動生成工具也能快速搭建編譯器程序框架。
為了方便教學,本書提供電子課件及實驗源代碼,歡迎任課老師登錄華信教育資源網http://www.hxedu.com.cn免費註冊下載。
這次修訂,除保持第3版簡明、實用的風格並在文字上作進一步潤飾之外,我們作了下面的修改:
(1) 增加了46節“語法分析程序的編寫方法”;
(2) 修改了附錄A詞法分析程序生成器Lex,對自動生成工具Flex的工作流程、文件格式、規則匹配模式進行了詳細描述,並配上示例。
(3) 修改了附錄B語法分析程序生成器YACC,在語法分析自動生成部分,針對工具Bison增加了工作流程、Flex與Bison的聯合使用,並對不同操作系統環境中安裝、運行工具的方法進行歸納。讀者可以按附錄A、附錄B中的介紹,實現下載、安裝並使用自動生成工具,完成詞法、語法分析實驗。
以學習本課程總學時為64學時(52學時講課+12學時上機實驗)為例,建議各章的學時分配如下表所示。
受第3版作者的委託,參加本次修訂工作的有劉銘、駱婷、徐麗萍、祝建華。在本書再版過程中,特別感謝胡倫俊老師的支持;還得到了華中科技大學計算機學院領導的關心和支持,感謝徐蘭芳、周時陽等老師的寶貴意見;電子工業出版社的編輯和有關同志為本書的編輯再版付出了辛勤的勞動,在此對他們表示衷心的感謝。在成書過程中,編者參考了書末所列出的有關文獻,在此,向這些書籍的作者一併表示感謝。
由於編者水平有限,書中難免有些疏忽和錯誤,懇請讀者批評指正。
編者于華中科技大學計算機學院
目次
11翻譯程序與編譯程序
12編譯過程和編譯程序的基本結構
13編譯程序的生成方法
14編譯技術在軟件開發中的應用
本章小結
擴展閱讀
自測練習題1
習題1
第2章文法和語言的基本知識
21概述
22字母表和符號串的基本概念
221字母表和符號串
222符號串的運算
23文法和語言的形式定義
231形式語言
232文法的形式定義
233語言的形式定義
234規範推導和規範歸約
235遞歸規則與文法的遞歸性
24短語、直接短語和句柄
241短語和直接短語
242句柄
25語法樹與文法的二義性
251推導和語法樹
252文法的二義性
253文法二義性的消除
26文法和語言的分類
27有關文法的實用限制和變換
本章小結
擴展閱讀
自測練習題2
習題2
第3章詞法分析與有窮自動機
31詞法分析程序的功能
32單詞符號及輸出單詞的形式
321語言的單詞符號
322詞法分析程序輸出單詞的形式
33語言單詞符號的兩種定義方式
331正規式與正規集
332正規文法與正規式
34正規式與有窮自動機
341確定有窮自動機(DFA)
342非確定有窮自動機(NFA)
343由正規表達式R構造NFA
344NFA確定化為DFA的方法
345DFA的化簡
346有窮自動機到正規式的轉換
35正規文法與有窮自動機
351右線性正規文法到有窮自動機的轉換方法
352左線性正規文法到有窮自動機的轉換方法
353有窮自動機到正規文法的轉換方法
36詞法分析程序的編寫方法
本章小結
擴展閱讀
自測練習題3
習題3
第4章語法分析
41語法分析程序的功能
42自上而下分析法
421非確定的自上而下分析法的思想
422文法的左遞歸性和回溯的消除
423某些非LL(1)文法到LL(1)文法的改寫
424遞歸下降分析法
425預測分析法與預測分析表的構造
43自下而上分析法的一般原理
44算符優先分析法
441方法概述
442算符優先文法的定義
443算符優先關係表的構造
444算符優先分析算法的設計
445優先函數的構造
446算符優先分析法的局限性
45LR分析法
451LR分析器的工作原理和過程
452LR(0)分析法
453SLR(1)分析法
454LR(1)分析法
455LALR(1)分析法
456LR分析法對二義性文法的應用
457LR語法分析中的錯誤恢復技術
46語法分析程序的編寫方法
本章小結
擴展閱讀
自測練習題4
習題4
第5章語法制導翻譯技術和中間代碼生成
51概述
52屬性文法
53語法制導翻譯概述
54中間語言
541逆波蘭式
542三元式和樹形表示
543四元式和三地址代碼
55自下而上語法制導翻譯
551簡單算術表達式和賦值語句的翻譯
552布爾表達式的翻譯
553控制語句的翻譯
554循環語句的翻譯
555簡單說明語句的翻譯
556含數組元素的賦值語句的翻譯
557過程和函數調用語句的翻譯
56遞歸下降語法制導的翻譯
本章小結
擴展閱讀
自測練習題5
習題5
第6章符號表的組織與管理
61符號表的作用
62符號表的組織
63符號表的建立和查找
本章小結
擴展閱讀
自測練習題6
習題6
第7章代碼優化
71優化概述
72局部優化
721劃分基本塊的方法
722基本塊的DAG表示
723利用DAG進行基本塊的優化處理
73循環優化
731程序流圖與循環
732循環查找
733循環優化
74窺孔優化
本章小結
擴展閱讀
自測練習題7
習題7
第8章運行時的存儲組織與管理
81概述
82靜態存儲分配
83棧式存儲分配
831簡單棧式存儲分配
832嵌套過程的棧式存儲分配
84堆式存儲分配
85臨時變量的存儲分配
本章小結
擴展閱讀
自測練習題8
習題8
第9章目標代碼生成
91概述
92假想的計算機模型
93簡單代碼生成器
931待用信息與活躍信息
932代碼生成算法
933寄存器的分配
94代碼生成器的自動生成技術
本章小結
擴展閱讀
自測練習題9
習題9
第10章並行編譯技術基本常識
101並行編譯技術的引入
102並行編譯系統的功能和結構
1021並行編譯系統的功能
1022並行編譯系統的結構
103向量語言編譯技術
1031向量語法處理
1032向量結構優化
104共享存儲器並行機並行編譯技術
1041預編譯
1042可再入的目標代碼
本章小結
習題10
附錄A詞法分析程序生成器Lex
A1詞法分析程序生成器Lex簡介
A2Lex輸入文件的格式
A3正規表達式的Lex約定
A4Lex源程序中的規則部分
A5Flex的命令選項
A6Lex程序示例
附錄B語法分析程序生成器YACC
B1語法分析程序YACC簡介
B2YACC輸入文件的格式
B3YACC各部分的書寫格式
B31定義部分
B32規則部分
B33輔助程序部分
B4YACC的內置名稱和定義機制
B5Flex與Bison的聯合使用
附錄C編譯程序實驗
C1詞法分析
C11實驗目的
C12實驗要求
C13詞法分析程序的算法思想
C14詞法分析程序的C語言程序框架
C2語法分析
C21實驗目的
C22實驗要求
C23語法分析程序的算法思想
C24語法分析程序的C語言程序框架
C3語義分析
C31實驗目的
C32實驗要求
C33語義分析程序的C語言程序框架
C4算符優先分析法
C5實驗實例
C6正規式轉換成自動機的圖形表示
C61實驗目的
C62實驗要求
C63參考設計思路
C64參考算法
附錄D自測練習題與習題參考答案
參考文獻
主題書展
更多主題書展
更多書展本週66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。