本課程主要介紹程序設(shè)計語言編譯程序構(gòu)造的基本原理和基本實現(xiàn)方法,。講授形式語言、有限自動機(jī)、自上而下和自下而上的語法分析,、LR分析方法,、屬性文法和語法制導(dǎo)翻譯,、語義分析的代碼產(chǎn)生,、存儲器的動態(tài)分配與管理,、符號表的組織與管理,、優(yōu)化問題,、代碼生成等內(nèi)容。通過本課程學(xué)習(xí),,使學(xué)生對編譯的基本概念,、原理和方法有完整的和清楚的理解,并能正確地,、熟練地運用,。
[編譯原理]
本科課程教學(xué)大綱(理工醫(yī)類/電氣學(xué)院)
課程信息 | |||
開課單位 | 電氣與計算機(jī)工程學(xué)院 | 開課學(xué)年學(xué)期 | 2020-2021學(xué)年第1學(xué)期 |
授課年級 | 18級 | 授課對象專業(yè) | 計算機(jī)專業(yè) |
課程學(xué)分 | 3 | 課程學(xué)時 | 54 |
課程性質(zhì) | ¨專業(yè)必修 t專業(yè)選修 ¨公共必修 ¨公共選修 ¨成長必修 ¨專業(yè)限選 ¨公共限選 | ||
先修課程要求 | |||
教師信息 | |||
授課教師 | 張鑒新 | 聯(lián)系電話 | 13926195522 |
答疑地點 | 2教104 | 答疑時間 | 周三14:30-15:30 |
電子郵件 |
課程負(fù)責(zé)人:張鑒新 主 審:
一、課程描述及課程目標(biāo)
(一)課程描述
本課程主要講述高級語言翻譯為計算機(jī)能執(zhí)行的代碼的原理,、過程,、方法和技術(shù),核心是介紹高級語言到匯編語言的翻譯,。讓學(xué)生理解編譯和高級語言程序之間的關(guān)系,,掌握詞法分析、語法分析、語義分析,、中間代碼生成,、代碼優(yōu)化和目標(biāo)代碼生成等各個階段的原理、方法和實現(xiàn)技術(shù),,真正認(rèn)識計算機(jī)信息處理的實質(zhì),、訓(xùn)練抽象思維能力、體驗系統(tǒng)軟件的開發(fā)過程,,進(jìn)一步提升計算機(jī)科學(xué)與技術(shù)的專業(yè)素養(yǎng),。
(二)課程目標(biāo)
1. 掌握形式語言和自動機(jī)的基本概念,理解高級語言編譯的基本原理,,并能夠?qū)⑦@些原理應(yīng)用于高級語言的設(shè)計之中,;核心能力1
2. 理解編譯程序的結(jié)構(gòu)及各個模塊的功能,利用軟件工程方法分析和設(shè)計某語言的編譯程序的各個模塊,,并能夠選擇合適的方法實現(xiàn),。核心能力2
3. 能夠理解現(xiàn)有某高級語言的編譯系統(tǒng)中各模塊的功能和實現(xiàn)方法,能夠?qū)Σ煌椒ǖ膬?yōu)劣進(jìn)行對比和分析,;核心能力3
4.能夠主動做好課前預(yù)習(xí)和課后實踐,,養(yǎng)成自主學(xué)習(xí)的意識和提高不斷學(xué)習(xí)的能力,核心能力6,。
主要知識點:
1.1 什么叫編譯原理
1.2 編譯原理概述
1.3 符號表管理
1.4 編譯各階段的分組
1.5 編譯技術(shù)的應(yīng)用
2.1 文法預(yù)備知識
2.2 文法非形式的討論
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生了解編譯原理的基本概念,掌握編譯原理的全過程,清楚各階段的工作內(nèi)容及編譯技術(shù)的應(yīng)用,。
重點:編譯原理概述,。
難點:編譯原理概述。
采用的教學(xué)方法:案例法--列舉英文翻譯中文的過程來描述編譯原理各階段.
講授學(xué)時:3學(xué)時
(二)第2講 第二章 文法和語言
主要知識點:
2.3 文法和語言的形式定義
2.4 語法樹和二義性文法
2.5 句子的分析
2.6 有關(guān)文法的實用限制
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生了解文法的基礎(chǔ)知識,掌握文法的定義,最左推導(dǎo)和最右推導(dǎo),語法樹的畫法以及文法是否具有二義性的判斷方法,。
重點:文法和語言的形式定義、語法樹和二義性文法,。
難點:文法和語言的形式定義,。
采用的教學(xué)方法:案例法--列舉了中文和英文句子的推導(dǎo)過程,從而讓學(xué)生明白文法和語言的定義.
講授學(xué)時:3學(xué)時
(三)第3講 第三章 詞法分析
主要知識點:
3.1 詞法分析程序的功能及實現(xiàn)方案
3.2 單詞的種類及詞法分析程序的輸出形式
3.3 正則文法和狀態(tài)圖
3.4 詞法分析程序的設(shè)計與實現(xiàn)
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生了解詞法分析的主要任務(wù),,掌握詞法分析程序的設(shè)計思路,正則文法和狀態(tài)圖相互轉(zhuǎn)換的方法,。
重點:正則文法和狀態(tài)圖,。
難點:正則文法和狀態(tài)圖。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(四)第4講 第三章 詞法分析
主要知識點:
3.5 正則表達(dá)式與有窮自動機(jī)
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生掌握正則表達(dá)式與有窮自動的轉(zhuǎn)換方法,。
重點:正則表達(dá)式與有窮自動機(jī)。
難點:正則表達(dá)式與有窮自動機(jī),。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(五)第5講 第三章 詞法分析
主要知識點:
3.6 正則文法、正則表達(dá)式與有窮自動機(jī)相互轉(zhuǎn)換
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生掌握正則表達(dá)式與有窮自動的轉(zhuǎn)換方法,。
重點:正則表達(dá)式與有窮自動機(jī)。
難點:正則表達(dá)式與有窮自動機(jī),。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(六)第6講 第四章 自頂向下語法分析
主要知識點:
4.1 自頂向下語法分析的思想
4.2 左遞歸和回溯問題
4.3 遞歸子程序法
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生了解自頂向下的語法分析方法,,對左遞歸和回溯的問題應(yīng)該如何解決,,掌握遞歸子程序法。
重點:左遞歸和回溯問題,、遞歸子程序法,。
難點:左遞歸和回溯問題。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(七)第7講 第四章 自頂向下語法分析
主要知識點:
4.4 LL(1)分析法
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生掌握LL(1)分析法的總控算法的基本思想,會計算FIRST,、FOLLOW集合,。
重點:計算FIRST、FOLLOW集合,。
難點:計算FIRST、FOLLOW集合,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(八)第8講 第四章 自頂向下語法分析
主要知識點:
4.4 LL(1)分析法
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生掌握LL(1)分析法的總控算法的基本思想,,會計算SELECT集合及構(gòu)造分析表,。
重點:計算SELECT集合及構(gòu)造分析表。
難點:計算SELECT集合及構(gòu)造分析表,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(九)第9講 第五章 自底向上語法分析
主要知識點:
5.1 移進(jìn)-歸約分析
5.2 簡單優(yōu)先分析法
5.3 算符優(yōu)先分析法
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生了解自底向上的語法分析思想,,掌握簡單優(yōu)先和算符優(yōu)先分析法,。
重點:簡單優(yōu)先分析法、算符優(yōu)先分析法,。
難點:算符優(yōu)先分析法,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(十)第10講 第五章 自底向上語法分析
主要知識點:
5.4 優(yōu)先函數(shù)
5.5 LR分析法
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生掌握優(yōu)先函數(shù)和算符優(yōu)先分析法,。
重點:LR分析法,。
難點:LR分析法。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(十一)第11講 第五章 自底向上語法分析
主要知識點:
5.6 SLR(1)分析法
5.5 LR(1),、LALR分析法
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生掌握SLR(1)分析法,、LR(1)和LALR分析法,。
重點:SLR(1)分析法、LR(1)分析法,。
難點:SLR(1)分析法,。
采用的教學(xué)方法:案例法。
講授學(xué)時:3學(xué)時
(十二)第12講 第六章 語法制導(dǎo)翻譯及中間代碼生成
主要知識點:
6.1 屬性文法
6.2 語法制導(dǎo)翻譯概述
6.3 中間代碼生成
6.4 簡單賦值語句翻譯
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生了解屬性文法和語法制導(dǎo)翻譯概述,,中間代碼生成的形式,理解簡單賦值語句翻譯的過程,。
重點:中間代碼生成,、簡單賦值語句翻譯。
難點:簡單賦值語句翻譯,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(十三)第13講 第六章 語法制導(dǎo)翻譯及中間代碼生成
主要知識點:
6.5 布爾表達(dá)式翻譯
6.6 條件語句翻譯
6.7 說明語句翻譯
6.8 數(shù)組和結(jié)構(gòu)翻譯
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生理解布爾表達(dá)式,、條件語句,、說明語句和數(shù)組及結(jié)構(gòu)翻譯的過程。
重點:布爾表達(dá)式翻譯,。
難點:布爾表達(dá)式翻譯,。
采用的教學(xué)方法:案例法。
講授學(xué)時:3學(xué)時
(十四)第14講 第七章 符號表管理技術(shù)&第八章 錯誤處理
主要知識點:
7.1 符號表概述
7.2 符號表組織與內(nèi)容
7.3 非分程序結(jié)構(gòu)語言的符號表組織
7.4 分程序結(jié)構(gòu)語言的符號表組織
8.1 錯誤分類
8.2 錯誤診察和報告
8.3 錯誤處理技術(shù)
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生了解符號表管理和錯誤處理技術(shù),,能夠區(qū)分非分程序結(jié)構(gòu)語言的符號表組織和分程序結(jié)構(gòu)語言的符號表組織。
重點:分程序結(jié)構(gòu)語言的符號表組織,、非分程序結(jié)構(gòu)語言的符號表組織,。
難點:分程序結(jié)構(gòu)語言的符號表組織、非分程序結(jié)構(gòu)語言的符號表組織,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(十五)第15講 第九章 目標(biāo)程序運行時的存儲組織
主要知識點:
9.1 數(shù)據(jù)空間三種不同使用方法和管理方法
9.2 棧式存儲分配
9.3 參數(shù)傳遞
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生了解目標(biāo)程序運行時的存儲組織,,掌握數(shù)據(jù)空間三種不同使用方法和管理方法和棧式存儲分配,。
重點:數(shù)據(jù)空間三種不同使用方法和管理方法,、棧式存儲分配。
難點:數(shù)據(jù)空間三種不同使用方法和管理方法,、棧式存儲分配,。
采用的教學(xué)方法:案例法。
講授學(xué)時:3學(xué)時
(十六)第16講 第十章 代碼優(yōu)化
主要知識點:
10.1 優(yōu)化的例子
10.2 基本塊優(yōu)化
10.3 循環(huán)優(yōu)化
教學(xué)要求:通過本次課程的學(xué)習(xí),,使學(xué)生了解代碼優(yōu)化的過程,,掌握簡單優(yōu)化的方法。
重點:基本塊優(yōu)化,、循環(huán)優(yōu)化,。
難點:基本塊優(yōu)化、循環(huán)優(yōu)化,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
(十七)第17講 第十一章 編譯程序生成方法和工具
主要知識點:
11.1 編譯程序的書寫語言
11.2 自編譯性
11.3 自展
11.4 編譯程序的移植
11.5 編譯程序的自動生成
教學(xué)要求:通過本次課程的學(xué)習(xí),使學(xué)生了解編譯程序的書寫語言,、自編譯性,,對編譯程序如何移植及自動生成有一定了解。
重點:自編譯性,、編譯程序的移植,、編譯程序的自動生成。
難點:編譯程序的移植,。
采用的教學(xué)方法:案例法,。
講授學(xué)時:3學(xué)時
三、課程的預(yù)期學(xué)習(xí)成果
在本門課程結(jié)束時,,學(xué)生應(yīng)該能夠:
1,、正確理解什么是編譯程序;了解編譯程序工作的基本過程及其各階段的基本任務(wù),。
2,、正確理解上下文無關(guān)文法基本概念,包括:文法的定義,、編寫、句型,、句子,、語言、語法樹,、二義性等,;理解三種參數(shù)傳遞方式:傳值、傳地址,、傳名的含義,。
3,、理解詞法分析器功能及形式;熟練掌握詞法分析器設(shè)計的原理,,掌握運用狀態(tài)轉(zhuǎn)換圖進(jìn)行詞法分析器設(shè)計,。
4、正確理解自上而下分析的基本思想,;熟練掌握遞歸下降分析基本方法:消除左遞歸,,消除回溯,構(gòu)造遞歸下降子程序,;掌握預(yù)測分析程序的基本原理和預(yù)測分析表構(gòu)造,;理解LL(1)方法的定義。正確理解自下而上語法分析的基本思想,,以及歸約,、短語、句柄,、分析樹等概念,;掌握算符優(yōu)先分析基本方法:算符優(yōu)先表和和算符優(yōu)先函數(shù)構(gòu)造技術(shù)。
5,、正確理解語法制導(dǎo)翻譯基本原理,;掌握基于屬性文法的處理方法,了解自上而下分析制導(dǎo)翻譯基本思想和實現(xiàn)方法,。熟悉常見的幾種中間語言:四元式,、三元式、逆波蘭表示,;掌握各種語句到四元式的翻譯方法,,包括:簡單算術(shù)表達(dá)式,布爾表達(dá)式,,控制語句,,數(shù)組引用,過程調(diào)用等,。
6,、理解符號表的作用及符號表組織和使用方法,了解名字的作用范圍,,了解符號表中一般應(yīng)包含的內(nèi)容,。
7、正確理解目標(biāo)程序運行進(jìn)存儲空間的使用和組織管理方式,;理解靜態(tài)分配和動態(tài)存儲分配基本思想,;掌握存儲分配的處理方式;掌握棧式動態(tài)分配中活動記錄的作用,、組織,、內(nèi)容及使用,;了解嵌套過程語言程序運行時整個運行棧的內(nèi)容的組織。
8,、正確理解代碼優(yōu)化的定義和各種可能的優(yōu)化概念,;掌握用DAG表示進(jìn)行局部優(yōu)化的方法。
9,、正確理解代碼生成過程的基本問題,,理解待用信息、寄存器描述和地址描述等概念,;掌握簡單代碼生成算法,、寄存器分配策略。
四,、 課程要求
(一)出勤
學(xué)生應(yīng)積極參與課堂教學(xué)并完成相關(guān)的作業(yè),、實驗內(nèi)容。
(二)閱讀資料
學(xué)生應(yīng)認(rèn)真進(jìn)行課前預(yù)習(xí),,閱讀教材和指定參考書及重要的參考文獻(xiàn),。
(三)課堂展示
根據(jù)時間及課堂班人數(shù),在可能的情況下安排小組實驗課程討論與效果演示,。
(四)課外實踐
本課程是理論性質(zhì)的課程,,不安排項目實踐作為課程內(nèi)容。
(五)小考與期末考
課程中隨機(jī)問答,,期末考試,。
(六)課程論文
以平時作業(yè)為主。
(七)學(xué)術(shù)誠信
按中山大學(xué)南方學(xué)院相關(guān)規(guī)定執(zhí)行,。
(八)剽竊的定義以及相應(yīng)的懲罰
剽竊是嚴(yán)重違反學(xué)校規(guī)章制度的行為,。一經(jīng)發(fā)現(xiàn),將上報相關(guān)部門,,并受到包 括開除學(xué)籍在內(nèi)的嚴(yán)厲處罰,。
五、課程資料
(一)教科書-必讀
黃賢英編著.《編譯原理及實踐教程》(第二版).清華大學(xué)出版社.2019年
(二)教科書-強(qiáng)烈推薦
張素琴,呂映芝,蔣維杜,戴桂蘭. 編譯原理[M]. 清華大學(xué)出版社, 2015.6.
勞頓. 編譯原理及實踐[M]. 機(jī)械工業(yè)出版社, 2000.
Alfred V. Aho ,,Monica S.Lam. 編譯原理. 機(jī)械工業(yè)出版社, 2009.
陳意云,張昱.編譯原理(第2版)高等教育出版社,2008
(三)文章-必讀
周靜?,, 張敏?, 崔艷利,,一種基于c語言詞法分析器的設(shè)計,,《中國水運:學(xué)術(shù)版》?, 2007 , 7 (5) :124-125
(四)文章-強(qiáng)烈推薦
胡榮貴、陳意云,、郭帆、張昱,,基于類型注解的認(rèn)證編譯器的設(shè)計與實現(xiàn),,計算機(jī)研 究與發(fā)展,,41(1),pp.28-33,,2004.1.
(五)其他參考資料
http://staff.ustc.edu.cn/~yiyun/#《編譯原理》教學(xué)資源
六,、教學(xué)活動以及對于預(yù)期學(xué)習(xí)成果的評估
1、個人預(yù)習(xí)
2,、課堂講授
3,、課堂問答
4、課后作業(yè)
5,、課后答疑
6,、期末考試
預(yù)期學(xué)習(xí)成果 | 教學(xué)活動 | 學(xué)習(xí)成果考察內(nèi)容:作業(yè)/課程實驗 |
第一章 引論 第二章 文法和語言 | 1、2,、3,、5、6 | 作業(yè):文法左右推導(dǎo)和語法樹 |
第三章 詞法分析 | 1,、2,、3、4,、5,、6 | 作業(yè):有機(jī)自動機(jī)、正則表達(dá)式與正狀方法相互轉(zhuǎn)換 設(shè)計:詞法分析器 |
第四章 自頂向下語法分析 | 1,、2,、3、4,、5,、6 | 作業(yè):LL(1)文法 |
第五章 自底向上語法分析 | 1、2,、3,、4、5,、6 | 作業(yè):優(yōu)先函數(shù) |
第六章語法制導(dǎo)翻譯和中間代碼生成 | 1,、2、3,、4,、5、6 | 作業(yè):LR(0),、SLR(1),、LR(1) |
第七章 符號表管理技術(shù) | 1、2、3,、4,、5、6 | 作業(yè):語義計算 |
第八章 錯誤處理 | 1,、2,、3、4,、5,、6 | 設(shè)計:詞法分析器 |
第九章 運行時的存儲組織及管理 | 1、2,、3,、4、5,、6 | 設(shè)計:詞法分析器 |
第十章 代碼優(yōu)化 | 1,、2、3,、4,、5、6 | 設(shè)計:詞法分析器 |
第十一章 編譯程序生成方法和工具 | 1,、2,、3、4,、5,、6 | 設(shè)計:詞法分析器 |
七、評估的程序和方法
1,、出勤率: 10 %
2,、課后作業(yè): 40 %
3、期末考試: 50 %
(二)考試內(nèi)容及要求
考試包含以下內(nèi)容:
理論部分
1. 掌握形式語言和自動機(jī)的基本概念,,理解高級語言編譯的基本原理,,并能夠?qū)⑦@些原理應(yīng)用于高級語言的設(shè)計之中(核心能力1)。
2. 理解編譯程序的結(jié)構(gòu)及各個模塊的功能,,利用軟件工程方法分析和設(shè)計某語言的編譯程序的各個模塊,,并能夠選擇合適的方法實現(xiàn)(核心能力2)。
3. 能夠理解現(xiàn)有某高級語言的編譯系統(tǒng)中各模塊的功能和實現(xiàn)方法,,能夠?qū)Σ煌椒ǖ膬?yōu)劣進(jìn)行對比和分析(核心能力3),。
綜合實踐部分
1.根據(jù)實際問題的需求,按照任務(wù)要求,,設(shè)計并完成綜合實驗(核心能力2,、3)。
2.能夠按照綜合實驗要求,按時完成綜合實驗,,了解業(yè)界在新方法與新技術(shù),,并培養(yǎng)良好的職業(yè)習(xí)慣(核心能力6)。
八,、教學(xué)進(jìn)度計劃表
周次 | 課程要點 | 理論學(xué)時 | 實驗學(xué)時 | 習(xí)題學(xué)時 |
1 | 第一章 引論 第二章 文法和語言 | 3 | ||
2 | 第二章 文法和語言
| 3 | ||
3 | 第三章 詞法分析 | 3 | ||
4 | 第三章 詞法分析 | 3 | ||
5 | 第三章 詞法分析 | 3 | ||
6 | 第四章 自頂向下語法分析 | 3 | ||
7 | 第四章 自頂向下語法分析 | 3 | ||
8 | 第四章 自頂向下語法分析 | 3 | ||
9 | 第五章 自底向上語法分析 | 3 | ||
10 | 第五章 自底向上語法分析 | 3 | ||
11 | 第五章 自底向上語法分析 | 3 | ||
12 | 第六章語法制導(dǎo)翻譯和中間代碼生成 | 3 | ||
13 | 第六章語法制導(dǎo)翻譯和中間代碼生成 | 3 | ||
14 | 第七章 符號表管理技術(shù) 第八章 錯誤處理 | 3 | ||
15 | 第九章 運行時的存儲組織及管理 | 3 | ||
16 | 第十章 代碼優(yōu)化 | 3 | ||
17 |
第十一章 編譯程序生成方法和工具 | 3 | ||
18 | 總結(jié)、答疑 | 3 | ||
19 | ||||
20 | ||||
總學(xué)時 | 54 |
注:此表一式三份,,于開學(xué)兩周內(nèi)填好,,一份送教務(wù)與科研部,一份開課單位留存,,一份自留,。