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

看板Programming作者時間18年前 (2007/04/27 20:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串29/38 (看更多)
※ 引述《mousep.bbs@ptt.cc (絕對命運默示錄)》之銘言: > ※ 引述《halajohn (Wei Hu)》之銘言: > : C 能用 LL(1) parse 是令人驚奇的 > : C grammar 裡面有至少六個 ambigious 的地方, > : 其中有些地方他的 lookahead 各數還不是 1 或 2 或 3 或 4 就可以解決的 > : 當然或許用 left corner transform 可以轉換出 lookahead count 比較少的 > : grammar, > : 但那樣就變成好 recognizing, 反而不好 parsing 了 > : 所以目前我看過幾乎所有的 C parser 都沒有用 LL(1) 就解決的 > : 因為實用上的 parser 是要 parsing 而不是 recognizing. > 我也對這點感到有疑問 > C++語法本身的ambigious真的只能靠LL(1)就能parse嗎? > 目前我知道的作法都是syntactic和semantic分析要混在一起 > 沒辦法切得很開的 > 網路上搜尋John Lilley後發現他的網頁已經掛了 > 不知大大也沒有更進一步的資訊可以參考 其實 C++ 無法 100% 用 LL or LR 處理, 也就是該把 grammar 和 code 並在一起用最佳 ( 竟被學界稱為 worst case) 可參考 www.cs.usfca.edu/~parrt 及 www.antlr.org compiler 不是為了証明 xx 演算法, 是要拿來用的 C++ 被定標準的人弄成非 LL/LR 不代表不能 parse, 還是比 perl 好搞多了 就把 code 拆成子集用條件判斷即可, 何難之有 ---- 數學系老愛用 sigma 一類的東西來描述流程也是找麻煩 用 diagram or programming language 描述流程有何不好 我寧願看 for 也不要 sigma -- ┌─────KKCITY─────┐  找歌最方便 KKBOX 歌詞搜尋!! bbs.kkcity.com.tw \^_^ / http://www.kkbox.com.tw └──From:59.120.53.7 ──┘   唱片公司授權,音樂盡情下載 --
文章代碼(AID): #16CUr300 (Programming)
討論串 (同標題文章)
文章代碼(AID): #16CUr300 (Programming)