Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
※ 引述《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 》──┘ ◤ 唱片公司授權,音樂盡情下載
--
討論串 (同標題文章)
完整討論串 (本文為第 29 之 38 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
14
24