Re: [情報] C++大師認證
我也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)
→
03/10 17:23, , 1F
03/10 17:23, 1F
推
03/10 18:41, , 2F
03/10 18:41, 2F
→
03/10 20:55, , 3F
03/10 20:55, 3F
→
03/10 21:04, , 4F
03/10 21:04, 4F
→
03/10 21:05, , 5F
03/10 21:05, 5F
討論串 (同標題文章)
完整討論串 (本文為第 16 之 29 篇):
情報
4
12
情報
5
18
情報
11
21
情報
3
9
情報
11
27
情報
0
1
情報
6
19
情報
7
24
情報
2
2
情報
3
5