diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-08 11:04:29 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-08 11:04:29 +0000 |
commit | 97790455fe10c5fb22bc3edde2b43474ce0dbaad (patch) | |
tree | b887205c456731d7f4d92837d6ab19be183bb16f /unix/main.c | |
parent | 72d70cb0455c61ee963d9063bd42a8b0f6c80789 (diff) | |
download | micropython-97790455fe10c5fb22bc3edde2b43474ce0dbaad.tar.gz micropython-97790455fe10c5fb22bc3edde2b43474ce0dbaad.zip |
Improve REPL detecting when input needs to continue.
Full CPython compatibility with this requires actually parsing the
input so far collected, and if it fails parsing due to lack of tokens,
then continue collecting input. It's not worth doing it this way. Not
having compatibility at this level does not hurt the goals of Micro
Python.
Diffstat (limited to 'unix/main.c')
-rw-r--r-- | unix/main.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/unix/main.c b/unix/main.c index 1549054f04..11df4cadf2 100644 --- a/unix/main.c +++ b/unix/main.c @@ -146,17 +146,15 @@ STATIC void do_repl(void) { // EOF return; } - if (mp_repl_is_compound_stmt(line)) { - for (;;) { - char *line2 = prompt("... "); - if (line2 == NULL || strlen(line2) == 0) { - break; - } - char *line3 = strjoin(line, '\n', line2); - free(line); - free(line2); - line = line3; + while (mp_repl_continue_with_input(line)) { + char *line2 = prompt("... "); + if (line2 == NULL) { + break; } + char *line3 = strjoin(line, '\n', line2); + free(line); + free(line2); + line = line3; } mp_lexer_t *lex = mp_lexer_new_from_str_len(MP_QSTR__lt_stdin_gt_, line, strlen(line), false); |