Commit 2b000474 authored by Damien George's avatar Damien George
Browse files

py/lexer: Properly classify floats that look like hex numbers.

Eg 0e0 almost looks like a hex number but in fact is a float.
parent 0be3c70c
......@@ -105,8 +105,9 @@ STATIC bool is_following_digit(mp_lexer_t *lex) {
return unichar_isdigit(lex->chr1);
}
STATIC bool is_following_letter(mp_lexer_t *lex) {
return unichar_isalpha(lex->chr1);
STATIC bool is_following_base_char(mp_lexer_t *lex) {
const unichar chr1 = lex->chr1 | 0x20;
return chr1 == 'b' || chr1 == 'o' || chr1 == 'x';
}
STATIC bool is_following_odigit(mp_lexer_t *lex) {
......@@ -541,7 +542,7 @@ STATIC void mp_lexer_next_token_into(mp_lexer_t *lex, bool first_token) {
lex->tok_kind = MP_TOKEN_FLOAT_OR_IMAG;
} else {
lex->tok_kind = MP_TOKEN_INTEGER;
if (is_char(lex, '0') && is_following_letter(lex)) {
if (is_char(lex, '0') && is_following_base_char(lex)) {
forced_integer = true;
}
}
......
......@@ -4,6 +4,9 @@
print(.12)
print(1.)
print(1.2)
print(0e0)
print(0e+0)
print(0e-0)
# float construction
print(float(1.2))
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment