[Python-Dev] Column offsets for attribute nodes
Sven Brauch
svenbrauch at googlemail.com
Mon Dec 27 20:42:59 CET 2010
Glenn wrote:
> [...] but maybe bar at 4 and baz at 8 would be even better.
> In other words, I don't think pointing at the "." is useful? [...]
Hi,
here's a patch which results in what Glenn Linderman suggested:
--- python-orig/Python/ast.c 2010-10-19 03:22:07.000000000 +0200
+++ python-new/Python/ast.c 2010-12-27 20:33:55.000000000 +0100
@@ -1615,7 +1615,7 @@
if (!attr_id)
return NULL;
return Attribute(left_expr, attr_id, Load,
- LINENO(n), n->n_col_offset, c->c_arena);
+ LINENO(CHILD(n, 1)), CHILD(n,
1)->n_col_offset, c->c_arena);
}
else {
REQ(CHILD(n, 0), LSQB);
@@ -1742,8 +1742,6 @@
tmp = ast_for_trailer(c, ch, e);
if (!tmp)
return NULL;
- tmp->lineno = e->lineno;
- tmp->col_offset = e->col_offset;
e = tmp;
}
if (TYPE(CHILD(n, NCH(n) - 1)) == factor) {
This gives 0, 4, 8 as column offsets for foo.bar.baz and 0, 6, 14 for
foo. bar. baz, i.e. points to the beginning of the attribute
identifier.
What do you think?
Bye,
Sven
2010/12/27 Nick Coghlan <ncoghlan at gmail.com>:
> On Mon, Dec 27, 2010 at 9:34 AM, Benjamin Peterson <benjamin at python.org> wrote:
>> 2010/12/26 Sven Brauch <svenbrauch at googlemail.com>:
>>> In that discussion, there's been different opinions about which
>>> behaviour is better; main arguments were "consistency" for the current
>>> and "usefulness" for the suggested behaviour. It has been proposed to
>>> ask the question on this list, that's why I'm doing that now. :)
>>
>> My argument against this change is that an attribute includes the
>> expression from which the attribute is being taken. This is consistent
>> with subscripts and calls, which both have the lineno and col_offset
>> of their source expressions.
>
> I'd like to see the impact on existing uses of this information
> (primarily SyntaxErrors) before forming a firm opinion, but my initial
> inclination is that retaining the column information for the
> subattribute names is a better option.
>
> Cheers,
> Nick.
>
> --
> Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
>
More information about the Python-Dev
mailing list