Re: [問題] 如何學寫COMPILER? [純拋磚引玉]
※ 引述《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"的狂狷不馴;屬於年少的輕狂色彩 ◎
討論串 (同標題文章)
完整討論串 (本文為第 31 之 38 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章
14
24