《編譯原理》教學(xué)大綱
課程名稱:
| 編譯原理
|
|
|
課程編號:
| 408018
| 436013
|
|
適用專業(yè):
| 計算機(jī)科學(xué)與技術(shù)
| 軟件工程
|
|
課程類別:
| 專業(yè)必修課
| 專業(yè)必修課
|
|
課程學(xué)分:
| 3
|
|
|
總學(xué)時:
| 54
|
|
|
其中:理論學(xué)時
| 38
|
|
|
實(shí)驗(yàn)學(xué)時
| 16
|
|
|
先修課程:
| 數(shù)據(jù)結(jié)構(gòu)、匯編程序設(shè)計、微機(jī)原理、操作系統(tǒng)原理、高等代數(shù)
|
一、課程的性質(zhì)、目的與任務(wù)
本課程是計算機(jī)專業(yè)的重要專業(yè)課之一,主要介紹程序設(shè)計語言編譯構(gòu)造的基本原理和基本實(shí)現(xiàn)方法。本課程主要講授形式語言、有限自動機(jī)、自上而下和自下而上的語法分析、LR分析方法、屬性文法和語法制導(dǎo)翻譯、語義分析的蹭代碼產(chǎn)生、存儲器的動態(tài)分配與管理、符號表的組織與管理、優(yōu)化問題、代碼生成等內(nèi)容。
本課程學(xué)生應(yīng)掌握以下基本概念和原理,語言和文法、正規(guī)式、有限狀態(tài)自動機(jī)、遞歸下降分析、算符優(yōu)先分析、SLR文法、代碼生成、代碼優(yōu)化。本課程的重點(diǎn)是突出基本概念、基本原理及算法,通過課堂教學(xué)與實(shí)踐環(huán)節(jié)的訓(xùn)練,使學(xué)生掌握編譯實(shí)現(xiàn)的基本方法和技術(shù)。
二、課程教學(xué)基本內(nèi)容與要求
第一章:引論
(一)基本教學(xué)內(nèi)容
1.1 什么叫編譯程序
1.2 編譯過程概述
1.3 編譯程序的結(jié)構(gòu)
1.4 編譯程序與程序設(shè)計環(huán)境
1.5 編譯程序的生成
(二)基本要求
教學(xué)目的:理解編譯程序、匯編程序、匯編語言程序、解釋程序、翻譯程序、源程序、目標(biāo)程序等概念及相互關(guān)系;掌握編譯程序的工作過程和編譯程序的總體框架,理解編譯程序的幾種構(gòu)造方法
重點(diǎn):編譯過程和編譯程序的結(jié)構(gòu)
難點(diǎn):編譯過程
第二章:高級語言及其語法描述
(一)基本教學(xué)內(nèi)容
2.1 程序語言的定義
2.2 高級語言的一般特性
2.3 程序語言的語法描述
(二)基本要求
教學(xué)目的:理解文法、推導(dǎo)、歸約、語言的概念,了解文法的分類;熟練掌握語法樹與文法的二義性
重點(diǎn):上下文無關(guān)文法和正規(guī)文法,各種推導(dǎo)與歸約、語法,語義,文法的構(gòu)造
難點(diǎn):文法和語言的定義
第三章:詞法分析
(一)基本教學(xué)內(nèi)容
3.1 對詞法分析器的要求
3.2 詞法分析器的設(shè)計
3.3 正規(guī)表達(dá)式與有限自動機(jī)
3.4 詞法分析器的自動生成
(二)基本要求
教學(xué)目的:了解掃描器的功能,了解掃描器與語法分析程序的接口;理解狀態(tài)轉(zhuǎn)換圖與DFA的關(guān)系;掌握NFA到DFA的轉(zhuǎn)換;掌握DFA最小化方法;熟悉詞法分析的過程和方法
重點(diǎn):詞法分析器的功能和設(shè)計方法,正規(guī)表達(dá)式與有限自動機(jī)的等價性,有限自動機(jī)的確定化和最小化
難點(diǎn):正規(guī)式和有窮自動機(jī)間地轉(zhuǎn)換,掃描器的設(shè)計
第四章:語法分析——自上而下分析
(一)基本教學(xué)內(nèi)容
4.1 語法分析的功能
4.2 自上而下分析面臨的問題
4.3 LL(1)分析法
4.4 遞歸下降分析程序的構(gòu)造
4.5 預(yù)測分析程序
4.6 LL(1)分析中的錯誤處理
(二)基本要求
教學(xué)目的:了解自上而下語法分析的總體方法;掌握消除左遞歸,消除回溯的方法;掌握LL(1)文法的判斷方法及預(yù)測分析表的構(gòu)造;掌握遞歸下降的分析方法;了解并掌握各種語法分析方法對文法的要求
重點(diǎn):消除左遞歸,消除回溯、遞歸下降子程序的構(gòu)造,預(yù)測分析表的構(gòu)造
難點(diǎn):分析表的構(gòu)造
第五章:語法分析——自下而上分析
(一)基本教學(xué)內(nèi)容
5.1 自下而上分析基本問題
5.2 算符優(yōu)先分析
5.3 LR分析法
(二)基本要求
教學(xué)目的:了解自下而上語法分析的總體方法;理解并掌握規(guī)范句型、短語、直接短語、句柄、素短語、最左素短語等概念;掌握FIRST()集合與LASTVT()集合的構(gòu)造;掌握算符優(yōu)先關(guān)系表(矩陣)的構(gòu)造;掌握LR(0)分析表的構(gòu)造及分析方法;了解SLR(1)、LR(1)、LALR(1)分析方法)了解并掌握各種語法分析方法對文法的要求。
重點(diǎn):句柄的概念,算符優(yōu)先分析法,LR(0)分析法
難點(diǎn):分析表的構(gòu)造。
第六章:屬性文法和語法制導(dǎo)翻譯
(一)基本教學(xué)內(nèi)容
6.1 屬性方法
6.2 基于屬性方法的處理方法
6.3 S-屬性文法的自下而上計算
6.4 L-屬性文法的自頂向下翻譯
6.5 自下而上計算繼承屬性
(二)基本要求
教學(xué)目的:了解屬性文法的概念和類別;掌握語法制導(dǎo)翻譯的一般方法與過程
重點(diǎn):屬性的計算
難點(diǎn):屬性的計算
第七章:語義分析和中間代碼產(chǎn)生
(一)基本教學(xué)內(nèi)容
7.1 中間語言
7.2 說明語句
7.3 賦值語句的翻譯
7.4 布爾表達(dá)式的翻譯
7.5 控制語句的翻譯
(二)基本要求
教學(xué)目的:了解使用中間代碼的意義及幾種中間代碼的形式;了解說明語句的翻譯;掌握賦值語句、布爾表達(dá)式、控制語句、標(biāo)號和轉(zhuǎn)移語句的翻譯;了解分支語句和過程調(diào)用的翻譯;了解編譯過程中的類型檢查
重點(diǎn):表達(dá)式和控制語句的翻譯各種語句的翻譯
難點(diǎn):轉(zhuǎn)移地址的回填
第八章:符號表
(一)基本教學(xué)內(nèi)容
8.1 符號表的組織與作用
8.2 整理與查找
8.3 名字的作用范圍
8.4 符號表的內(nèi)容
(二)基本要求
教學(xué)目的:了解符號表的作用;掌握符號表的組織方式和標(biāo)識符的作用域的處理
重點(diǎn):符號表的作用、組織方法和內(nèi)容,名字的作用范圍
難點(diǎn):符號表中作用域的處理。
第九章:運(yùn)行時存儲空間組織
(一)基本教學(xué)內(nèi)容
9.1 目標(biāo)程序運(yùn)行時的活動
9.2 運(yùn)行進(jìn)存儲器的劃分
9.3 靜態(tài)存儲分配
9.4 簡單的棧式存儲分配
9.5 嵌套過程語言的棧式實(shí)現(xiàn)
9.6 堆式動態(tài)存儲分配
(二)基本要求
教學(xué)目的:了解程序運(yùn)行時過程的活動數(shù)據(jù)的作用域;掌握運(yùn)行時存儲器的劃分和活動記錄的作用;掌握四種參數(shù)的傳遞方式;掌握C和PASCAL語言的棧式存儲分配方法;了解存儲分配的策略,掌握靜態(tài)存儲分配策略;了解堆式存儲分配方法。
重點(diǎn):是活動記錄及C和PASCAL語言的棧式存儲分配方法
難點(diǎn):是活動記錄及C和PASCAL語言的棧式存儲分配方法
第十章:優(yōu)化
(一)基本教學(xué)內(nèi)容
10.1 概述
10.2 局部優(yōu)化
10.3 循環(huán)優(yōu)化
(二)基本要求
教學(xué)目的:理解優(yōu)化的原則和優(yōu)化的主要方法;了解基本塊和基本塊的DAG表示;了解循環(huán)優(yōu)化的主要途徑。
重點(diǎn):DAG表示及其應(yīng)用,循環(huán)優(yōu)化
難點(diǎn):DAG表示及其應(yīng)用、循環(huán)優(yōu)化
三、課程各章節(jié)學(xué)時分配
序號
| 內(nèi)容
| 理論學(xué)時
| 實(shí)驗(yàn)學(xué)時
|
計科
| 軟工
|
| 計科
| 軟工
|
|
1
| 引論
| 2
| 2
|
| 0
| 0
|
|
2
| 高級語言及語法描述
| 4
| 4
|
| 2
| 2
|
|
3
| 詞法分析
| 6
| 6
|
| 4
| 4
|
|
4
| 語法分析-自上而下分析
| 6
| 6
|
| 6
| 6
|
|
5
| 語法分析-自下而上分析
| 6
| 6
|
| 2
| 2
|
|
6
| 屬性文法和語法制導(dǎo)翻譯
| 2
| 2
|
| 0
| 0
|
|
7
| 語義分析與中間代碼生成
| 6
| 6
|
| 2
| 2
|
|
8
| 符號表
| 2
| 2
|
|
|
|
|
9
| 運(yùn)行時存儲空間的分配
| 2
| 2
|
|
|
|
|
10
| 優(yōu)化
| 2
| 2
|
|
|
|
|
合計
| 38
| 38
|
| 16
| 16
|
|
四、本課程課外學(xué)習(xí)與修學(xué)指導(dǎo)
《編譯原理》是計算機(jī)科學(xué)與技術(shù)專業(yè)的重要專業(yè)課之一,本課程主要介紹編譯程序的工作原理與構(gòu)造方法,詳細(xì)介紹如何將一個用高級語言編寫的源程序翻譯成機(jī)器指令程序的過程。通過對本課程的學(xué)習(xí),使學(xué)生了解編譯程序的實(shí)現(xiàn)原理和技術(shù);利用從本課程學(xué)習(xí)到的知識,增強(qiáng)編寫和調(diào)試程序的能力。
由于該課程涉及內(nèi)容復(fù)雜,難度較大,且具有很強(qiáng)的實(shí)踐性,所以要學(xué)好本課程,必須做到理論與實(shí)踐緊密結(jié)合,才能達(dá)到較好的學(xué)習(xí)效果。要求學(xué)生多參閱相關(guān)書籍,多做練習(xí),多上機(jī)實(shí)驗(yàn),才能掌握基本原理及其實(shí)現(xiàn)過程。
五、本課程考核方式及成績評定標(biāo)準(zhǔn)
考核方式:閉卷考試
成績評定方法:本課程的考核是平時成績和期終考試成績相結(jié)合。具體比例為:平時(出勤、作業(yè))與上機(jī)及實(shí)驗(yàn)報告占30%,期末考試成績占70%。
其中期未考試總分100分,基礎(chǔ)題占60%,中等難度題占30%,較難題占10%??荚囶}型主要有:選擇題、填空題、回答總題、簡單應(yīng)用題、綜合題等。
六、教學(xué)參考書
1、《程序設(shè)計語言編譯原理(第3版)》陳火旺、劉春林等編著,國防工業(yè)出版社,2008年。
2、《程序設(shè)計語言與編譯》龔天富、侯文永編,電子工業(yè)出版社。
3、《編譯原理》呂映芝、張素琴、蔣維杜主編,清華大學(xué)出版社,2006年
4、《編譯原理》胡倫駿、徐蘭芳、劉建農(nóng)編,電子工業(yè)出版社2004年
5、《編譯原理》(第二版)蔣立源、康慕寧主編,西北工業(yè)大學(xué)出版社,2008年
6、《編譯原理習(xí)題精選》陳意云、張昱著,中國科技大學(xué)出版社,2006年
7、《編譯原理習(xí)題與解析》 伍春香著,清華大學(xué)出版社,2004年
大綱撰寫人:朱素英
大綱審閱人:羅如為
教學(xué)副主任:易葉青
編寫日期:2012.6