[Python-Dev] PEP 30XZ: Simplified Parsing

Georg Brandl g.brandl at gmx.net
Thu May 3 16:01:03 CEST 2007


Ron Adam schrieb:
> Benji York wrote:
>> Ron Adam wrote:
>>> The following inconsistency still bothers me, but I suppose it's an edge 
>>> case that doesn't cause problems.
>>>
>>>  >>> print r"hello world\"
>>>    File "<stdin>", line 1
>>>      print r"hello world\"
>>>                          ^
>>> SyntaxError: EOL while scanning single-quoted string
>> 
>>> In the first case, it's treated as a continuation character even though 
>>> it's not at the end of a physical line. So it gives an error.
>> 
>> No, that is unrelated to line continuation.  The \" is an escape 
>> sequence, therefore there is no double-quote to end the string literal.
> 
> Are you sure?
> 
> 
>  >>> print r'\"'
> \"
> 
> It's just a '\' here.
> 
> These are raw strings if you didn't notice.

It's all in the implementation. The tokenizer takes it as an escape sequence
-- it doesn't specialcase raw strings -- the AST builder (parsestr() in ast.c)
doesn't.

Georg

-- 
Thus spake the Lord: Thou shalt indent with four spaces. No more, no less.
Four shall be the number of spaces thou shalt indent, and the number of thy
indenting shall be four. Eight shalt thou not indent, nor either indent thou
two, excepting that thou then proceed to four. Tabs are right out.



More information about the Python-Dev mailing list