看板 C_and_CPP 關於我們 聯絡資訊
換我來問問題了 XD 正在 parse pp-number,但是文法上有點小問題 根據他給的文法,pp-number 的定義是: pp-number: digit '.' digit pp-number digit pp-number identifer-nondigit pp-number 'e' sign pp-number 'E' sign pp-number '.' 我直觀的看後面五個, 看起來就是 pp-number 後面可以無限制的接這五種東西一直長下去, 所以是不是等價於這個 regex ([0-9.] | [eE][+-] | identifier-nondigit)* 然後前面的開頭可以是 digit'.' digit 前面那兩個可以寫成 \.?[0-9] 整個就是 \.?[0-9]([0-9.] | [eE][+-] | identifier-nondigit)* 好,我的問題來了, 根據他範例給的一個 1.0e2 這東西完全無法被他給的規則 parse 阿! 我本來懷疑是他寫錯,然後去查規格,發現他這邊寫的跟規格一模一樣, 但是規格書下面還有註解: Preprocessing number tokens lexically include all integral literal tokens (2.14.2) and all floating literal tokens (2.14.4). 然後我就去查 literal token 跟 floating literal token 的文法 發現跟 pp-number 完全是兩回事嘛 XD 好奇怪,怎麼辦,那我這邊到底要怎麼 parse? 照標準寫的 pp-number 肯定不對阿 @@ -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 182.235.89.169