- From: Bert Bos <bert@w3.org>
- Date: Wed, 26 Nov 2008 14:36:57 +0100
- To: W3C style mailing list <www-style@w3.org>
The WG accepted the proposal[1] to change "declaration" to "statement" 
in http://www.w3.org/TR/CSS21/syndata.html#parsing-errors
   # Malformed declarations. User agents must handle unexpected tokens
   # encountered while parsing a declaration by reading until the end
   # of the declaration, while observing the rules for matching pairs
   # of (), [], {}, "", and '', and correctly handling escapes.
But after reading the resulting text (below), I think it is not right.
   # Malformed statements. User agents must handle unexpected tokens
   # encountered while parsing a statement by reading until the end
   # of the statement, while observing the rules for matching pairs
   # of (), [], {}, "", and '', and correctly handling escapes.
As the examples in 4.2 right after this paragraph show, user agents do 
*not* have to read until the end of the statement. E.g.:
    p { color:red; color:; color:green }
has a malformed declaration in the middle and should be interpreted as
    p { color:red; color:green }
There is no reason to read any further than the second ";".
I think the original issue was how to deal with parentheses in a 
malformed selector, such as
    FOO @BAR({}) {color: red}
The above is guaranteed not to be valid in any future level of CSS, so I 
don't really mind what the error recovery behavior is, but it cannot be 
the one quoted above.
[1] http://lists.w3.org/Archives/Public/www-style/2008May/0252.html
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 Wednesday, 26 November 2008 13:37:35 UTC