Re: completed action A-640-02a: require space after colon in specs

On 16-04-25 06:04 PM, Michael Dyck wrote:
>> ACTION A-640-02a: Mdyck to implemented proposal in the appendix A of the
>> XPath and XQuery specs as described in 2b. See:
>> https://lists.w3.org/Archives/Public/public-xsl-query/2016Mar/0035.html
>
> I've committed this change to the spec source. It'll show up in the rendered
> docs next time Jonathan commits a build.
>
> Specifically, I said that one or more 'symbol separators' are required when
> the colon of a MapConstructorEntry is followed by a QName, an NCName, or "*".

I just noticed an interesting effect of this rule.

Consider the expressions:
     map { "a": array }
     map { "a": array{} }
In the first, the 'array' token is the QName of a NameTest; in the second, 
it's a keyword in an ArrayConstructor.

Due to this distinction, they react differently to deleting the space after 
the colon:
     map { "a":array }
is disallowed by the above rule, but
     map { "a":array{} }
is allowed.

So, to enforce the rule, it's not enough for a lexer to detect that a ":" 
token is immediately followed by an "array" token. You have to do some 
parsing before you can say whether the "array" is a QName (or NCName) and 
thus the expression is illegal.

To make the rule easier to enforce, we might wish to generalize it so that
    map { "a":array{} }
is also disallowed.

-Michael

Received on Monday, 2 May 2016 01:56:39 UTC