編譯原理(哈爾濱工業大學提供的慕課)

編譯原理(哈爾濱工業大學提供的慕課)

本詞條是多義詞,共17個義項
更多義項 ▼ 收起列表 ▲

編譯原理是哈爾濱工業大學於2017年9月4日首次在中國大學MOOC開設的慕課課程、國家精品課程。該課程授課教師為陳鄞、郭勇、塗志瑩等。截至2020年9月,據中國大學MOOC官網顯示,該課程已開課7次。

編譯原理共20講,包括緒論、程式設計語言及其文法、詞法分析、語法分析(4講)、語法制導翻譯(3講)、中間代碼生成(4講)、運行存儲分配、代碼最佳化(4講)、代碼生成。

基本介紹

  • 中文名:編譯原理
  • 開課時間:2017年9月4日(首次)
  • 授課平台:中國大學MOOC
  • 提供院校:哈爾濱工業大學
  • 類別:慕課、國家精品課
  • 授課教師:陳鄞、郭勇、塗志瑩等
課程性質,課程背景,適應對象,開課信息,課程簡介,課程大綱,課前預備,預備知識,學習資料,所獲榮譽,教師簡介,

課程性質

課程背景

世界計算機科學家Alfred V.Aho在《編譯器》的第1章第1句話寫道:“編寫編譯器的原理和技術具有普遍的意義,以至於在每個計算機科學家的研究生涯中,該書中的原理和技術都會反覆用到。”這句話點明了編譯原理該門課程在計算機專業中的重要地位。有過使用高級程式設計語言編寫程式經歷的學習者知道,當給計算機輸入一段程式以後,計算機就可以按照人們意圖去工作。由0和1構成的機器代碼才是可以被計算機直接理解的語言。因此,用高級語言編寫的程式,最終都要“翻譯”成由0和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日
待定
根據中國大學MOOC官網顯示該課程第1次至第7次開課的課時安排均為3~5小時每周。

課程簡介

編譯原理共20講,其主要講授編譯器設計與實現的主要理論和技術。其中,第1講介紹編譯原理的概念知識;第2、3講介紹程式設計語言及其文法和詞法分析內容;第4至第14講分別介紹語法分析(1~4部分)、語法制導翻譯(1~3部分)、中間代碼生成(1~4部分);第15講介紹計算機運行存儲分配的知識;第16至20講介紹代碼最佳化(1~4部分)進階內容和代碼生成的實現。

課程大綱

第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)分析
(註:課程大綱排版從左到右列

課前預備

預備知識

學習編譯原理前需要預備高級程式設計語言、數據結構、集合與圖論等專業知識。

學習資料

編譯原理的學習資料有《編譯原理(第2版):本科教學版》《編譯原理》等。
書名
作者
ISBN
出版時間
出版社
《編譯原理(第2版):本科教學版》
(美)Alfred V.Aho
9787111269298
2009年
Compilers: Principles, Techniques and Tools(Second Edition)》
Alfred V. Aho等
------
2006年
Pearson Education, Inc
《編譯原理》
蔣宗禮等
9787040290585
2010年
表格內容參考資料

所獲榮譽

2018年,編譯原理被中華人民共和國教育部認定為“國家精品線上開放課程”。

教師簡介

陳鄞,女,哈爾濱工業大學計算學部副教授、碩士生導師。
郭勇,男,哈爾濱工業大學講師。
塗志瑩,男,漢族,1983年生,工學博士,哈爾濱工業大學(威海)計算機科學與技術學院副教授、碩士生導師。

相關詞條

熱門詞條

聯絡我們