Fix #146
This commit is contained in:
parent
3ddac7885f
commit
997373a069
|
@ -619,13 +619,33 @@ public struct DLexer
|
||||||
lexExponent(type);
|
lexExponent(type);
|
||||||
break hexLoop;
|
break hexLoop;
|
||||||
case '.':
|
case '.':
|
||||||
if (foundDot)
|
if (foundDot || !range.canPeek(1) || range.peekAt(1) == '.')
|
||||||
break hexLoop;
|
break hexLoop;
|
||||||
if (range.peek(1).length && range.peek(1)[0] == '.')
|
else
|
||||||
|
{
|
||||||
|
// The following bit of silliness tries to tell the
|
||||||
|
// difference between "int dot identifier" and
|
||||||
|
// "double identifier".
|
||||||
|
if (range.canPeek(1))
|
||||||
|
{
|
||||||
|
switch (range.peekAt(1))
|
||||||
|
{
|
||||||
|
case '0': .. case '9':
|
||||||
|
case 'A': .. case 'F':
|
||||||
|
case 'a': .. case 'f':
|
||||||
|
goto doubleLiteral;
|
||||||
|
default:
|
||||||
break hexLoop;
|
break hexLoop;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
doubleLiteral:
|
||||||
range.popFront();
|
range.popFront();
|
||||||
foundDot = true;
|
foundDot = true;
|
||||||
type = tok!"doubleLiteral";
|
type = tok!"doubleLiteral";
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break hexLoop;
|
break hexLoop;
|
||||||
|
|
Loading…
Reference in New Issue