3a06580b89
This commit is contained in:
ruby0x1
2021-02-13 10:17:59 -08:00
parent 9dfbc021a0
commit 208bbc02a5

View File

@ -713,11 +713,18 @@ static int readHexDigit(Parser* parser)
}
// Parses the numeric value of the current token.
static void makeNumber(Parser* parser)
static void makeNumber(Parser* parser, bool isHex)
{
errno = 0;
parser->next.value = NUM_VAL(strtod(parser->tokenStart, NULL));
if (isHex)
{
parser->next.value = NUM_VAL((double)strtoll(parser->tokenStart, NULL, 16));
}
else
{
parser->next.value = NUM_VAL(strtod(parser->tokenStart, NULL));
}
if (errno == ERANGE)
{
@ -740,7 +747,7 @@ static void readHexNumber(Parser* parser)
// Iterate over all the valid hexadecimal digits found.
while (readHexDigit(parser) != -1) continue;
makeNumber(parser);
makeNumber(parser, true);
}
// Finishes lexing a number literal.
@ -773,7 +780,7 @@ static void readNumber(Parser* parser)
while (isDigit(peekChar(parser))) nextChar(parser);
}
makeNumber(parser);
makeNumber(parser, false);
}
// Finishes lexing an identifier. Handles reserved words.