Re: [css-syntax] value grammar, <value> type and browser implementations

Le 05/02/2013 08:17, François REMY a écrit :
>> The use of the value production from 2.1 isn't desirable in any case.
>> What we actually want to do is simply say that it has no grammar -
>> that every possible property value is valid for a custom property.
>> That way, the only limitation is what is automatically imposed by the
>> parser itself.
> My issue is that browsers do not seem to follow any spec for their
> property value syntax (because the CSS Syntax is more permissive than
> any non-custom property need, and inexplicably complex).
>
> The 'value' grammar doesn't make any sense to me: it seem to accept
> {a:a} but not {'a':'a'} or {a}. It should accept [;;] but not {;;}. I
> would like the value tokenization to be redefined to be more
> understandable and independant of other productions like 'block',
> 'declaration' and 'property'.

Hi François,

As discussed in another thread and F2F yesterday, the <value> production 
of CSS 2.1 is more restrictive than it needs to be. Before we had 
variables (custom properties) it didn’t matter because any selector or 
property value had a more specific grammar anyway.

css3-syntax now has a more precise definition of how to turn text into 
tokens, and tokens into "component values" (which were known as 
"primitives" in the draft until recently.) A property value is a list of 
primitives, except that ; or ! can not appear top-level because they 
would end the declaration.

The normative definition of all this is the state machine, but I started 
making informative railroad diagrams of the various items in the output 
tree of css3-syntax parsing:

http://dev.w3.org/csswg/css3-syntax/Diagrams.src.html#parsing


Does this help?

-- 
Simon Sapin

Received on Tuesday, 5 February 2013 19:38:16 UTC