基本介紹
- 中文名:編譯原理
- 開課時間:2017年9月4日(首次)
- 授課平台:中國大學MOOC
- 提供院校:哈爾濱工業大學
- 類別:慕課、國家精品課
- 授課教師:陳鄞、郭勇、塗志瑩等
課程性質
課程背景
適應對象
開課信息
開課次數 | 開課時間 | 授課教師 | 參與人數 |
---|---|---|---|
第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日 | 待定 | |
根據中國大學MOOC官網顯示該課程第1次至第7次開課的課時安排均為3~5小時每周。 |
課程簡介
課程大綱
第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年 | |
表格內容參考資料 |