W3C home > Mailing lists > Public > www-style@w3.org > April 2012

Re: [selectors4][css3-syntax] an+b corner case

From: Boris Zbarsky <bzbarsky@MIT.EDU>
Date: Mon, 30 Apr 2012 13:07:10 -0400
Message-ID: <4F9EC6BE.2070204@mit.edu>
To: www-style@w3.org
On 4/30/12 12:49 PM, Tab Atkins Jr. wrote:
>>   # nth
>>   #    : S* [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]? |
>>   #           ['-'|'+']? INTEGER | {O}{D}{D} | {E}{V}{E}{N} ] S*
>>   #    ;
>
> It's a browser bug.  To restrict it in the Grammar, we'd have to have
> context-sensitive placement of comments.

Well, hold on.  You're already doing context-sensitive stuff going on 
here, no?  In particular, 1n is a single DIMENSION token, not an INTEGER 
token followed by the symbol N, per 
http://www.w3.org/TR/css3-selectors/#lex as far as I can tell.  So what 
this prose is saying is that inside the value of the :nth-* pseudos a 
completely different tokenizer from the one used for the rest of 
Selectors must be used, if I understand it correctly.

What you _could_ do instead, if desired, is to use the same tokenizer 
but instead of "INTEGER? {N}" use "{N} | DIMENSION" and require that the 
ident in the DIMENSION be "n".  Or define a token similar to the 
PERCENTAGE token as "{num}{N}" and use that token.

Of course in that case the behavior would just happen to match what 
browsers do right now, without any need for preserving comment tokens, 
or anything like that.

-Boris
Received on Monday, 30 April 2012 17:07:44 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:52 GMT