[Python-Dev] PEP 3101 implementation vs. documentation
Terry Reedy
tjreedy at udel.edu
Sat Jun 11 21:17:49 CEST 2011
On 6/11/2011 6:32 AM, Petri Lehtinen wrote:
> Nick Coghlan wrote:
> [snip]
It seems to me that the intent of the pep and the current doc is that
field_names should match what one would write in code except that quotes
are left off of literal string keys. Which is to say, the brackets []
serve as quote marks. So once '[' is found, the scanner must shift to
'in index' mode and accept everything until a matching ']' is found,
ending 'in index' mode.
The arg_name is documented as int or identifier and attribute_name as
identifier, period. Anything more than that is an implementation
accident which people should not count on in either future versions or
alternate implementations.
I can imagine uses for nested replacement fields in the field_name or
conversion spec. Ie, '{ {0}:{1}d'.format(2,5,333,444) == ' 333',
whereas changing the first arg to 3 would produce ' 444'. If braces are
allowed in either of the first two segments (outside of the 'quoted'
within braces context), I think it should only be for the purpose of a
feature addition that makes them significant.
It strikes me that the underlying problem is that the replacement_field
scanner is, apparently, hand-crafted rather than being generated from
the corresponding grammar, as is the overall Python lexer-parser. So it
has no necessary connection with the grammar.
--
Terry Jan Reedy
More information about the Python-Dev
mailing list