[Python-3000] PEP 30XZ: Simplified Parsing (original) (raw)

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: RevisionRevisionRevision Last-Modified: DateDateDate 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: callsomething("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-3000 mailing list