Fw: [心得] 編譯器設計 鍾葉青
※ [本文轉錄自 candog 信箱]
作者: candog.bbs@bbs.cs.nthu.edu.tw ("FireBolt")
標題: [心得] 編譯器設計 鍾葉青
時間: Wed Feb 15 01:32:46 2017
作者: koviankevin (Stolton) 站內: nthu.course
標題: [心得] 編譯器設計 鍾葉青
時間: 2011/07/06 Wed 16:10:17
課名:編譯器設計 Compiler Design
科號:09920CS 340400
老師:鍾葉青
課本:Crafting a Compiler with C', C. Fisher an R. Leblanc, 1991.
課別:資工系選修
學分:3
涼度:★★
甜度:★★★★☆
建議先修課程:程式設計
課程內容\簡介:
- Introduction (ch1)
簡單介紹compiler在幹嘛
- A Simple Compiler (ch2)
介紹一個簡單的compiler,然後作業要寫出來
- Scanning - Theory and Practive (ch3)
介紹scanner的作法
- Grammar and Parsing (ch4, First_Follow_Set)
介紹grammar的一些名詞還有first set、follow set的求法
- Top-Down Parsing (ch5)
介紹LL parser
- Bottom-Up Parsing (ch6-1, ch6-2, ch6-3)
介紹LR、SLR、LALR parser
- Syntax-Directed Translation (ch7)
簡介一些code generation的技巧
- Symbol Table and Declaration Processing (ch8)
介紹symbol table的實作方式
第八章只教一點點
上課方式:
每一章節都會發投影片講義
很多很複雜的步驟都會講得很清楚(課本可能就幾行帶過)
像是regular expression的ODFA得到的過程
LL、LR等等transition table得到的過程
在投影片都是每一步都列出來(所以頁數很多)
上課速度本學期好像跟以前比有加快一些
因為老師想要多教點code generation的部分
不過最後還是沒多教多少
老師都會在他要出國的時候考試
不然就是請助教講lex and yacc
這兩個工具只在最後一個作業時才用到
給分:
原本:
1. Programs: 40% (4次,各10分)
2. Mid-term Exam.: 20%
3. Final Exam: 30%
4. Quiz & Participation: 10%
最後:
1. Programs: 50% (最後一次20分,其他10分)
2. Exam.: 50% (考三次取兩次,高的佔30%,低的佔20%)
3. Quiz & Participation: 10% (上課全到至少拿8分,quiz可看講義)
而且無條件進位,逢九進十...有參與整學期課程的大概就過了
考試作業型態:
考試:考題其實都很簡單
只要上課的例子都有弄懂大概就沒有問題
但是寫起來的過程非常煩
一點錯可能就會讓後面的也錯
不只考上課內容也考細心
第三次考試有90%跟前兩次一樣
雖然助教似乎有改的比較嚴一點
但是有認真看應該都可以考不錯
作業:
Assignment 1: Micro Language Compiler
依照課本上的code大概就可以完成70%的作業
只要弄懂其中的關係把缺的部分補齊就可以了
Assignment 2: Lexcial parser for C
寫一個Mini C的Scanner,反正就是很刪減版的C
要判斷一些符號或者是保留字
正常的作法是要依課本上建立finite state machine在化簡
不過把state table寫死也是可以的(容易很多)
Assignment 3: LL(1) parser for C Grammar
給一個grammar要做出他的parsing tree
這個應該是四個作業裡面最麻煩的
因為輸入grammar之後要自動建立first set、follow set、predict set
然後才能得到parsing table
課本上都有寫出上述程式的pseudo code
要實作出來雖然有些難度不過也沒有到非常難的地步
其中最要小心的大概就是一個set做錯大概後面就會有錯
Assignment 4: Code generator for C Codes
這是唯一可以用lex和yacc來做的
lex可以取代第二個作業做的事情
yacc則是取代第三個作業
這兩個真的是很厲害的工具
只要會使用整個作業就簡單很多
而code generation的部分
本學期是產生MIPS組合語言
如果是本系生大概計算機結構都學過
翻翻之前的課本應該不是難事
而且助教已經事先公布所使用的測資
只有簡單的加減乘除和IF-ELSE而已
比較困難的是要在grammar中加入適當指令來傳遞資料
這個就...看個人造化了XD
老師的喜好、個性:
蠻隨和的,而且是少數在上課前五分鐘就會進教室的教授
給加簽嗎?
沒滿
成績分布: 99(有人比我高,但是逢九進十為什麼沒有進位我也不知道XD)
↓每組人數
A+ 19.0% (11)
A 6.9% ( 4)
A- 12.1% ( 7)
B+ 0.0% ( 0)
B 6,9% ( 4)
B- 19.0% (11)
C+ 6,9% ( 4)
C 12.1% ( 7)
C- 5.2% ( 3)
D以下 12.1% ( 7) (3個F,4個X)
58 人
--
┌─│┌┌─┌─╮─┬┌─╮│ ┌─ telnet://imaple.tw 楓
├─││├─├┬╯ │├─││ ├─ IAS_EverTale 橋
┌└─└╯└─│╰ ││ ╯└─└─故 事 接 龍 板┐驛NAYURI
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 站
◆ From: koviankevin從114.43.185.89
─ wowslr:推薦這堂課 07/06 17:11olfq
─ christian:老師的會早到教室給同學問問題 也很愛叫大家舉手 07/06 22:40aQnF
─ fasthall:就算是大師也不太推 我覺得他教學沒有認真準備 01/01 22:36aQMN
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: candog (140.114.32.68), 02/15/2017 12:17:24