[Python-Dev] PEP 30XZ: Simplified Parsing

Steve Holden steve at holdenweb.com
Fri May 4 20:51:00 CEST 2007


Michael Foord wrote:
> Jim Jewett wrote:
>> PEP: 30xz
>> Title: Simplified Parsing
>> Version: $Revision$
>> Last-Modified: $Date$
>> Author: Jim J. Jewett <JimJJewett at gmail.com>
>> Status: Draft
>> Type: Standards Track
>> Content-Type: text/plain
>> Created: 29-Apr-2007
>> Post-History: 29-Apr-2007
>>
>>
>> Abstract
>>
>>     Python initially inherited its parsing from C.  While this has
>>     been generally useful, there are some remnants which have been
>>     less useful for python, and should be eliminated.
>>
>>     + Implicit String concatenation
>>
>>     + Line continuation with "\"
>>
>>     + 034 as an octal number (== decimal 28).  Note that this is
>>       listed only for completeness; the decision to raise an
>>       Exception for leading zeros has already been made in the
>>       context of PEP XXX, about adding a binary literal.
>>
>>
>> Rationale for Removing Implicit String Concatenation
>>
>>     Implicit String concatentation can lead to confusing, or even
>>     silent, errors. [1]
>>
>>         def f(arg1, arg2=None): pass
>>
>>         f("abc" "def")  # forgot the comma, no warning ...
>>                         # silently becomes f("abcdef", None)
>>
>>   
> Implicit string concatenation is massively useful for creating long 
> strings in a readable way though:
> 
>     call_something("first part\n"
>                            "second line\n"
>                             "third line\n")
> 
> I find it an elegant way of building strings and would be sad to see it 
> go. Adding trailing '+' signs is ugly.
> 
Currently at least possible, though doubtless some people won't like the 
left-hand alignment, is

     call_something("""\
first part
second part
third part
""")

Alas if the proposal to remove the continuation backslash goes through 
this may not remain available to us.

I realise that the arrival of Py3 means all these are up for grabs, but 
don't think any of them are really warty enough to require removal.

I take the point that octal constants are counter-intuitive and wouldn't 
be too disappointed by their removal. I still think Icon had the right 
answer there in allowing an explicit decimal radix in constants, so 16 
as a binary constant would be 10000r2, or 10r16. IIRC it still allowed 
0x10 as well (though Tim may shoot me down there).

regards
  Steve
-- 
Steve Holden        +1 571 484 6266   +1 800 494 3119
Holden Web LLC/Ltd           http://www.holdenweb.com
Skype: holdenweb      http://del.icio.us/steve.holden
------------------ Asciimercial ---------------------
Get on the web: Blog, lens and tag your way to fame!!
holdenweb.blogspot.com        squidoo.com/pythonology
tagged items:         del.icio.us/steve.holden/python
All these services currently offer free registration!
-------------- Thank You for Reading ----------------



More information about the Python-Dev mailing list