作者bs10 (b.s.1.0)
看板C_and_CPP
標題Re: [情報] C++大師認證
時間Sun Mar 10 00:00:46 2013
我也PASS了,從版上獲得很多動力與幫助,
想分享一下粗淺的心得,順便多請教一些問題。
想先請教:PA1 的提示是說把 translation 實作成數個 "pipeline":
1) utf8 decoding
2) universal-character-name decoding
3) ...
想請教,所謂 pipeline 怎麼實現比較好?
我的心得寫在下面
1. 我是用 state machine 完成的。
跟 PA1 所提示的一樣,總共約數十個 state,程式行數在 1000 行這個等級
(我寫得行數比 1000 多,好好寫應該可以在 1000 附近)
2. 我在後期碰到最多的問題是 unicode 相關的問題
例如 utf8 的讀入與寫出、universal character name
3. trigraph 倒沒有碰到非常多問題
有稍微卡到一下的是 300-ucn-trigraph-ordering 這個 test case
沒碰到問題的原因應該是我是在讀字元時,只要當下不是 raw string,
就直接把 trigraph 換成對應的字。之後就不用再處理 trigraph 了。
這只是想說明不同的實作方法會遭遇不同的困難點,不代表絕對的好壞
4. error 的處理也是一開始比較沒考慮到的,test case 裡主要會測
1) string literal 沒有正常結束
2) comment /* */ 沒有正常結束
2) utf8 不正確
最後想問,寫完後也是覺得寫得蠻噁的。
coding 的結構不滿意、algorithm 更不敢多想。
如果想多少自我進步一些,大家有什麼建議啊?
ps.寫了 c++ lexer 還蠻有成就感的,
畢竟 compiler 課只做過 c 的 subset 的。
那時沒想到有可能自己做 c++ 的。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.73.49.213
※ 編輯: bs10 來自: 203.73.49.213 (03/10 00:12)
→ jackace:真的去做pipeline你就中計了 這語法根本上就不適合 03/10 17:23
推 yoco315:絕對不能用pipeline,遇到raw-string會變成一個解不開的結 03/10 18:41
→ bs10:請問 PA2 公布了嗎? 我看到 forum 上有在討論 PA2 03/10 20:55
→ azureblaze:pa1的評分版叫你先做pa2 因為server還沒好 03/10 21:05