W3C home > Mailing lists > Public > www-style@w3.org > January 2013

[css3-syntax] Parser "entry points"

From: Simon Sapin <simon.sapin@kozea.fr>
Date: Sun, 27 Jan 2013 17:36:21 +0100
Message-ID: <51055785.1080108@kozea.fr>
To: www-style list <www-style@w3.org>

I count four different cases where the Syntax module would be needed:

1. Parsing a whole stylesheet
2. Parsing a style attribute
3. Parsing a single declaration (part of a @support condition)
4. Parsing any stand-alone "unit" that does not have error recovery: 
selectors (for selector APIs), media queries (media attribute), 
conditions or property values (for CSS.supports()), etc.

Did I miss any?

Stylesheets start in top-level mode and are otherwise already taken care 
of by the draft.

A style attribute is like a declaration block where a top-level } token 
does not terminate the block but is treated like a ] token (that is: 
make the current declaration invalid and make the parser skip until the 
next ; token or EOF.) Start in declaration-block mode, and these 
sections need to be adjusted:

* 3.5.7. Declaration-block mode
* 3.5.9. Declaration-value mode
* 3.5.11. Declaration-end mode

This leaves the door open for having at-rules in style attributes. (Even 
if we never do it.)

Similarly, for a single declaration, a ; token does not end the 
declaration. !important is taken care of by saying that such a "can not 
be made important".

Finally, anything that does not have error recovery is the same with 
respect to the Syntax module. It needs a new mode that repeatedly 
"consumes a primitive" until EOF, and maybe fails at the first 
non-preserved token. Parsing these primitives further is up to other 

Simon Sapin
Received on Sunday, 27 January 2013 16:36:44 UTC

This archive was generated by hypermail 2.4.0 : Friday, 25 March 2022 10:08:25 UTC