There is a small problem in section 8.3.6 regarding property access expressions.
The problem is that the concrete syntax defined in that section will not
actually match the examples given in that section.
---------
Here is the concrete syntax defined in that section...
PropertyAccessExpression(e: PropertyAccessExpression)
= FeatureReference(e.featureReference)
FeatureReference(f: FeatureReference)
= FeatureTargetExpression(f.expression) "." NameBinding(f.nameBinding)
FeatureTargetExpression(e: Expression)
= NameTargetExpression(e)
NonNamePrimaryExpression(e) |
NameTargetExpression(e: NameExpression)
= ColonQualifiedName(e.name)
Note that NameTargetExpression only allows ColonQualifiedName(s) to be used to
define a PropertyAccessExpression.
-------
Here are the examples of property access expressions from the same section...
poleValue.im
this.node
members.name
jack.house
Note that, because NameTargetExpression only allows ColonQualifiedName(s), none
of the above examples matches the concrete syntax.
----------
I suspect that NameTargetExpression should be defined to be a QualifiedName,
which is defined to be either a DotQualifiedName, an UnqualifiedName, or a
ColonQualifiedName, so...
NameTargetExpression(e: NameExpression)
= QualifiedName(e.name)
where QualifiedName is defined elsewhere as:
QualifiedName(q: QualifedName)
= ColonQualifiedName(q)
DotQualifiedName(q) |
UnqualifiedName(q) |