Rule of order for dot operators?

Ron Adam ron3200 at gmail.com
Tue May 19 14:02:56 EDT 2015



On 05/19/2015 02:25 AM, Chris Angelico wrote:
> On Tue, May 19, 2015 at 12:43 PM, Ron Adam<ron3200 at gmail.com>  wrote:
>> >Having just implementing something similar for nested scopes, it turns out
>> >it can't be operators because if it was, then the names y and z would be
>> >resolved in the wrong scope.
>> >
>> >          y = "m"
>> >          z = "n"
>> >          a = x . y . z
>> >
>> >Which of course wouldn't do what we want.
>> >
>> >          a = x . "m" . "n"
>> >
>> >And most likely this would give an error.

> If you want to implement the dot as an operator, you could do it by
> having a special syntactic element called an "atom", which is used for
> these kinds of identifier-like tokens. The dot operator could then
> take an object and an atom, and effectively return getattr(obj,
> stringify(atom)). I'm fairly sure this would result in the same syntax
> as Python uses.

I think it's better not to.   What practical things can be done if the dot 
was an operator and names after dots where parsed as atoms?

What I did was parse a name to a subtype of tuple with elements of strings. 
  [return name.with.dots] becomes this in memory after parsing.

     [keyword_object name_object]

Using dots as operators would make that...

     [keyword_object name_object dot_object atom_object dot_object
      atom_object]

This would require the interpreter to do in steps what a single function 
call can do all at once.

Cheers,
    Ron









More information about the Python-list mailing list