Fw: [心得] 編譯器設計 鍾葉青

看板NTHU_Course作者 (怕熱的肥宅)時間8年前 (2017/02/15 12:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 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
文章代碼(AID): #1OezPLIA (NTHU_Course)