mirror of
https://github.com/wren-lang/wren.git
synced 2026-01-11 06:08:41 +01:00
@ -713,11 +713,18 @@ static int readHexDigit(Parser* parser)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Parses the numeric value of the current token.
|
// Parses the numeric value of the current token.
|
||||||
static void makeNumber(Parser* parser)
|
static void makeNumber(Parser* parser, bool isHex)
|
||||||
{
|
{
|
||||||
errno = 0;
|
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)
|
if (errno == ERANGE)
|
||||||
{
|
{
|
||||||
@ -740,7 +747,7 @@ static void readHexNumber(Parser* parser)
|
|||||||
// Iterate over all the valid hexadecimal digits found.
|
// Iterate over all the valid hexadecimal digits found.
|
||||||
while (readHexDigit(parser) != -1) continue;
|
while (readHexDigit(parser) != -1) continue;
|
||||||
|
|
||||||
makeNumber(parser);
|
makeNumber(parser, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finishes lexing a number literal.
|
// Finishes lexing a number literal.
|
||||||
@ -773,7 +780,7 @@ static void readNumber(Parser* parser)
|
|||||||
while (isDigit(peekChar(parser))) nextChar(parser);
|
while (isDigit(peekChar(parser))) nextChar(parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
makeNumber(parser);
|
makeNumber(parser, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finishes lexing an identifier. Handles reserved words.
|
// Finishes lexing an identifier. Handles reserved words.
|
||||||
|
|||||||
Reference in New Issue
Block a user