看板 C_and_CPP 關於我們 聯絡資訊
我也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:http://www.cppgm.org/pa2.html 03/10 21:04
azureblaze:pa1的評分版叫你先做pa2 因為server還沒好 03/10 21:05