[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

"Data blocks" syntax specification draft

On Wed, May 23, 2018 at 3:32 PM, Christian Gollwitzer <auriocus at gmx.de> wrote:
> Am 23.05.18 um 07:22 schrieb Chris Angelico:
>> On Wed, May 23, 2018 at 9:51 AM, bartc <bc at freeuk.com> wrote:
>>> Sorry, but I don't think you're right at all. unless the official
>>> references
>>> for the language specifically say that commas are primarily for
>>> constructing
>>> tuples, and all other uses are exceptions to that rule.
>> "A tuple consists of a number of values separated by commas"
>> https://docs.python.org/3/tutorial/datastructures.html#tuples-and-sequences
>> "Separating items with commas"
>> https://docs.python.org/3/library/stdtypes.html#tuple
>> "Note that tuples are not formed by the parentheses, but rather by use
>> of the comma operator."
>> https://docs.python.org/3/reference/expressions.html#parenthesized-forms
>> Enough examples? Commas make tuples, unless context specifies otherwise.
> I'd think that the definitive answer is in the grammar, because that is what
> is used to build the Python parser:
>         https://docs.python.org/3/reference/grammar.html
> Actually, I'm a bit surprised that tuple, list etc. does not appear there as
> a non-terminal. It is a bit hard to find, and it seems that "atom:" is the
> starting point for parsing tuples, lists etc.

The grammar's a bit hard to read for this sort of thing, as the only
hint of semantic meaning is in the labels at the beginning. For
example, there's a "dictorsetmaker" entry that grammatically could be
a dict comp or a set comp; distinguishing them is the job of other
parts of the code.