Re: [問題] 如何學寫COMPILER? [純拋磚引玉]

看板Programming作者時間18年前 (2007/04/23 14:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串22/38 (看更多)
※ 引述《tinlans.bbs@whshs.cs.nccu.edu.tw (汀)》之銘言: > 在 C++ syntax 被證明成可用 LL(1) 實作之前, > 很多人都在猜 C++ parser 沒有 LR(2) 搞不出來, > 因為許多人使用 bison 這個 LALR(1) parser generator 實作都碰壁得很慘, > 不單是 LALR 和 LR 支援 syntax 的能力之差所造成的錯覺, > 還常常會遇上 lookahead 的 token 不夠的問題。 > 一個 grammer 能用 BNF 表示, > 並不會代表它的 parser 好寫, > 因為 BNF 可以隨你高興寫, 至少 BNF 代表前文不會影響後文的語法, 這跟 bot 用的 parser 比起來就簡單得多, 也比 perl 好弄 好寫不好寫是要把所有 parser 拿出來排, 不是只跟 C compiler 比 perl 都能用 yacc 做得出來, 還沒有很多 bug, yacc 有問題還是寫的人有問題? > 但很遺憾的是許多人看好的 GCC 還是很愛使用它, > 打開 GCC 的 source code, > 你就是會看到這麼一大片 macro, > 只能說隨著年齡增長會讓人對新技術的接受能力下降, > 導致 GNU 的守舊派人士一直都沒有長進, > 讓 80 年代的 programming 技術仍活在 free software 的 source code 裡。 C++ 也還是老舊的, template 不是新觀念, 而且 C++ 連 obj dynamic linking 都沒搞定, 本質上跟 C 是一樣的 C++ 本來還是個 C 的 code generator: cfront yacc 算是 4GL, goal oriented, 還比 C++ 新得多 新應該是指 style, 而不是訂規格的日期 > 至於繼承這種東西, > 其實也沒有你想像中的難追, > 這和你一再強調的設計方法有關, > 反過來說 debug/trace 別人程式得先瞭解其設計方法, > 就像正統的 OO 設計一樣, > programmer 根本不需要去關心上層 type 是什麼, > C++ 在 compile-time 就已經幫你確立了 type-safe, > 除非設計程式的人亂搞, C++ 有多少人能說自己 100% 瞭解了, 並記得: template of template public, friend, protected C 最多就是 function pointer 長得比較怪 不能完全瞭解的東西才會被亂搞 -- ┌─────KKCITY─────┐ ◢ 想要成立班系社團站台嗎? bbs.kkcity.com.tw │ █ KKcity即日起開放BBS站申請囉! └──From:59.120.53.7 ──┘ ◥ ╲ 免程式技術、硬體成本的選擇!! --
文章代碼(AID): #16B5Be00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #16B5Be00 (Programming)