On 02/11/2012 05:00 PM, H. S. Teoh wrote:
Alright, I'm plodding along slowly with my D lexer, and I'm running into
an interesting case. According to the spec, int literals that begin with
'0' are supposed to be octal, with the exception of "0" itself, which is
decimal 0. DecimalInteger is defined to begin with a non-zero digit
followed by one or more digits (may be zero).
So how should the lexer treat a literal like "0800" or "0900"?
(Since octal literals are deprecated, I'm leaving them out of my lexer,
so should 0800 and 0900 be rejected as invalid?)
T
Octal literals whose value is larger than 7 must be rejected. Octal
literals with values up to 7 must be accepted.