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