Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
※ 引述《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 》──┘ ◥ ╲ 免程式技術、硬體成本的選擇!!
--
討論串 (同標題文章)
完整討論串 (本文為第 22 之 38 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章