diff options
author | Skip Montanaro <skip@pobox.com> | 2002-08-15 01:20:16 (GMT) |
---|---|---|
committer | Skip Montanaro <skip@pobox.com> | 2002-08-15 01:20:16 (GMT) |
commit | 118ec70ea27000db428ba3e3a757f4b423670db6 (patch) | |
tree | aa0d92d2928436e81c1e85b8aecf23c9a4f7dd4e | |
parent | 90e9a79afdb0bbee73fbdbe252b305ba918e46c3 (diff) | |
download | cpython-118ec70ea27000db428ba3e3a757f4b423670db6.zip cpython-118ec70ea27000db428ba3e3a757f4b423670db6.tar.gz cpython-118ec70ea27000db428ba3e3a757f4b423670db6.tar.bz2 |
provide less mysterious error messages when seeing end-of-line in
single-quoted strings or end-of-file in triple-quoted strings.
closes patch 586561.
-rw-r--r-- | Include/errcode.h | 2 | ||||
-rw-r--r-- | Parser/tokenizer.c | 9 | ||||
-rw-r--r-- | Python/pythonrun.c | 6 |
3 files changed, 14 insertions, 3 deletions
diff --git a/Include/errcode.h b/Include/errcode.h index a8b1aaa..985911e 100644 --- a/Include/errcode.h +++ b/Include/errcode.h @@ -26,6 +26,8 @@ extern "C" { #define E_TOODEEP 20 /* Too many indentation levels */ #define E_DEDENT 21 /* No matching outer block for dedent */ #define E_DECODE 22 /* Error in decoding into Unicode */ +#define E_EOFS 23 /* EOF in triple-quoted string */ +#define E_EOLS 24 /* EOL in single-quoted string */ #ifdef __cplusplus } diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 64ff320..7e7a370 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -1276,14 +1276,17 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end) c = tok_nextc(tok); if (c == '\n') { if (!triple) { - tok->done = E_TOKEN; + tok->done = E_EOLS; tok_backup(tok, c); return ERRORTOKEN; } tripcount = 0; } else if (c == EOF) { - tok->done = E_TOKEN; + if (triple) + tok->done = E_EOFS; + else + tok->done = E_EOLS; tok->cur = tok->inp; return ERRORTOKEN; } @@ -1305,7 +1308,7 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end) tripcount = 0; c = tok_nextc(tok); if (c == EOF) { - tok->done = E_TOKEN; + tok->done = E_EOLS; tok->cur = tok->inp; return ERRORTOKEN; } diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 006ff08..28a8e28 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1247,6 +1247,12 @@ err_input(perrdetail *err) case E_TOKEN: msg = "invalid token"; break; + case E_EOFS: + msg = "EOF while scanning triple-quoted string"; + break; + case E_EOLS: + msg = "EOL while scanning single-quoted string"; + break; case E_INTR: PyErr_SetNone(PyExc_KeyboardInterrupt); Py_XDECREF(v); |