[Python-Dev] Better SyntaxError messages

Vladimir Marangozov Vladimir.Marangozov@inrialpes.fr
Wed, 5 Jul 2000 14:29:36 +0200 (CEST)


Ka-Ping Yee wrote:
> 
> On Tue, 4 Jul 2000, Ka-Ping Yee wrote:
> > It turns out that this should be quite easy.  If it weren't
> > past 4am i would be posting a patch instead of just a verbal
> > suggestion right now -- but here's how to do it.
> 
> Okay, done.

Looks fine.  +1 on the concept.

2 things about the patch:

> 
>     >>> if 3:
>     ... 3
>       File "<stdin>", line 2
>         3
>         ^
>     SyntaxError: expected indent here


I'd remove the word "here" so that the error msg is self-contained.
"expected indent" & "expected dedent" are fine. 

> The internal changes are:
> 
>     1. Added E_TOODEEP (too many indentation levels) and
>        E_DEDENT (no matching outer block for dedent) to errcode.h.
> 
>     2. Made PyTokenizer_Get (in tokenizer.c) return E_TOODEEP and
>        E_DEDENT instead of printing messages to stderr; added
>        corresponding error messages in err_input (in pythonrun.c).
> 
>     3. Renamed E_INDENT to E_TABSPACE.
> 
>     4. Added int *expected_ret argument to PyParser_AddToken; on
>        a syntax error, PyParser_AddToken (in parser.c) places the
>        expected token type (if any) into this output parameter.

I'd suggest passing a pointer to the perrdetail structure (to the
whole error, that is), instead of a pointer to one of its fields.

> 
>     5. Added "token" and "expected" to struct perrdetail; made
>        parsetok (in parsetok.c) copy the current token into "token"
>        and the expected token into "expected" on a syntax error.
> 
>     6. Added checks in err_input (in pythonrun.c) to print more
>        detailed error messages if err->token or err->expected
>        happens to be INDENT or DEDENT when a syntax error occurs.
> 
> This leaves the door open for err_input to say more interesting
> things about the syntax error if it wants, based on the information
> in err->token and err->expected, though i haven't added any more
> detailed messages except for the ones about indentation for now.
> 
> 
> Look good to you?
> 

Yes.

-- 
       Vladimir MARANGOZOV          | Vladimir.Marangozov@inrialpes.fr
http://sirac.inrialpes.fr/~marangoz | tel:(+33-4)76615277 fax:76615252