From 97790455fe10c5fb22bc3edde2b43474ce0dbaad Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 8 Apr 2014 11:04:29 +0000 Subject: 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. --- unix/main.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'unix/main.c') diff --git a/unix/main.c b/unix/main.c index 1549054f0..11df4cadf 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); -- cgit v1.2.3