- From: Bert Bos <bert@w3.org>
- Date: Tue, 5 Feb 2008 18:09:27 +0100
- To: W3C Style List <www-style@w3.org>
I had an action in the CSs WG to look at the syntax of media queries as shown in http://csswg.inkedblade.net/spec/mediaqueries#media-queries-syntax Referring to CSS 2.1 for the grammar notation and the list of tokens is fine. It just requires these extra definitions to be added in the MQ draft (and an explicit reference to chapter 4 of CSS 2.1, of course): Token Definition ----------------- ONLY "only" NOT "not" AND "and" (The draft already says that media queries are case-insensitive.) COMMA can be written as ',' (just like ':'), no need for another definition. I replaced the S+ by S*. The difference is that the latter allows not/* and I mean not! */print and ... (color)and while the former requires at least one space. (I'm not saying users *should* write queries like that. I just don't see a reason to disallow it. But note that "... and(color)" is not correct, because it is a functional notation.) I don't remember if we decided to allow CSS-style comments outside of CSS. If we do allow CSS comments in places like HTML's MEDIA attribute, then the text should say so. Easiest is to copy the sentence from CSS 2.1 chapter 4: "COMMENT tokens do not occur in the grammar (to keep it readable), but any number of these tokens may appear anywhere between other tokens." I also added S* after IDENT in media_type (and removed the corresponding S* from media_query), to allow trailing spaces on a media query, e.g., "only print ". I added the missing '(' and ')' to the grammar. I replaced the non-terminal "term" (from Appendix G) by "value" (from chapter 4), because the latter is normative, albeit a bit more permissive. But each media feature has its own mini-grammar to restrict the values anyway. I removed a redundant pair of []. That yields: --------------------------------------------------------------------- media_query_list : S* media_query [ ',' S* media_query]* ; media_query : [ONLY | NOT] S* media_type [ AND S* expression ]* | expression [ AND S* expression ]* ; media_type : IDENT S* ; expression : '(' S* media_feature [':' S* value]? ')' S* ; media_feature : IDENT S* ; value : /* See section 4.1 of CSS 2.1 */ ; --------------------------------------------------------------------- I haven't tried converting this to code (probably yacc) yet, but I hope to find some time. It probably needs two hours for coding and light testing. Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos W3C/ERCIM bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Tuesday, 5 February 2008 17:09:40 UTC