From: jmfauth on
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
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
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
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
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