-
編譯原理
(哈爾濱工業大學提供的慕課)
鎖定
- 中文名
- 編譯原理
- 開課時間
- 2017年9月4日(首次)
- 授課平台
- 中國大學MOOC
- 提供院校
- 哈爾濱工業大學
- 類 別
- 慕課、國家精品課
- 授課教師
- 陳鄞、郭勇、塗志瑩等
編譯原理課程性質
編譯原理課程背景
世界計算機科學家Alfred V.Aho在《編譯器》的第1章第1句話寫道:“編寫編譯器的原理和技術具有普遍的意義,以至於在每個計算機科學家的研究生涯中,該書中的原理和技術都會反覆用到。”這句話點明瞭編譯原理該門課程在計算機專業中的重要地位。有過使用高級程序設計語言編寫程序經歷的學習者知道,當給計算機輸入一段程序以後,計算機就可以按照人們意圖去工作。由0和1構成的機器代碼才是可以被計算機直接理解的語言。因此,用高級語言編寫的程序,最終都要“翻譯”成由0和1構成的機器代碼才可以在計算機上執行,這一翻譯過程,就稱為編譯。
[1]
編譯原理適應對象
編譯原理開課信息
開課次數 | 開課時間 | 授課教師 | 參與人數 |
---|---|---|---|
第1次開課 | 2017年09月04日~2017年12月31日 | 陳鄞、郭勇 | 10399 |
第2次開課 | 2018年03月05日~2018年07月31日 | 16424 | |
第3次開課 | 2018年09月03日~2018年12月31日 | 陳鄞、郭勇、塗志瑩、黃誠 | 11272 |
第4次開課 | 2019年02月18日~2019年07月31日 | 陳鄞、郭勇、塗志瑩 | 17757 |
第5次開課 | 2019年09月02日~2019年12月31日 | 14153 | |
第6次開課 | 2020年02月24日~2020年07月31日 | 14168 | |
第7次開課 | 2020年08月31日~2021年01月31日 | 待定 | |
編譯原理課程簡介
編譯原理共20講,其主要講授編譯器設計與實現的主要理論和技術。其中,第1講介紹編譯原理的概念知識;第2、3講介紹程序設計語言及其文法和詞法分析內容;第4至第14講分別介紹語法分析(1~4部分)、語法制導翻譯(1~3部分)、中間代碼生成(1~4部分);第15講介紹計算機運行存儲分配的知識;第16至20講介紹代碼優化(1~4部分)進階內容和代碼生成的實現。
[1]
編譯原理課程大綱
第1講 緒論 | 4-14LALR分析法 | 6-9控制流語句的回填 |
1-1什麼是編譯 | 4-15二義性文法的LR分析 | 6-10switch語句的翻譯 |
1-2編譯系統的結構 | 本講課程講義(PPT文檔) | 6-11過程調用語句的翻譯 |
1-3詞法分析概述 | 4-16LR分析中的錯誤處理 | 本講模擬練習題(不計分) |
1-4語法分析概述 | 本講模擬練習題(不計分) | 本講課程講義(PDF文檔) |
1-5語義分析概述 | 本講課程講義(PDF文檔) | 第14講測驗(計分) |
1-6中間代碼生成及編譯器後端概述 | 【討論7-1】為什麼合併同心項集不會產生移進-歸約衝突? | 本講課程講義(PPT文檔) |
本講模擬練習題(不計分) | 【討論7-2】為什麼LALR分析法不會作錯誤的移進操作? | 第15講 運行存儲分配 |
本講課程講義(PDF文檔) | 第7講測驗(計分) | 7-1運行存儲分配概述 |
【討論1-1】編譯過程與人工翻譯過程之間的關係 | 第8講 語法制導翻譯1 | 7-2靜態存儲分配 |
【討論1-2】符號表中NAME字段的設計 | 5-1語法制導翻譯概述 | 7-3棧式存儲分配 |
第1講測驗(計分) | 5-2語法制導定義SDD | 7-4調用序列和返回序列 |
本講課程講義(PPT文檔) | 5-3SDD的求值順序 | 7-5非局部數據的訪問 |
第2講 程序設計語言及其文法 | 5-4S-屬性定義與L-屬性定義 | 7-6符號表 |
2-1基本概念 | 本講模擬練習題(不計分) | 7-7符號表的建立 |
2-2文法的定義 | 本講課程講義(PDF文檔) | 本講模擬練習題(不計分) |
2-3語言的定義 | 【討論8-1】如何表示語義信息? | 本講課程講義(PDF文檔) |
2-4文法的分類 | 【討論8-2】如何計算語義屬性? | 【討論15-1】如何基於符號表構造訪問鏈? |
2-5CFG的分析樹 | 【討論8-3】如何判定一個屬性是綜合屬性還是繼承屬性? | 【討論15-2】如何基於符號表訪問非局部數據? |
本講模擬練習題(不計分) | 【討論8-4】什麼樣的SDD可以保證存在對其屬性進行計算的順序? | 第15講測驗(計分) |
本講課程講義(PDF文檔) | 本講課程講義(PPT文檔) | 本講課程講義(PPT文檔) |
【討論2-1】計算機中是如何表示語言的? | 【討論8-5】為什麼S-SDD與L-SDD能夠保證存在屬性計算順序? | 第16講 代碼優化1 |
【討論2-2】每一類單詞可否看成一種語言? | 第8講測驗(計分) | 本講課程講義(PPT文檔) |
第2講測驗(計分) | 第9講 語法制導翻譯2 | 8-1流圖 |
本講課程講義(PPT文檔) | 本講課程講義(PPT文檔) | 8-2常用的代碼優化方法(一) |
第3講 詞法分析 | 5-5語法制導翻譯方案SDT | 8-3常用的代碼優化方法(二) |
3-1正則表達式 | 5-6在非遞歸的預測分析過程中進行翻譯 | 8-4基本塊的優化 |
3-2正則定義 | 本講模擬練習題(不計分) | 本講模擬練習題(不計分) |
3-3有窮自動機 | 本講課程講義(PDF文檔) | 本講課程講義(PDF文檔) |
3-4有窮自動機的分類 | 【討論9-1】為什麼S-SDD的SDT可以在語法分析的過程中同時實現? | 第16講測驗(計分) |
3-5從正則表達式到有窮自動機 | 【討論9-2】非遞歸預測分析器的擴展 | 第17講 代碼優化2 |
3-6從NFA到DFA的轉換 | 第9講測驗(計分) | 本講課程講義(PPT文檔) |
3-7識別單詞的DFA | 第10講 語法制導翻譯3 | 8-5數據流分析 |
本講模擬練習題(不計分) | 本講課程講義(PPT文檔) | 8-6到達定值分析 |
本講課程講義(PDF文檔) | 5-7在遞歸的預測分析過程中進行翻譯 | 8-7到達定值方程的計算 |
第3講測驗(計分) | 5-8L-屬性定義的自底向上翻譯 | 本講模擬練習題(不計分) |
本講課程講義(PPT文檔) | 本講模擬練習題(不計分) | 本講課程講義(PDF文檔) |
第4講 語法分析1 | 本講課程講義(PDF文檔) | 第17講測驗(計分) |
4-1自頂向下分析概述 | 【討論10-1】遞歸預測分析器的擴展 | 第18講 代碼優化3 |
4-2文法轉換 | 【討論10-2】文法及翻譯方案的修改 | 本講課程講義(PPT文檔) |
4-3LL(1)文法 | 第10講測驗(計分) | 8-8活躍變量分析 |
本講模擬練習題(不計分) | 第11講 中間代碼生成1 | 8-9可用表達式分析 |
本講課程講義(PDF文檔) | 6-1類型表達式 | 本講模擬練習題(不計分) |
4-4FIRST集和FOLLOW集的計算 | 6-2聲明語句的翻譯 | 本講課程講義(PDF文檔) |
本講課程講義(PPT文檔) | 本講模擬練習題(不計分) | 第18講測驗(計分) |
第4講測驗(計分) | 本講課程講義(PDF文檔) | 第19講 代碼優化4 |
第5講 語法分析2 | 【討論11-1】如何計算數組的類型表達式及數組寬度? | 本講課程講義(PPT文檔) |
4-5遞歸的預測分析法 | 第11講測驗(計分) | 8-10支配結點和回邊 |
4-6非遞歸的預測分析法 | 本講課程講義(PPT文檔) | 8-11自然循環及其識別 |
4-7預測分析中的錯誤處理 | 第12講 中間代碼生成2 | 8-12刪除全局公共子表達式和複製語句 |
本講模擬練習題(不計分) | 6-3簡單賦值語句的翻譯 | 8-13代碼移動 |
本講課程講義(PDF文檔) | 6-4數組引用的翻譯 | 8-14作用於歸納變的強度削弱 |
第5講測驗(計分) | 本講模擬練習題(不計分) | 8-15歸納變量的刪除 |
本講課程講義(PPT文檔) | 本講課程講義(PDF文檔) | 本講模擬練習題(不計分) |
第6講 語法分析3 | 【討論12-1】數組元素尋址的翻譯 | 本講課程講義(PDF文檔) |
本講課程講義(PPT文檔) | 第12講測驗(計分) | 第19講測驗(計分) |
4-8自底向上分析概述 | 本講課程講義(PPT文檔) | 第20講 代碼生成 |
4-9LR分析法概述 | 第13講 中間代碼生成3 | 本講課程講義(PPT文檔) |
4-10LR(0)分析 | 本講課程講義(PPT文檔) | 9-1代碼生成器的主要任務 |
4-11LR(0)分析表構造算法 | 6-5控制流語句及其SDT | 9-2一個簡單的目標機模型 |
本講模擬練習題(不計分) | 6-6布爾表達式及其SDT | 9-3指令選擇 |
本講課程講義(PDF文檔) | 6-7控制流翻譯的例子 | 9-4寄存器的選擇 |
【討論6-1】下推自動機與有窮自動機之間的關係 | 本講模擬練習題(不計分) | 9-5寄存器選擇函數getReg的設計 |
【討論6-2】LR語法分析棧中狀態信息與文法符號信息之間的關係 | 本講課程講義(PDF文檔) | 9-6窺孔優化 |
第6講測驗(計分) | 第13講測驗(計分) | 本講模擬練習題(不計分) |
第7講 語法分析4 | 第14講 中間代碼生成4 | 本講課程講義(PDF文檔) |
4-12SLR分析 | 6-8布爾表達式的回填 | 第20講測驗(計分) |
4-13LR(1)分析 |
編譯原理課前預備
編譯原理預備知識
編譯原理學習資料
書名 | 作者 | ISBN | 出版時間 | 出版社 |
---|---|---|---|---|
《編譯原理(第2版):本科教學版》 | (美)Alfred V.Aho | 9787111269298 | 2009年 | |
《Compilers: Principles, Techniques and Tools(Second Edition)》 | Alfred V. Aho等 | ------ | 2006年 | Pearson Education, Inc |
《編譯原理》 | 蔣宗禮等 | 9787040290585 | 2010年 | |
編譯原理所獲榮譽
2018年,編譯原理被中華人民共和國教育部認定為“國家精品在線開放課程”。
[10]
編譯原理教師簡介
- 參考資料
-
- 1. 編譯原理7 .中國大學MOOC[引用日期2020-09-24]
- 2. 編譯原理1 .中國大學MOOC[引用日期2020-09-24]
- 3. 編譯原理2 .中國大學MOOC[引用日期2020-09-24]
- 4. 編譯原理3 .中國大學MOOC[引用日期2020-09-24]
- 5. 編譯原理4 .中國大學MOOC[引用日期2020-09-24]
- 6. 編譯原理5 .中國大學MOOC[引用日期2020-09-24]
- 7. 編譯原理6 .中國大學MOOC[引用日期2020-09-24]
- 8. 編譯原理 第2版 本科教學版——(美)Alfred V.Aho/趙建華譯 .機械工業出版社[引用日期2020-09-24]
- 9. 編譯原理 .國家圖書館[引用日期2020-09-24]
- 10. 教育部關於公佈2018年國家精品在線開放課程認定結果的通知 .中華人民共和國教育部政府門户網站[引用日期2020-09-24]
- 11. 碩士生導師 .哈爾濱工業大學計算機學部[引用日期2020-09-25]
- 12. 哈爾濱工業大教師簡介 .中國大學MOOC[引用日期2020-09-25]
- 13. 塗志瑩 .哈爾濱工業大學教師個人主頁[引用日期2020-09-25]
- 收起