Atoms, Identifiers, and Primaries
Dave Angel
davea at davea.name
Wed Apr 17 07:07:45 EDT 2013
On 04/16/2013 10:57 PM, Bruce McGoveran wrote:
> These are terms that appear in section 5 (Expressions) of the Python online documentation. I'm having some trouble understanding what, precisely, these terms mean. I'd appreciate the forum's thoughts on these questions:
>
>
> 3. Section 5.3.1 offers this definition of an attributeref:
> attributeref ::= primary "." identifier
>
> Now, I was at first a little concerned to see the non-terminal primary on the right hand side of the definition, since primary is defined to include attributeref in section 5.3 (so this struck me as circular). Am I correct in thinking attributeref is defined this way to allow for situations in which the primary, whether an atom, attributeref (example: an object on which a method is called that returns another object), subscription, slicing, or call, returns an object with property identifier?
>
It is circular. Nothing wrong with that. It means that not only can
you use
a.b
but also
a.b.c
and
a.b.c.d.e.f.g
without any explicit limit. if a non-circular definition were to be
attempted, you might need a few dozen rules, just to cover what someone
*might* happen to use in an expression. Of course normally, one doesn't
go much beyond a.b.c in a single expression.
--
DaveA
More information about the Python-list
mailing list