[抱怨] else 的問題
在處理 C-style language 的 source 時,發現 else 是一個很奇怪的東西。
一般只要把 #, {}, [], (), "", '' 處理好了,
要分辨語句 (包括算式、宣告、定義) 就可以這樣看:
1. 在 {}, [], (), "", '' 之外出現 ';' 表示語句結束。
就算是比較複雜的 do...while, class, struct, union, typedef 對此也都成立。
2. 第一點的例外為:
a. 出現 (...) 之後接著出現 {...} 就不需分號即表示語句結束。
switch, while, for 和沒有 else 的 if 都是如此。
b. 一開頭就出現 {...}
c. if...else {...} 和 inline asm 的狀況。
除去 inline asm 不看,也就是這個 else,
使得 C-style languages 的 source 無法簡化成以符號為基準來處理,
需要看 keyword 決定語句,一碰到 if...else 就要特別來做。
或者狠一點要求 block 後面一律加分號才行就天下太平了,只是這樣就不是
C-style language 了。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.40.157.103
PLT 近期熱門文章
PTT數位生活區 即時熱門文章