Re: [情報] C++大師認證
換我來問問題了 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
討論串 (同標題文章)
以下文章回應了本文:
情報
1
10
完整討論串 (本文為第 7 之 29 篇):
情報
4
12
情報
5
18
情報
11
21
情報
3
9
情報
11
27
情報
0
1
情報
6
19
情報
7
24
情報
2
2
情報
3
5