W3C home > Mailing lists > Public > www-style@w3.org > February 2009

Re: Issue in CSS21 grammar?

From: fantasai <fantasai.lists@inkedblade.net>
Date: Mon, 09 Feb 2009 15:17:06 -0800
Message-ID: <4990B972.8090400@inkedblade.net>
To: Yves Lafon <ylafon@w3.org>
CC: www-style@w3.org, Bert Bos <bert@w3.org>

Yves Lafon wrote:
> 
> Hi,
> Currently, the grammar allows the following:
> 
> #-2bar { color: red }
> 
> #-2bar is recognized as a HASH usable as a selector
> 
> <<
> simple_selector
>   : element_name [ HASH | class | attrib | pseudo ]*
>   | [ HASH | class | attrib | pseudo ]+
>   ;
> 
> "#"{name}               {return HASH;}
> name            {nmchar}+
> nmchar          [_a-z0-9-]|{nonascii}|{escape}
>>>
> 
> But the text says:
> <<
> In CSS, identifiers  (including element names, classes, and IDs in
> selectors) can contain only the characters [a-z0-9] and ISO 10646 characters
> U+00A1 and higher, plus the hyphen (-) and the underscore (_); they cannot
> start with a digit, or a hyphen followed by a digit. Identifiers can also
> contain escaped characters and any ISO 10646 character as a numeric code
> (see next item). For instance, the identifier "B&W?" may be written as
> "B\&W\?" or "B\26 W\3F".
>>>
> 
> So the text and the grammar are not synchronized.
> 
> Shouldn't selector use a production capturing those requirements, 
> (something along the line of HASHIDENT = '#' IDENT) instead of HASH?

The grammar in general is a lot more lax than what CSS2.1 requires.
Bert will have to give you the long explanation, syntax isn't my
specialty. :)

~fantasai
Received on Monday, 9 February 2009 23:17:51 GMT

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