css3-conditional/Overview.src.html

changeset 7031
0eeeaff20f24
parent 7029
4f68a956be34
child 7032
a0055078c6c1
     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>

mercurial