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

看板Programming作者時間18年前 (2007/04/28 02:02), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串31/38 (看更多)
※ 引述《mousep.bbs@ptt.cc (絕對命運默示錄)》之銘言: > 我也對這點感到有疑問 > C++語法本身的ambigious真的只能靠LL(1)就能parse嗎? > 目前我知道的作法都是syntactic和semantic分析要混在一起 > 沒辦法切得很開的 > 網路上搜尋John Lilley後發現他的網頁已經掛了 > 不知大大也沒有更進一步的資訊可以參考 會讓 LL 炸的原因, 主要是 common prefix 和 left recursive, 但是這兩項透過 grammar 改寫就 ok 了, 比較會有爭議的其實還是那個 (1), 大家懷疑的重心都是落在那上面。 至於實務上當然不會這麼無聊去搞這些理論, 要故意把 parser 做成是 LL(1) 到 LL(∞) 彈性變動是很容易的, 雖然 boost 官方在列表上是以 LL parser (學術上習慣沒寫就當 1), 但實質上它是 LL(∞), 在 wikipedia 上有明確記載它是 flexible LL(∞)。 也因為實務上的彈性太大, 所以大家才在懷疑 C++ 一定要 LL(k), k >= 2 才能 parsing, 也因此引來了一些沒事幹的數學玩家。 那個早期的理論是否還適用 C++03 和 C++0x, 我就不曉得了, C++ 的爸爸打算讓 vector<vector<int>> 能用, 這可能會造成某種程度的影響。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-220-241.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩
文章代碼(AID): #16CZgb00 (Programming)
討論串 (同標題文章)
文章代碼(AID): #16CZgb00 (Programming)