1.1 --- a/css3-conditional/Overview.src.html Tue Nov 13 14:21:28 2012 -0800 1.2 +++ b/css3-conditional/Overview.src.html Tue Nov 13 14:58:23 2012 -0800 1.3 @@ -370,35 +370,13 @@ 1.4 ; 1.5 1.6 <dfn>supports_condition</dfn> 1.7 - : NOT S* general_enclosed | 1.8 - general_enclosed ( ( AND | OR ) S* general_enclosed )* 1.9 - 1.10 -<dfn>general_enclosed</dfn> 1.11 - : ( FUNCTION | '(' ) any+ ')' S* 1.12 -</pre> 1.13 - 1.14 -<p> 1.15 - The <code>any</code> token is taken from <a href="http://www.w3.org/TR/CSS21/syndata.html">CSS 2.1 Syntax and Basic Data Types</a>. 1.16 - 1.17 -<p> 1.18 - The above grammar is purposely very loose for forwards-compatibility reasons. 1.19 - Any ''@supports'' rule that does not parse according to the grammar above is invalid. 1.20 - Style sheets <strong>must not</strong> use such a rule and processors <strong>must</strong> ignore such a rule. 1.21 - 1.22 -<p> 1.23 - The actual processing model of ''@supports'' is predicated on a more restricted grammar, 1.24 - composed of functions or parenthesized declarations, 1.25 - combined together with logical combinators, 1.26 - as defined by the following productions: 1.27 - 1.28 -<pre><dfn>supports_condition</dfn> 1.29 : supports_negation | supports_conjunction | supports_disjunction | 1.30 supports_condition_in_parens 1.31 ; 1.32 1.33 <dfn>supports_condition_in_parens</dfn> 1.34 : ( '(' S* supports_condition ')' S* ) | supports_declaration_condition | 1.35 - supports_function 1.36 + general_enclosed 1.37 ; 1.38 1.39 <dfn>supports_negation</dfn> 1.40 @@ -414,20 +392,29 @@ 1.41 ; 1.42 1.43 <dfn>supports_declaration_condition</dfn> 1.44 - : '(' S* core_declaration ')' S* 1.45 + : '(' S* declaration ')' S* 1.46 ; 1.47 1.48 -<dfn>supports_function</dfn> 1.49 - : FUNCTION S* [any|unused]* ')' 1.50 - ;</pre> 1.51 +<dfn>general_enclosed</dfn> 1.52 + : ( FUNCTION | '(' ) (any|unused)* ')' S* 1.53 +</pre> 1.54 1.55 -<p>in which <code>core_declaration</code> is the production 1.56 -<code>declaration</code> in the core syntax of CSS defined in <a 1.57 +<p>in which <code>declaration</code>, <code>any</code>, and 1.58 +<code>unused</code> are the productions in the core syntax of CSS 1.59 +defined in <a 1.60 href="http://www.w3.org/TR/CSS21/syndata.html#tokenization">section 1.61 4.1.1 (Tokenization)</a> of [[!CSS21]], 1.62 and the <code>AND</code> and <code>NOT</code> tokens are defined in 1.63 the Media Queries specification [[!MEDIAQ]].</p> 1.64 1.65 +<p> 1.66 + The above grammar is purposely very loose for forwards-compatibility reasons, 1.67 + since the <code>general_enclosed</code> production 1.68 + allows for substantial future extensibility. 1.69 + Any ''@supports'' rule that does not parse according to the grammar above is invalid. 1.70 + Style sheets <strong>must not</strong> use such a rule and 1.71 + processors <strong>must</strong> ignore such a rule (including all of its contents). 1.72 + 1.73 <p>Each of these grammar terms is associated with a boolean result, as 1.74 follows:</p> 1.75 <dl> 1.76 @@ -468,19 +455,19 @@ 1.77 within the parentheses. 1.78 </dd> 1.79 1.80 -<dt>supports_function</dt> 1.81 +<dt>general_enclosed</dt> 1.82 <dd> 1.83 The result is always false. 1.84 - <span class="note">Note that future levels may define functions that can evaluate to true.</span> 1.85 + Additionally, style sheets <strong>must not</strong> 1.86 + write ''@supports'' rules 1.87 + that match this grammar production. 1.88 + (In other words, this production exists only for future extensibility, 1.89 + and is not part of the description of a valid style sheet 1.90 + in this level of the specification.) 1.91 + <span class="note">Note that future levels may define functions 1.92 + or other parenthesized expressions that can evaluate to true.</span> 1.93 </dd> 1.94 1.95 -<dt>anything else</dt> 1.96 -<dd> 1.97 - If a parenthesized expression does not match the result of one of the grammar productions above, 1.98 - it must not be treated as invalid, 1.99 - but rather simply be false for the purpose of support conditions. 1.100 -</dl> 1.101 - 1.102 <p>The condition of the '@supports' rule is the result of the 1.103 <code>supports_condition</code> term that is a child of the 1.104 <code>supports_rule</code> term.</p>