aboutsummaryrefslogtreecommitdiff
path: root/py/parsenum.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-06-02 00:21:46 +1000
committerDamien George <damien.p.george@gmail.com>2018-06-12 12:17:43 +1000
commit6a445b60fad87c94a1d00ce3a043b881a1f7a5a4 (patch)
tree956f1b602023afae9231f6f03a38c997e3efc073 /py/parsenum.c
parentb2fa1b50edaea43007d692d24391c6f3aa4d15ca (diff)
py/lexer: Add support for underscores in numeric literals.
This is a very convenient feature introduced in Python 3.6 by PEP 515.
Diffstat (limited to 'py/parsenum.c')
-rw-r--r--py/parsenum.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/py/parsenum.c b/py/parsenum.c
index 354d0f756..b7e5a3c83 100644
--- a/py/parsenum.c
+++ b/py/parsenum.c
@@ -83,6 +83,8 @@ mp_obj_t mp_parse_num_integer(const char *restrict str_, size_t len, int base, m
mp_uint_t dig = *str;
if ('0' <= dig && dig <= '9') {
dig -= '0';
+ } else if (dig == '_') {
+ continue;
} else {
dig |= 0x20; // make digit lower-case
if ('a' <= dig && dig <= 'z') {
@@ -273,6 +275,8 @@ mp_obj_t mp_parse_num_decimal(const char *str, size_t len, bool allow_imag, bool
} else if (allow_imag && (dig | 0x20) == 'j') {
imag = true;
break;
+ } else if (dig == '_') {
+ continue;
} else {
// unknown character
str--;