看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《bs10 (b.s.1.0)》之銘言: : 謝謝 yoco315 很熱心的建議,原文恕刪 : 我想問一下 implementation 的方式 : : → yoco315:我用 recur-dec parse,然後有 keep token,不然好難 @@ 03/02 14:48 : 看了你的推文,我也想試著用 recursive descent 方式來實現 : 可是做 lexer,用 recursive descent 是不是太 powerful 了 沒錯,其實用簡單的 regex 就可以完成, 不用到 recursive descent 這樣的方法。 但因為他沒有 regex 可以用,我那時想到兩條路, 一是自己打一個 regex,二是自己打一個 parser framework, 考慮到以後還要作 parser,所以選第二個方法,反正以後程式碼可復用。 但沒有 regex 可以用還真的蠻傷的 :( 有點小生氣 不過話說回來,既然這個 cppgm 的其中一部分是要實作 STL 所以遲早也要實作 regex,也許實作 regex 這條路才是正途 XD : 如果有一個 string 長 10000 個字元,recursive descent 會有 10000 層 call : 不曉得這有沒有關係? : 現在電腦記憶體夠多,或許不用太擔心這個 : 還是說我誤會你的意思了:) : 多想了一下,應該是可以稍微簡化,不必每讀一個字元都 call 一層 : 也許 yoco 版友已經這麼做了 沒有,我沒有這麼作 XD 我有 aware 到這個問題,但我沒去改, 因為我猜我的程式碼在 compiler 有開最佳化的狀況下, 這些動作會被 inline,unroll 成一連串的 if else,不需要真的 function call。 -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.89.169
tinlans:搞不好他怕你用 regex 實作 regex 才故意不提供 03/04 22:02
yoco315:他會 review XD 這種偷吃步應該一下就被抓包了 03/04 23:30