編譯原理課程是中國人民解放軍國防科技大學建設的慕課、國家精品課程、國家級精品資源共享課、國家精品線上開放課程、國家級一流本科課程。該課程於2018年10月08日首次在中國大學MOOC開課,授課教師為王挺、唐晉韜、黃春、李莎莎、劉春林、周會平。據2021年8月中國大學MOOC官網顯示,該課程已運行7學期。
編譯原理課程共二十五章,包括語義分析和中間代碼生成、編譯程式的結構、運行時存儲空間組織、屬性文法和語法制導翻譯、符號表、高級程式設計語言、目標代碼生成等內容。
基本介紹
- 中文名:編譯原理
- 類別:慕課、國家精品課程、國家級精品資源共享課、國家精品線上開放課程、國家級一流本科課程
- 授課平台:中國大學MOOC
- 開課時間:2018年10月08日(首次)
- 授課教師:王挺、唐晉韜、黃春、李莎莎、劉春林、周會平
- 建設院校:中國人民解放軍國防科技大學
課程性質
課程定位
適應專業
課程簡介
課程大綱
第一章 引論 1.1什麼是編譯程式 1.2為什麼要學習編譯原理 1.3編譯過程 1.4編譯程式的結構 1.5編譯程式的生成 1.6小結 第二章 高級程式設計語言概述 2.1常用的高級程式設計語言 2.2程式設計語言的定義 2.3高級程式設計語言的一般特性 2.4小結 第三章 高級程式設計語言的語法描述 3.1上下文無關文法 3.2文法與語言 3.3語法樹與二義性 3.4形式語言鳥瞰 3.5小結 第四章 詞法分析1 4.1詞法分析概述 4.2詞法分析器的設計 4.3小結 第五章 詞法分析2 5.1詞法規則形式化——正規集與正規式 5.2確定有限自動機 5.3非確定有限自動機 5.4小結 第六章 詞法分析3 6.1有限自動機的等價性 6.2正規式與有限自動機的等價性 6.3詞法分析程式自動生成 第1次單元測試 第七章 語法分析——自上而下分析1 7.1自上而下分析的基本問題 7.2LL文法——消除文法的左遞歸 7.3LL文法——消除回溯 7.4FIRST和FOLLOW集合的構造 7.5小結 第八章 語法分析——自上而下分析2 8.1構造遞歸下降分析器 8.2擴充的巴科斯範式和語法圖 8.3JavaCC簡介 8.4小結 第九章 語法分析——自上而下分析3 9.1預測分析程式 9.2預測分析表的構造 9.3小結 第十章 語法分析——自下而上分析1 10.1自下而上分析 10.2短語與直接短語 10.3分析過程描述 10.4算符優先文法 10.5構造優先關係表 10.6算符優先分析算法 10.7小結 第十一章 語法分析——自下而上分析2 11.1句柄和規範歸約 11.2LR分析法 11.3小結 第十二章 語法分析——自下而上分析3 12.1活前綴 12.2構造識別活前綴的DFA 12.3構造LR分析表 12.4小結 第十三章 語法分析——自下而上分析4 13.1SLR分析法 13.2LR分析法 13.3LR分析器產生工具 | 13.4小結 第2次單元測試 第十四章 屬性文法和語法制導翻譯1 14.1屬性文法 14.2屬性計算 第十五章 屬性文法和語法制導翻譯2 15.1S-屬性文法 15.2L-屬性文法 15.3翻譯模式 15.4遞歸下降翻譯器的設計 15.5小結 第十六章 語義分析和中間代碼生成1 16.1中間語言 16.2常用的中間語言形式 16.3小結 第3次單元測試 第十七章 語義分析和中間代碼生成2 17.1賦值語句的翻譯 17.2數組元素引用的翻譯 17.3類型轉換 17.4小結 第十八章 語義分析和中間代碼生成3 18.1布爾表達式及其計算 18.2按數值表示法翻譯布爾表達式 18.3帶最佳化翻譯布爾表達式 18.4小結 第十九章 語義分析和中間代碼生成4 19.1常用的控制語句 19.2控制語句的屬性文法 19.3控制語句的屬性計算 19.4一遍掃描翻譯控制語句 19.5一遍掃描翻譯控制語句示例 19.6小結 第4次單元測試 第二十章 符號表 20.1符號表的組織與操作 20.2符號表的內容 20.3利用符號表分析名字的作用域 20.4小結 第二十一章 運行時存儲空間組織1 21.1參數傳遞 21.2目標程式運行時的活動 21.3靜態存儲管理 第二十二章 運行時存儲空間組織2 22.1動態存儲管理概述 22.2非嵌套過程語言的動態存儲管理 22.3嵌套過程語言的動態存儲管理-靜態鏈方法 22.4嵌套過程語言的動態存儲管理-Display表方法 22.5小結 第二十三章 最佳化1 23.1最佳化概述 23.2局部最佳化-基本塊劃分 23.3局部最佳化-基本塊最佳化 第二十四章 最佳化2 24.1循環最佳化概述 24.2代碼外提 24.3強度消弱 24.4小結 第二十五章 目標代碼生成 25.1目標代碼生成概述 25.2目標機器模型 25.3簡單代碼生成器 25.4待用信息和活躍信息 25.5變數地址描述和暫存器描述 25.6代碼生成與暫存器分配算法 25.7小結 第5次單元測試 |
開課信息
開課次數 | 開課時間 | 授課老師 | 學時安排 | 參與人數 |
---|---|---|---|---|
第1次開課 | 2018年10月08日-2019年01月28日 | 王挺、唐晉韜、黃春、李莎莎、劉春林、周會平 | 3-5小時每周 | 10036 |
第2次開課 | 2019年03月04日-2019年07月01日 | 8753 | ||
第3次開課 | 2019年09月02日-2020年01月19日 | 9505 | ||
第4次開課 | 2020年02月10日-2020年07月20日 | 王挺、唐晉韜、黃春、李莎莎、周會平 | 20030 | |
第5次開課 | 2020年08月31日-2021年01月25日 | 王挺、唐晉韜、黃春、李莎莎、劉春林、周會平 | 11952 | |
第6次開課 | 2021年03月01日-2021年07月26日 | 13052 | ||
第7次開課 | 2021年08月30日-2022年01月24日 | 待定 |
教學目標
學習預備
預備知識
學習資料
書名 | 作者 | 出版時間 | 出版社 |
---|---|---|---|
《程式設計語言編譯原理》 | 陳火旺、劉春林 | 2000年 | |
《Compilers: Principles, Techniques and Tools(Second Edition)》 | Alfred V. Aho、 Monica S. Lam、Ravi Sethi、Jeffrey D. Ullman | 2006年 | Pearson Education |