- From: L. David Baron <dbaron@dbaron.org>
- Date: Wed, 21 Oct 2009 14:46:11 -0400
- To: www-style <www-style@w3.org>
On Wednesday 2009-10-21 11:46 -0500, Dan Connolly wrote: > On Wed, 2009-10-21 at 18:03 +0200, Bert Bos wrote: > > On Wednesday 21 October 2009, Dan Connolly wrote: > > > In 4.1.6 Blocks > > > http://www.w3.org/TR/CSS2/syndata.html#block > > > > > > this is given as an example of a block: > > > > > > { causta: "}" + ({7} * '\'') } > > > > > > but it doesn't match the core grammar in 4.1.1, > > > because between ()s can only be any*, and > > > the { token isn't part of any. i.e. any doesn't > > > contain blocks. > > > > True, but it is marked as illegal already. > > This leaves me wondering what is the role of the core syntax, > especially this statement: > > "The meaning of input that cannot be tokenized or parsed is > undefined in CSS 2.1." > > Is the definition of block in 4.1.6 supposed to be a re-statement > of the grammar or an independent definition? I think this is a bug in the core grammar. Since the core grammar serves two purposes: (1) defining behavior of not-yet-valid CSS so that CSS can be extended in the future (2) defining behavior of invalid CSS so that implementations interoperate on "garbage" input I think we should: (a) fix the core grammar to allow more things inside FUNCTION ... ')', '(' ... ')', and '[' ... ']'. (b) document that we will never use that change as a future extension of CSS This will lead to greater interoperability on bad input, but will not lead to future CSS extensions that might be incompatible with implementations that were correct at the time they were written. -David -- L. David Baron http://dbaron.org/ Mozilla Corporation http://www.mozilla.com/
Received on Wednesday, 21 October 2009 18:46:44 UTC