On 05/19/2015 02:25 AM, Chris Angelico wrote:
On Tue, May 19, 2015 at 12:43 PM, Ron Adam<ron3...@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
--
https://mail.python.org/mailman/listinfo/python-list