Author terry.reedy
Recipients docs@python, eric.araujo, ezio.melotti, o11c, serhiy.storchaka, steven.daprano, terry.reedy
Date 2018-03-21.18:21:20
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1521656480.47.0.467229070634.issue15248@psf.upfronthosting.co.za>
In-reply-to
Content
Reviewing Serhiy's patch, I changed my mind from 6 years ago (msg164774).  I may have over-estimated the difficulty; in any case the code patch is written.  (Tests are still needed.)  And the code is rather straightforward and readable.

Beyond that, I see the patch as detecting a SyntaxError during compilation, as explained below, with the hint being frosting on top of that.  (It is not an 'Error' as the grammar is now, but it is an error as we might like it to be, hence Serhiy used SyntaxWarning instead.)

In addition, we now have the 'print' precedent of 'print'.
  >>> print 1
  SyntaxError: Missing parentheses in call to 'print'. Did you mean print(1)?
I don't remember when this was added, but I don't see any mention above.

And it seems from other discussions, like the recent python-ideas thread about possibly deprecating 'string' 'joining', that several people have much more of a problem with missing commas than some of us do.

If it were possible, we would like the 'call' production to be
  call ::=  callable "(" [argument_list [","] | comprehension] ")"
but 'callable' is not syntactically definable.  What is syntactically definable and what Serhiy's patch implements is
 possible_callable  ::= primary - <obvious exclusions>
 call  ::= possible_callable ...

As it happens, our grammar metasyntax does not (I believe) include set difference, and I suspect that implementing 'possible_callable' by set addition would result in something that is not LL(1) and possibly ambiguous.  Even if 'possible_callable' could be defined within the LL(1) constraint, I suspect it would be messy, and special-casing would still be needed for the special-case message.

Ditto for 'possibly_subscriptable'.

I have 3 questions:
1. Why 'chech' instead of 'check'?
2. Will chech_index catch "[1,2] [3,4]"? (I am guessing that is the intent.)
3. Does Syntax Warning stop compilation, or at least execution, as at a >>> prompt?

Aside from that, I would be inclined to mark this for 'Interpreter Core' and seriously consider it.
History
Date User Action Args
2018-03-21 18:21:20terry.reedysetrecipients: + terry.reedy, ezio.melotti, eric.araujo, steven.daprano, docs@python, serhiy.storchaka, o11c
2018-03-21 18:21:20terry.reedysetmessageid: <1521656480.47.0.467229070634.issue15248@psf.upfronthosting.co.za>
2018-03-21 18:21:20terry.reedylinkissue15248 messages
2018-03-21 18:21:20terry.reedycreate