From: jmfauth on 4 Jul 2010 04:31 Python all versions. It's not a bug, but I'm suprised the following does not raise a SyntaxError (missing space between '9' and 'for'). >>> [9for c in 'abc'] [9, 9, 9] >>> Side effect: If this behaviour is considered as correct, it makes a correct Python code styling (IDLE, editors, ...) practically impossible to realise.
From: Mark Dickinson on 4 Jul 2010 04:55 On Jul 4, 9:31 am, jmfauth <wxjmfa...(a)gmail.com> wrote: > Python all versions. > > It's not a bug, but I'm suprised the following does > not raise a SyntaxError (missing space between > '9' and 'for'). > > > > >>> [9for c in 'abc'] > [9, 9, 9] > > Side effect: If this behaviour is considered as correct, > it makes a correct Python code styling (IDLE, editors, ...) > practically impossible to realise. Why? If Python itself has no problem parsing this code, why should it be so difficult for editors? Python's grammar is fairly simple: it's LL(1) (unlike C's, for example), so can be parsed with only 1 token of lookahead. -- Mark
From: Mark Dickinson on 4 Jul 2010 05:02 On Jul 4, 9:55 am, Mark Dickinson <dicki...(a)gmail.com> wrote: > Why? If Python itself has no problem parsing this code, why should it > be so difficult for editors? Python's grammar is fairly simple: it's > LL(1) (unlike C's, for example), so can be parsed with only 1 token of > lookahead. Bah. Ignore the bit about C. I was thinking that the dangling else issue made this a problem, but now I'm not sure that's true. -- Mark
From: Carl Banks on 4 Jul 2010 06:35 On Jul 4, 1:31 am, jmfauth <wxjmfa...(a)gmail.com> wrote: > Python all versions. > > It's not a bug, but I'm suprised the following does > not raise a SyntaxError (missing space between > '9' and 'for'). > > >>> [9for c in 'abc'] > [9, 9, 9] It does seem strange that Python's lexer wouldn't consider 9for as a single token. Even tough it's not a valid token in Python, your eye kind of sees it as one, so wouldn't it be better to raise a syntax error? Some other places were keyword can follow a number: 9if 0 else 1 (but not "9if 0else 1") 9and 0 9or 0 9in (1,2,3) 9is None > Side effect: If this behaviour is considered as correct, > it makes a correct Python code styling (IDLE, editors, ...) > practically impossible to realise. I'm not sure why an odd corner of the grammar would mess the whole thing up. Most code stylers only approximate the actual grammar anyway. Carl Banks
From: jmfauth on 4 Jul 2010 09:49 On 4 juil, 12:35, Carl Banks <pavlovevide...(a)gmail.com> wrote: > On Jul 4, 1:31 am, jmfauth <wxjmfa...(a)gmail.com> wrote: > Thanks for having explained in good English my feelings. > > Some other places were keyword can follow a number: > Note, that this does not envolve numbers only. >>> ['z' for c in 'abc'] ['z', 'z', 'z'] >>> 'z'if True else 'a' z >>> > > Side effect: If this behaviour is considered as correct, > > it makes a correct Python code styling (IDLE, editors, ...) > > practically impossible to realise. > > I'm not sure why an odd corner of the grammar would mess the whole > thing up. Most code stylers only approximate the actual grammar > anyway. > I guess, most editors (so do I) are mainly using a "re" engine for their styling. --- Not a keyword, but space related, what should I thing about this? >>> print9 Traceback (most recent call last): File "<psi last command>", line 1, in <module> NameError: name 'print9' is not defined >>> print+9 9 >>> print'abc' abc >>> print9.0 File "<psi last command>", line 1 print9.0 ^ SyntaxError: invalid syntax >>> Regards, jmf
|
Next
|
Last
Pages: 1 2 Prev: How to disable readline when building Python? Next: [ANN] eric 5.0.0 released |