On 07/08/2012 12:12 AM, Timon Gehr wrote:
On 07/07/2012 11:39 PM, Mehrdad wrote:
This might sound silly,
+1.
but how about if D stopped allowing 0..2 as a
range, and instead just said "invalid floating-point number"?
Fixing it en masse would be pretty trivial... just run a regex to replace
"\b(\d+)\.\."
with
"\1 .. "
and you're good to go.
(Or if you want more accuracy, just take the compiler output and feed it
back with a fix -- that would work too.)
The benefit, though, is that now you can do maximal munch without
worrying about this edge case... which sure makes it easier to make a
lexer.
Thoughts?
It does not make it easier to create a lexer, because this is not
actually an edge case worth explicitly testing for.
switch(input.front){
I meant input[0]. No need for decoding.
case '0'..'9': ...
case 'a'..'f', 'A'..'F': ...
case '.': if('0'>input[1]||input[1]>'9') break;
...
}