作者bx (bx)
看板PLT
标题[抱怨] else 的问题
时间Thu Jun 11 09:17:47 2009
在处理 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