预购商品
书目分类
特别推荐
本書系統地闡述了編譯原理的一般理論、常用方法和實現技術。主要內容包括形式語言基礎知識、詞法分析、語法分析、中間代碼生成、代碼優化、目標代碼生成、符號表的構造和運行時存儲空間的組織等部分。本書系統性強,內容循序漸進,實例豐富。對演算法的描述深入淺出,文字簡練,通俗易懂。每章都配有各種類型的習題。
第1章 編譯簡述 1 1.1 程式的翻譯 1 1.1.1 程式設計語言 1 1.1.2 編譯器 2 1.1.3 實現高階語言的編譯方式 2 1.2 編譯器的組成 3 1.2.1 編譯器的構成 4 1.2.2 遍 5 1.2.3 編譯器前端和後端 5 1.3 編譯器的構造 5 1.4 小結 6 複習思考題 7 第2章 形式語言與詞法分析 8 2.1 字母表和符號串的基本概念 8 2.1.1 字母表和符號串 9 2.1.2 符號串的運算 10 2.2 文法和語言的形式定義 11 2.2.1 形式語言 12 2.2.2 文法的形式定義 13 2.2.3 語言的形式定義 14 2.3 語法樹與文法二義性 17 2.3.1 語法樹 17 2.3.2 文法二義性 18 2.4 文法和語言的分類 19 2.5 詞法分析的任務 20 2.5.1 詞法分析的任務描述 20 2.5.2 詞法分析器與語法分析器的介面 20 2.6 詞法分析程式的輸出形式 21 2.6.1 單詞符號的分類 21 2.6.2 詞法分析程式單詞的輸出形式 22 2.6.3 詞法錯誤 23 2.7 詞法分析程式的設計與實現 24 2.7.1 輸入和預處理功能 24 2.7.2 單詞符號的識別 25 2.7.3 狀態轉換圖 26 2.7.4 狀態轉換圖的實現 26 2.8 正規運算式與有限自動機 27 2.8.1 正規運算式與正規集 28 2.8.2 有限自動機 31 2.9 詞法分析程式的自動生成工具Lex 40 2.10 實例語言的詞法分析程式 43 2.10.1 微小語言Micro 43 2.10.2 Micro的詞法分析 43 2.11 小結 45 複習思考題 46 第3章 自頂向下語法分析 50 3.1 自頂向下分析的一般方法 51 3.2 LL(1)文法 52 3.2.1 消除左遞迴 52 3.2.2 提取左因數 53 3.3 遞迴下降分析法 58 3.4 LL(1)分析法 60 3.4.1 非遞迴預測分析器 60 3.4.2 構造預測分析表 62 3.5 預測分析中的錯誤處理 63 3.6 小結 64 複習思考題 64 第4章 自底向上語法分析 66 4.1 自底向上分析的基本概念 66 4.1.1 歸約 66 4.1.2 控制碼 67 4.1.3 用棧實現自底向上分析 68 4.1.4 移進-歸約分析的衝突 69 4.2 算符優先分析 70 4.2.1 直觀算符優先分析法 71 4.2.2 算符優先文法的定義 73 4.2.3 算符優先關係表的構造 74 4.2.4 算符優先分析演算法 75 4.2.5 優先函數 76 4.2.6 算符優先分析法的局限性 78 4.3 LR分析法 78 4.3.1 LR分析演算法 79 4.3.2 LR文法和LR分析方法的特點 81 4.3.3 構造LR(0)分析表 82 4.3.4 構造SLR(1)分析表 88 4.3.5 構造規範的LR分析表 92 4.3.6 構造LALR分析表 95 4.3.7 二義文法的應用 97 4.4 語法分析程式的自動生成工具YACC 101 4.5 實例語言編譯器的語法分析 104 4.6 小結 106 複習思考題 107 第5章 語義分析與中間代碼的生成 110 5.1 語義分析的任務 110 5.1.1 語義分析的概念 110 5.1.2 語義分析的任務 111 5.2 語法制導翻譯 111 5.2.1 屬性文法 111 5.2.2 語法制導翻譯方法 111 5.3 中間代碼 112 5.3.1 逆波蘭標記法 112 5.3.2 四元式 112 5.3.3 三元式 113 5.3.4 間接三元式 113 5.3.5 抽象語法樹 114 5.4 說明語句的翻譯 114 5.4.1 簡單說明語句的翻譯 114 5.4.2 過程中的說明 115 5.5 設定陳述式的翻譯 115 5.5.1 簡單算術運算式和設定陳述式的翻譯 115 5.5.2 陣列的翻譯 117 5.6 布林運算式的翻譯 117 5.7 控制語句的翻譯 120 5.7.1 條件陳述式if的翻譯 121 5.7.2 迴圈語句while的翻譯 122 5.7.3 三種基本控制結構的翻譯 123 5.8 程序呼叫的翻譯 124 5.9 實例編譯器的語義分析 125 5.10 小結 127 複習思考題 127 第6章 符號表管理 131 6.1 符號表的作用 131 6.1.1 收集識別字屬性資訊 131 6.1.2 符號表內容為上下文語義的合法性檢查提供依據 132 6.1.3 作為目標代碼生成階段編譯器分配位址空間的依據 132 6.2 符號表的主要內容 132 6.2.1 符號名 132 6.2.2 符號的類型 133 6.2.3 符號的存儲類型 133 6.2.4 符號的作用域及可視性 133 6.2.5 符號變數的存儲分配資訊 134 6.2.6 符號的其他屬性 136 6.3 符號表的組織 136 6.3.1 符號表的總體組織 136 6.3.2 符號表項的組織 138 6.4 符號表的管理 142 6.4.1 符號表的初始化 142 6.4.2 符號的插入 143 6.4.3 符號的查找 145 6.5 小結 146 複習思考題 146 第7章 運行時的存儲組織與分配 147 7.1 存儲組織概述 147 7.1.1 運行時記憶體的劃分 147 7.1.2 過程活動記錄 149 7.2 靜態存儲分配 150 7.3 棧式動態儲存裝置分配 151 7.3.1 棧的結構 151 7.3.2 活動樹和簡單的棧式存儲分配 151 7.3.3 嵌套過程語言的棧式實現 153 7.4 堆式動態儲存裝置分配 154 7.5 小結 156 複習思考題 156 第8章 代碼優化 158 8.1 局部優化 159 8.1.1 基本塊的劃分 159 8.1.2 利用基本塊DAG進行優化 162 8.2 迴圈優化 166 8.2.1 程式流圖 166 8.2.2 迴圈的查找 167 8.2.3 迴圈優化 169 8.3 小結 171 複習思考題 171 第9章 目標代碼生成 173 9.1 目標代碼的形式 173 9.2 假想的電腦模型 174 9.3 一個簡單的代碼生成程式 175 9.3.1 待用資訊和活躍資訊 175 9.3.2 寄存器描述和位址描述 175 9.3.3 代碼生成演算法 176 9.3.4 寄存器選擇函數 177 9.3.5 為變址和指針語句產生代碼 178 9.3.6 條件陳述式 178 9.4 小結 180 複習思考題 180 附錄A C語言實現的實例語言編譯器 181 附錄B YACC語言實現的實例語言編譯器 184 參考文獻 185
長春工業大學軟體學院教授,博士;美國ACM會員,中國電腦學會CCF會員,吉林省省政府政務大廳評標專家;發表學術論文30餘篇,其中SCI、EI檢索20餘篇;完成專著2部,出版教材近10部。
客服公告
热门活动
订阅电子报