[Python-Dev] Syntax quirk
Terry Reedy
tjreedy at udel.edu
Mon Apr 25 19:38:20 CEST 2011
On 4/25/2011 1:21 PM, Rob Cliffe wrote:
> >>> type (3.)
> <type 'float'>
> >>> 3..__class__
> <type 'float'>
> >>> type(3)
> <type 'int'>
> >>> 3.__class__
> File "<stdin>", line 1
> 3.__class__
> ^
> SyntaxError: invalid syntax
>
> Superficially the last example ought to be legal syntax (and return
> <type 'int'>).
You are a more sophisticated parser than Python, which is limited to
LL(1) parsing. (No that is not in the manual, but it is a known design
consraint.)
> Is it an oversight which could be fixed in a straightforward way, or are
> there reasons why it can't?
This sort of question as to why Python is the way it is really belongs
on python-list.
3.x is parsed as (3.)x (float 3. followed by x) which is invalid syntax
unless 'x' is a digit(s). You automatically back up and reparse as 3(.x)
3 .0 is a syntax error.
3 .__class__ is int.
--
Terry Jan Reedy
More information about the Python-Dev
mailing list