課程目錄

這學(xué)期在《編譯原理》這門課的實(shí)驗(yàn)中收獲了很多。最重要的是學(xué)習(xí)了一種系統(tǒng)設(shè)計(jì)的思想,一種對全局把握的能力。系統(tǒng)是一個很龐大的工程,它里面包含很多模塊,模塊之間相互聯(lián)系,雖然盡量使用“高內(nèi)聚,低耦合”的設(shè)計(jì)思想,但系統(tǒng)越大,不可避免地會提高模塊之間的耦合程度,這時(shí)就需要設(shè)計(jì)者既有一種縱觀全局的開闊眼界,又有對每一個細(xì)節(jié)的精準(zhǔn)把握。在編寫這個編譯器的過程中我的體會是:代碼越多,調(diào)試越困難。因?yàn)榇a越多,程序一旦編寫錯了,定位出錯位置就比較難了。比如我在編寫語法分析器的過程中發(fā)現(xiàn)有一個錯誤如何調(diào)試都不對,后來發(fā)現(xiàn)不是語法分析的代碼有錯,而是之前編寫的詞法分析器有一個隱性的錯誤當(dāng)時(shí)測試時(shí)沒有發(fā)現(xiàn),這讓我感到其實(shí)程序測試也是很重要的一項(xiàng)的工作,尤其是在比較大型的系統(tǒng)編寫過程中,需要對之前編寫的代碼進(jìn)行充分的測試,保證在開始新工作之前以前的代碼都是正確的。另一個讓我印象深刻的錯誤是在編寫符號表的過程中,是一個很低級的錯誤,但卻花費(fèi)了我好幾天也沒調(diào)試出來,就是聲明一個指針int *pint;那么在訪問過程中如pint+1,這個1的單位不是字節(jié),而是這個pint類型的size,在這里相當(dāng)于加了4個字節(jié)。這個錯誤在于我對C語言的掌握不夠,以前的知識模糊。調(diào)試這個錯誤的過程中IDE提示的出錯位置不是在這,而是在另一個malloc申請內(nèi)存的語句處,這是因?yàn)橐郧板e誤對不該訪問的地址訪問、賦值,導(dǎo)致程序在申請堆上空間時(shí)出錯。

本課程共計(jì)20講。

第1講 緒論

第2講 程序設(shè)計(jì)語言及其文法

第3講 詞法分析

第4講 語法分析_1

第5講 語法分析_2

第6講 語法分析_3

第7講 語法分析_4

第8講 語法制導(dǎo)翻譯_1

第9講 語法制導(dǎo)翻譯_2

第10講 語法制導(dǎo)翻譯_3

第11講 中間代碼生成_1

第12講 中間代碼生成_2

第13講 中間代碼生成_3

第14講 中間代碼生成_4

第15講 運(yùn)行存儲分配

第16講 代碼優(yōu)化_1

第17講 代碼優(yōu)化_2

第18講 代碼優(yōu)化_3

第19講 代碼優(yōu)化_4

第20講 代碼生成

 課程大綱

第1講 緒論

1-1 什么是編譯

1-2 編譯系統(tǒng)的結(jié)構(gòu)

1-3 詞法分析概述

1-4 語法分析概述

1-5 語義分析概述

1-6 中間代碼生成及編譯器后端概述

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

【討論1-1】編譯過程與人工翻譯過程之間的關(guān)系

【討論1-2】符號表中NAME字段的設(shè)計(jì)

第1講 測驗(yàn)(計(jì)分)

本講課程講義(PPT文檔)

第2講 程序設(shè)計(jì)語言及其文法

2-1 基本概念

2-2 文法的定義

2-3 語言的定義

2-4 文法的分類

2-5 CFG的分析樹

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

【討論2-1】計(jì)算機(jī)中是如何表示語言的?

【討論2-2】每一類單詞可否看成一種語言?

第2講測驗(yàn)(計(jì)分)

本講課程講義(PPT文檔)

第3講 詞法分析

3-1 正則表達(dá)式

3-2 正則定義

3-3 有窮自動機(jī)

3-4 有窮自動機(jī)的分類

3-5 從正則表達(dá)式到有窮自動機(jī)

3-6 從NFA到DFA的轉(zhuǎn)換

3-7 識別單詞的DFA

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

第3講測驗(yàn)(計(jì)分)

本講課程講義(PPT文檔)

第4講 語法分析_1

4-1 自頂向下分析概述

4-2 文法轉(zhuǎn)換

4-3 LL(1)文法

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

4-4 FIRST集和FOLLOW集的計(jì)算

本講課程講義(PPT文檔)

第4講測驗(yàn)(計(jì)分)

第5講 語法分析_2

4-5 遞歸的預(yù)測分析法

4-6 非遞歸的預(yù)測分析法

4-7 預(yù)測分析中的錯誤處理

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

第5講測驗(yàn)(計(jì)分)

本講課程講義(PPT文檔)

第6講 語法分析_3

本講課程講義(PPT文檔)

4-8 自底向上分析概述

4-9 LR分析法概述

4-10 LR(0)分析

4-11 LR(0)分析表構(gòu)造算法

本講模擬練習(xí)題(不計(jì)分)

本講課程講義(PDF文檔)

【討論6-1】下推自動機(jī)與有窮自動機(jī)之間的關(guān)系

【討論6-2】LR語法分析棧中狀態(tài)信息與文法符號信息之間的關(guān)系

第6講測驗(yàn)(計(jì)分)

郵箱
huangbenjincv@163.com

怀集县| 宁蒗| 冀州市| 四川省| 神木县| 芜湖市| 沁阳市| 彭山县| 阿克陶县| 徐州市| 四会市| 浦江县| 宜丰县| 衡南县| 仁化县| 远安县| 大新县| 扶绥县| 青田县| 泰来县| 灵石县| 股票| 黔西| 来凤县| 蓬安县| 临湘市| 综艺| 马龙县| 巫山县| 古交市| 定边县| 鸡西市| 潼关县| 桐梓县| 定州市| 遵义县| 镶黄旗| 五峰| 花垣县| 淮南市| 饶平县|