Wed, 14 May 2014 11:43:07 +0100
[css-syntax] Add missing "anything else" case in Check if three code points would start an identifier.
css-syntax/Overview.bs | file | annotate | diff | comparison | revisions | |
css-syntax/Overview.html | file | annotate | diff | comparison | revisions |
1.1 --- a/css-syntax/Overview.bs Wed May 14 09:00:41 2014 +0900 1.2 +++ b/css-syntax/Overview.bs Wed May 14 11:43:07 2014 +0100 1.3 @@ -1531,6 +1531,10 @@ 1.4 If the first and second <a>code points</a> <a>are a valid escape</a>, 1.5 return true. 1.6 Otherwise, return false. 1.7 + 1.8 + <dt>anything else 1.9 + <dd> 1.10 + Return false. 1.11 </dl> 1.12 1.13 <h4 id="starts-with-a-number"> 1.14 @@ -3438,6 +3442,7 @@ 1.15 Johannes Koch, 1.16 呂康豪 (Kang-Hao Lu), 1.17 Marc O'Morain, 1.18 + Raffaello Giulietti, 1.19 Simon Pieter, 1.20 and Zack Weinberg. 1.21
2.1 --- a/css-syntax/Overview.html Wed May 14 09:00:41 2014 +0900 2.2 +++ b/css-syntax/Overview.html Wed May 14 11:43:07 2014 +0100 2.3 @@ -58,7 +58,7 @@ 2.4 </p> 2.5 <h1 class="p-name no-ref" id=title>CSS Syntax Module Level 3</h1> 2.6 <h2 class="no-num no-toc no-ref heading settled heading" id=subtitle><span class=content>Editor’s Draft, 2.7 - <span class=dt-updated><span class=value-title title=20140430>30 April 2014</span></span></span></h2> 2.8 + <span class=dt-updated><span class=value-title title=20140514>14 May 2014</span></span></span></h2> 2.9 <div data-fill-with=spec-metadata><dl><dt>This version:<dd><a class=u-url href=http://dev.w3.org/csswg/css-syntax/>http://dev.w3.org/csswg/css-syntax/</a><dt>Latest version:<dd><a href=http://www.w3.org/TR/css-syntax-3/>http://www.w3.org/TR/css-syntax-3/</a><dt>Editor’s Draft:<dd><a href=http://dev.w3.org/csswg/css-syntax/>http://dev.w3.org/csswg/css-syntax/</a><dt>Previous Versions:<dd><a href=http://www.w3.org/TR/2014/CR-css-syntax-3-20140220/ rel=previous>http://www.w3.org/TR/2014/CR-css-syntax-3-20140220/</a><dd><a href=http://www.w3.org/TR/2013/WD-css-syntax-3-20131105/ rel=previous>http://www.w3.org/TR/2013/WD-css-syntax-3-20131105/</a><dd><a href=http://www.w3.org/TR/2013/WD-css-syntax-3-20130919/ rel=previous>http://www.w3.org/TR/2013/WD-css-syntax-3-20130919/</a> 2.10 <dt>Feedback:</dt> 2.11 <dd><a href="mailto:www-style@w3.org?subject=%5Bcss-syntax%5D%20feedback">www-style@w3.org</a> 2.12 @@ -206,65 +206,67 @@ 2.13 2.14 2.15 2.16 + 2.17 <h2 class="heading settled heading" data-level=1 id=intro><span class=secno>1 </span><span class=content> 2.18 Introduction</span><a class=self-link href=#intro></a></h2> 2.19 2.20 -<p> <em>This section is not normative.</em> 2.21 - 2.22 -<p> This module defines the abstract syntax and parsing of CSS stylesheets 2.23 +<p><em>This section is not normative.</em></p> 2.24 + 2.25 +<p>This module defines the abstract syntax and parsing of CSS stylesheets 2.26 and other things which use CSS syntax 2.27 - (such as the HTML <code>style</code> attribute). 2.28 - 2.29 -<p> It defines algorithms for converting a stream of Unicode <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.30 + (such as the HTML <code>style</code> attribute).</p> 2.31 + 2.32 +<p>It defines algorithms for converting a stream of Unicode <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.33 (in other words, text) 2.34 into a stream of CSS tokens, 2.35 and then further into CSS objects 2.36 - such as stylesheets, rules, and declarations. 2.37 + such as stylesheets, rules, and declarations.</p> 2.38 2.39 <h3 class="heading settled heading" data-level=1.1 id=placement><span class=secno>1.1 </span><span class=content> 2.40 Module interactions</span><a class=self-link href=#placement></a></h3> 2.41 2.42 -<p> This module defines the syntax and parsing of CSS stylesheets. 2.43 - It supersedes the lexical scanner and grammar defined in CSS 2.1. 2.44 +<p>This module defines the syntax and parsing of CSS stylesheets. 2.45 + It supersedes the lexical scanner and grammar defined in CSS 2.1.</p> 2.46 2.47 <h2 class="heading settled heading" data-level=2 id=syntax-description><span class=secno>2 </span><span class=content> 2.48 Description of CSS’s Syntax</span><a class=self-link href=#syntax-description></a></h2> 2.49 2.50 -<p> <em>This section is not normative.</em> 2.51 - 2.52 -<p> A CSS document is a series of <a data-link-type=dfn href=#qualified-rule title="qualified rules">qualified rules</a>, 2.53 +<p><em>This section is not normative.</em></p> 2.54 + 2.55 +<p>A CSS document is a series of <a data-link-type=dfn href=#qualified-rule title="qualified rules">qualified rules</a>, 2.56 which are usually style rules that apply CSS properties to elements, 2.57 and <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a>, 2.58 - which define special processing rules or values for the CSS document. 2.59 - 2.60 -<p> A qualified rule starts with a prelude 2.61 + which define special processing rules or values for the CSS document.</p> 2.62 + 2.63 +<p>A qualified rule starts with a prelude 2.64 then has a {}-wrapped block containing a sequence of declarations. 2.65 The meaning of the prelude varies based on the context that the rule appears in - 2.66 for style rules, it’s a selector which specifies what elements the declarations will apply to. 2.67 Each declaration has a name, 2.68 followed by a colon and the declaration value. 2.69 - Declarations are separated by semicolons. 2.70 + Declarations are separated by semicolons.</p> 2.71 2.72 <div class=example> 2.73 2.74 -<p> A typical rule might look something like this: 2.75 +<p>A typical rule might look something like this:</p> 2.76 2.77 <pre> p > a { 2.78 color: blue; 2.79 text-decoration: underline; 2.80 } 2.81 </pre> 2.82 -<p> In the above rule, "<code>p > a</code>" is the selector, 2.83 + 2.84 + In the above rule, "<code>p > a</code>" is the selector, 2.85 which, if the source document is HTML, 2.86 selects any <code><a></code> elements that are children of a <code><p></code> element. 2.87 2.88 -<p> "<code>color: blue;</code>" is a declaration specifying that, 2.89 + "<code>color: blue;</code>" is a declaration specifying that, 2.90 for the elements that match the selector, 2.91 their <a class=property data-link-type=propdesc href=http://dev.w3.org/csswg/css-color-3/#color0 title=color>color</a> property should have the value <span class=css data-link-type=maybe title=blue>blue</span>. 2.92 Similarly, their <a class=property data-link-type=propdesc href=http://dev.w3.org/csswg/css-text-decor-3/#propdef-text-decoration title=text-decoration>text-decoration</a> property should have the value <span class=css data-link-type=maybe title=underline>underline</span>. 2.93 </div> 2.94 2.95 -<p> At-rules are all different, but they have a basic structure in common. 2.96 +<p>At-rules are all different, but they have a basic structure in common. 2.97 They start with an "@" <a data-link-type=dfn href=#code-point title="code point">code point</a> followed by their name. 2.98 Some <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a> are simple statements, 2.99 with their name followed by more CSS values to specify their behavior, 2.100 @@ -275,63 +277,66 @@ 2.101 similar to a <a data-link-type=dfn href=#qualified-rule title="qualified rule">qualified rule</a>. 2.102 Even the contents of these blocks are specific to the given <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a>: 2.103 sometimes they contain a sequence of declarations, like a <a data-link-type=dfn href=#qualified-rule title="qualified rule">qualified rule</a>; 2.104 - other times, they may contain additional blocks, or at-rules, or other structures altogether. 2.105 + other times, they may contain additional blocks, or at-rules, or other structures altogether.</p> 2.106 2.107 <div class=example> 2.108 2.109 -<p> Here are several examples of <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a> that illustrate the varied syntax they may contain. 2.110 +<p>Here are several examples of <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a> that illustrate the varied syntax they may contain.</p> 2.111 2.112 <pre>@import "my-styles.css";</pre> 2.113 -<p> The <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-cascade-3/#at-ruledef-import title=@import>@import</a> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> is a simple statement. 2.114 - After its name, it takes a single string or <span class=css data-link-type=maybe title=url()>url()</span> function to indicate the stylesheet that it should import. 2.115 + 2.116 +<p>The <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-cascade-3/#at-ruledef-import title=@import>@import</a> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> is a simple statement. 2.117 + After its name, it takes a single string or <span class=css data-link-type=maybe title=url()>url()</span> function to indicate the stylesheet that it should import.</p> 2.118 2.119 <pre> @page :left { 2.120 margin-left: 4cm; 2.121 margin-right: 3cm; 2.122 } 2.123 </pre> 2.124 -<p> The <span class=css data-link-type=maybe title=@page>@page</span> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> consists of an optional page selector (the <span class=css data-link-type=maybe title=:left>:left</span> pseudoclass), 2.125 + 2.126 +<p>The <span class=css data-link-type=maybe title=@page>@page</span> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> consists of an optional page selector (the <span class=css data-link-type=maybe title=:left>:left</span> pseudoclass), 2.127 followed by a block of properties that apply to the page when printed. 2.128 In this way, it’s very similar to a normal style rule, 2.129 except that its properties don’t apply to any "element", 2.130 - but rather the page itself. 2.131 + but rather the page itself.</p> 2.132 2.133 <pre> @media print { 2.134 body { font-size: 10pt } 2.135 } 2.136 </pre> 2.137 -<p> The <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> begins with a media type 2.138 + 2.139 +<p>The <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a> <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> begins with a media type 2.140 and a list of optional media queries. 2.141 Its block contains entire rules, 2.142 which are only applied when the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a>s conditions are fulfilled. 2.143 - </div> 2.144 - 2.145 -<p> Property names and <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> names are always <a data-link-type=dfn href=#identifier title=identifiers>identifiers</a>, 2.146 + </div><p></p> 2.147 + 2.148 +<p>Property names and <a data-link-type=dfn href=#at-rule title=at-rule>at-rule</a> names are always <a data-link-type=dfn href=#identifier title=identifiers>identifiers</a>, 2.149 which have to start with a letter or a hyphen followed by a letter, 2.150 and then can contain letters, numbers, hyphens, or underscores. 2.151 You can include any <a data-link-type=dfn href=#code-point title="code point">code point</a> at all, 2.152 even ones that CSS uses in its syntax, 2.153 - by <a data-link-type=dfn href=#escaping0 title=escaping>escaping</a> it. 2.154 - 2.155 -<p> The syntax of selectors is defined in the <a href=http://www.w3.org/TR/selectors/>Selectors spec</a>. 2.156 + by <a data-link-type=dfn href=#escaping0 title=escaping>escaping</a> it.</p> 2.157 + 2.158 +<p>The syntax of selectors is defined in the <a href=http://www.w3.org/TR/selectors/>Selectors spec</a>. 2.159 Similarly, the syntax of the wide variety of CSS values is defined in the <a href=http://www.w3.org/TR/css3-values/>Values & Units spec</a>. 2.160 - The special syntaxes of individual <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a> can be found in the specs that define them. 2.161 + The special syntaxes of individual <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a> can be found in the specs that define them.</p> 2.162 2.163 <h3 class="heading settled heading" data-level=2.1 id=escaping><span class=secno>2.1 </span><span class=content> 2.164 Escaping</span><a class=self-link href=#escaping></a></h3> 2.165 2.166 -<p> <em>This section is not normative.</em> 2.167 - 2.168 -<p> Any Unicode <a data-link-type=dfn href=#code-point title="code point">code point</a> can be included in an <a data-link-type=dfn href=#identifier title=identifier>identifier</a> or quoted string 2.169 +<p><em>This section is not normative.</em></p> 2.170 + 2.171 +<p>Any Unicode <a data-link-type=dfn href=#code-point title="code point">code point</a> can be included in an <a data-link-type=dfn href=#identifier title=identifier>identifier</a> or quoted string 2.172 by <dfn data-dfn-type=dfn data-noexport="" id=escaping0>escaping<a class=self-link href=#escaping0></a></dfn> it. 2.173 - CSS escape sequences start with a backslash (\), and continue with: 2.174 - 2.175 -<p> <ul> 2.176 + CSS escape sequences start with a backslash (\), and continue with:</p> 2.177 + 2.178 + <ul> 2.179 <li> 2.180 -<p> Any Unicode <a data-link-type=dfn href=#code-point title="code point">code point</a> that is not a <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> or a <a data-link-type=dfn href=#newline title=newline>newline</a>. 2.181 + Any Unicode <a data-link-type=dfn href=#code-point title="code point">code point</a> that is not a <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> or a <a data-link-type=dfn href=#newline title=newline>newline</a>. 2.182 The escape sequence is replaced by that <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.183 <li> 2.184 -<p> Or one to six <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a>, followed by an optional <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a>. 2.185 + Or one to six <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a>, followed by an optional <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a>. 2.186 The escape sequence is replaced by the Unicode <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.187 whose value is given by the hexadecimal digits. 2.188 This optional whitespace allow hexadecimal escape sequences 2.189 @@ -348,23 +353,23 @@ 2.190 <h3 class="heading settled heading" data-level=2.2 id=error-handling><span class=secno>2.2 </span><span class=content> 2.191 Error Handling</span><a class=self-link href=#error-handling></a></h3> 2.192 2.193 -<p> <em>This section is not normative.</em> 2.194 - 2.195 -<p> When errors occur in CSS, 2.196 +<p><em>This section is not normative.</em></p> 2.197 + 2.198 +<p>When errors occur in CSS, 2.199 the parser attempts to recover gracefully, 2.200 throwing away only the minimum amount of content 2.201 before returning to parsing as normal. 2.202 This is because errors aren’t always mistakes - 2.203 new syntax looks like an error to an old parser, 2.204 and it’s useful to be able to add new syntax to the language 2.205 - without worrying about stylesheets that include it being completely broken in older UAs. 2.206 - 2.207 -<p> The precise error-recovery behavior is detailed in the parser itself, 2.208 - but it’s simple enough that a short description is fairly accurate: 2.209 - 2.210 -<p> <ul> 2.211 + without worrying about stylesheets that include it being completely broken in older UAs.</p> 2.212 + 2.213 +<p>The precise error-recovery behavior is detailed in the parser itself, 2.214 + but it’s simple enough that a short description is fairly accurate:</p> 2.215 + 2.216 + <ul> 2.217 <li> 2.218 -<p> At the "top level" of a stylesheet, 2.219 + At the "top level" of a stylesheet, 2.220 an <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> starts an at-rule. 2.221 Anything else starts a qualified rule, 2.222 and is included in the rule’s prelude. 2.223 @@ -373,7 +378,7 @@ 2.224 at worst, it means the selector will match nothing. 2.225 2.226 <li> 2.227 -<p> Once an at-rule starts, 2.228 + Once an at-rule starts, 2.229 nothing is invalid from the parser’s standpoint; 2.230 it’s all part of the at-rule’s prelude. 2.231 Encountering a <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> ends the at-rule immediately, 2.232 @@ -384,20 +389,20 @@ 2.233 The contents of the at-rule are then interpreted according to the at-rule’s own grammar. 2.234 2.235 <li> 2.236 -<p> Qualified rules work similarly, 2.237 + Qualified rules work similarly, 2.238 except that semicolons don’t end them; 2.239 instead, they are just taken in as part of the rule’s prelude. 2.240 When the first {} block is found, 2.241 the contents are always interpreted as a list of declarations. 2.242 2.243 <li> 2.244 -<p> When interpreting a list of declarations, 2.245 + When interpreting a list of declarations, 2.246 unknown syntax at any point causes the parser to throw away whatever declaration it’s currently building, 2.247 and seek forward until it finds a semicolon (or the end of the block). 2.248 It then starts fresh, trying to parse a declaration again. 2.249 2.250 <li> 2.251 -<p> If the stylesheet ends while any rule, declaration, function, string, etc. are still open, 2.252 + If the stylesheet ends while any rule, declaration, function, string, etc. are still open, 2.253 everything is automatically closed. 2.254 This doesn’t make them invalid, 2.255 though they may be incomplete 2.256 @@ -407,178 +412,180 @@ 2.257 <h2 class="heading settled heading" data-level=3 id=tokenizing-and-parsing><span class=secno>3 </span><span class=content> 2.258 Tokenizing and Parsing CSS</span><a class=self-link href=#tokenizing-and-parsing></a></h2> 2.259 2.260 -<p> User agents must use the parsing rules described in this specification 2.261 +<p>User agents must use the parsing rules described in this specification 2.262 to generate the CSSOM trees from text/css resources. 2.263 - Together, these rules define what is referred to as the CSS parser. 2.264 - 2.265 -<p> This specification defines the parsing rules for CSS documents, 2.266 + Together, these rules define what is referred to as the CSS parser.</p> 2.267 + 2.268 +<p>This specification defines the parsing rules for CSS documents, 2.269 whether they are syntactically correct or not. 2.270 Certain points in the parsing algorithm are said to be a <dfn data-dfn-type=dfn data-noexport="" id=parse-error title="parse error">parse errors<a class=self-link href=#parse-error></a></dfn>. 2.271 The error handling for parse errors is well-defined: 2.272 user agents must either act as described below when encountering such problems, 2.273 - or must abort processing at the first error that they encounter for which they do not wish to apply the rules described below. 2.274 - 2.275 -<p> Conformance checkers must report at least one parse error condition to the user 2.276 + or must abort processing at the first error that they encounter for which they do not wish to apply the rules described below.</p> 2.277 + 2.278 +<p>Conformance checkers must report at least one parse error condition to the user 2.279 if one or more parse error conditions exist in the document 2.280 and must not report parse error conditions 2.281 if none exist in the document. 2.282 Conformance checkers may report more than one parse error condition if more than one parse error condition exists in the document. 2.283 Conformance checkers are not required to recover from parse errors, 2.284 but if they do, 2.285 - they must recover in the same way as user agents. 2.286 + they must recover in the same way as user agents.</p> 2.287 2.288 <h3 class="heading settled heading" data-level=3.1 id=parsing-overview><span class=secno>3.1 </span><span class=content> 2.289 Overview of the Parsing Model</span><a class=self-link href=#parsing-overview></a></h3> 2.290 2.291 -<p> The input to the CSS parsing process consists of a stream of Unicode <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.292 +<p>The input to the CSS parsing process consists of a stream of Unicode <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.293 which is passed through a tokenization stage followed by a tree construction stage. 2.294 - The output is a CSSStyleSheet object. 2.295 - 2.296 -<p class=note> Note: Implementations that do not support scripting do not have to actually create a CSSOM CSSStyleSheet object, 2.297 - but the CSSOM tree in such cases is still used as the model for the rest of the specification. 2.298 + The output is a CSSStyleSheet object.</p> 2.299 + 2.300 +<p class=note>Note: Implementations that do not support scripting do not have to actually create a CSSOM CSSStyleSheet object, 2.301 + but the CSSOM tree in such cases is still used as the model for the rest of the specification.</p> 2.302 2.303 <h3 class="heading settled heading" data-level=3.2 id=input-byte-stream><span class=secno>3.2 </span><span class=content> 2.304 The input byte stream</span><a class=self-link href=#input-byte-stream></a></h3> 2.305 2.306 -<p> When parsing a stylesheet, 2.307 +<p>When parsing a stylesheet, 2.308 the stream of Unicode <a data-link-type=dfn href=#code-point title="code points">code points</a> that comprises the input to the tokenization stage 2.309 might be initially seen by the user agent as a stream of bytes 2.310 (typically coming over the network or from the local file system). 2.311 - If so, the user agent must decode these bytes into <a data-link-type=dfn href=#code-point title="code points">code points</a> according to a particular character encoding. 2.312 - 2.313 -<p> To decode the stream of bytes into a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.314 + If so, the user agent must decode these bytes into <a data-link-type=dfn href=#code-point title="code points">code points</a> according to a particular character encoding.</p> 2.315 + 2.316 +<p>To decode the stream of bytes into a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.317 UAs must use the <dfn data-dfn-type=dfn data-noexport="" id=decode><a href=http://encoding.spec.whatwg.org/#decode>decode</a><a class=self-link href=#decode></a></dfn> algorithm 2.318 defined in <a data-biblio-type=normative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a>, 2.319 - with the fallback encoding determined as follows. 2.320 - 2.321 -<p class=note> Note: The <a data-link-type=dfn href=#decode title=decode>decode</a> algorithm 2.322 + with the fallback encoding determined as follows.</p> 2.323 + 2.324 +<p class=note>Note: The <a data-link-type=dfn href=#decode title=decode>decode</a> algorithm 2.325 gives precedence to a byte order mark (BOM), 2.326 - and only uses the fallback when none is found. 2.327 - 2.328 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=determine-the-fallback-encoding>determine the fallback encoding<a class=self-link href=#determine-the-fallback-encoding></a></dfn>: 2.329 + and only uses the fallback when none is found.</p> 2.330 + 2.331 +<p>To <dfn data-dfn-type=dfn data-noexport="" id=determine-the-fallback-encoding>determine the fallback encoding<a class=self-link href=#determine-the-fallback-encoding></a></dfn>:</p> 2.332 2.333 <ol> 2.334 <li> 2.335 -<p> If HTTP or equivalent protocol defines an encoding (e.g. via the charset parameter of the Content-Type header), 2.336 + If HTTP or equivalent protocol defines an encoding (e.g. via the charset parameter of the Content-Type header), 2.337 <dfn data-dfn-type=dfn data-export="" id=get-an-encoding><a href=http://encoding.spec.whatwg.org/#concept-encoding-get>get an encoding</a><a class=self-link href=#get-an-encoding></a></dfn> <a data-biblio-type=normative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a> 2.338 for the specified value. 2.339 If that does not return failure, 2.340 use the return value as the fallback encoding. 2.341 2.342 <li> 2.343 -<p> Otherwise, check the byte stream. 2.344 + Otherwise, check the byte stream. 2.345 If the first 1024 bytes of the stream begin with the hex sequence 2.346 2.347 <pre>40 63 68 61 72 73 65 74 20 22 XX* 22 3B</pre> 2.348 -<p> where each <code>XX</code> byte is a value between 0<sub>16</sub> and 21<sub>16</sub> inclusive 2.349 + 2.350 + where each <code>XX</code> byte is a value between 0<sub>16</sub> and 21<sub>16</sub> inclusive 2.351 or a value between 23<sub>16</sub> and 7F<sub>16</sub> inclusive, 2.352 then <a data-link-type=dfn href=#get-an-encoding title="get an encoding">get an encoding</a> 2.353 for the sequence of <code>XX</code> bytes, 2.354 interpreted as <code>ASCII</code>. 2.355 2.356 - </p><details class=why> 2.357 + <details class=why> 2.358 <summary>What does that byte sequence mean?</summary> 2.359 2.360 -<p> The byte sequence above, 2.361 +<p>The byte sequence above, 2.362 when decoded as ASCII, 2.363 is the string "<code>@charset "…";</code>", 2.364 where the "…" is the sequence of bytes corresponding to the encoding’s label. 2.365 - </details> 2.366 - 2.367 -<p> If the return value was <code>utf-16be</code> or <code>utf-16le</code>, 2.368 + </details><p></p> 2.369 + 2.370 + If the return value was <code>utf-16be</code> or <code>utf-16le</code>, 2.371 use <code>utf-8</code> as the fallback encoding; 2.372 if it was anything else except failure, 2.373 use the return value as the fallback encoding. 2.374 2.375 - </p><details class=why> 2.376 + <details class=why> 2.377 <summary>Why use utf-8 when the declaration says utf-16?</summary> 2.378 2.379 -<p> The bytes of the encoding declaration spell out “<code>@charset "…";</code>” in ASCII, 2.380 + The bytes of the encoding declaration spell out “<code>@charset "…";</code>” in ASCII, 2.381 but UTF-16 is not ASCII-compatible. 2.382 Either you’ve typed in complete gibberish (like <code>䁣桡牳整•utf-16be∻</code>) to get the right bytes in the document, 2.383 which we don’t want to encourage, 2.384 or your document is actually in an ASCII-compatible encoding 2.385 and your encoding declaration is lying. 2.386 2.387 -<p> Either way, defaulting to UTF-8 is a decent answer. 2.388 - 2.389 -<p> As well, this mimics the behavior of HTML’s <code><meta charset></code> attribute. 2.390 +<p>Either way, defaulting to UTF-8 is a decent answer.</p> 2.391 + 2.392 + As well, this mimics the behavior of HTML’s <code><meta charset></code> attribute. 2.393 </details> 2.394 2.395 -<p class=note> Note: Note that the syntax of an encoding declaration <em>looks like</em> the syntax of an <a class=css-code data-link-type=at-rule href=#at-ruledef-charset title=@charset>@charset</a> rule, 2.396 +<p class=note>Note: Note that the syntax of an encoding declaration <em>looks like</em> the syntax of an <a class=css-code data-link-type=at-rule href=#at-ruledef-charset title=@charset>@charset</a> rule, 2.397 but it’s actually much more restrictive. 2.398 A number of things you can do in CSS that would produce a valid <a class=css-code data-link-type=at-rule href=#at-ruledef-charset title=@charset>@charset</a> rule, 2.399 such as using multiple spaces, comments, or single quotes, 2.400 will cause the encoding declaration to not be recognized. 2.401 This behavior keeps the encoding declaration as simple as possible, 2.402 - and thus maximizes the likelihood of it being implemented correctly. 2.403 + and thus maximizes the likelihood of it being implemented correctly.</p> 2.404 2.405 <li> 2.406 -<p> Otherwise, if an <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> is provided by the referring document, 2.407 + Otherwise, if an <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> is provided by the referring document, 2.408 use that as the fallback encoding. 2.409 2.410 <li> 2.411 -<p> Otherwise, use <code>utf-8</code> as the fallback encoding. 2.412 + Otherwise, use <code>utf-8</code> as the fallback encoding. 2.413 </ol> 2.414 2.415 <div class=note> 2.416 2.417 -<p> Though UTF-8 is the default encoding for the web, 2.418 +<p>Though UTF-8 is the default encoding for the web, 2.419 and many newer web-based file formats assume or require UTF-8 encoding, 2.420 CSS was created before it was clear which encoding would win, 2.421 - and thus can’t automatically assume the stylesheet is UTF-8. 2.422 - 2.423 -<p> Stylesheet authors <em>should</em> author their stylesheets in UTF-8, 2.424 + and thus can’t automatically assume the stylesheet is UTF-8.</p> 2.425 + 2.426 +<p>Stylesheet authors <em>should</em> author their stylesheets in UTF-8, 2.427 and ensure that either an HTTP header (or equivalent method) declares the encoding of the stylesheet to be UTF-8, 2.428 or that the referring document declares its encoding to be UTF-8. 2.429 - (In HTML, this is done by adding a <code><meta charset=utf-8></code> element to the head of the document.) 2.430 - 2.431 -<p> If neither of these options are available, 2.432 + (In HTML, this is done by adding a <code><meta charset=utf-8></code> element to the head of the document.)</p> 2.433 + 2.434 +<p>If neither of these options are available, 2.435 authors should begin the stylesheet with a UTF-8 BOM 2.436 - or the exact characters 2.437 - 2.438 -<pre>@charset "utf-8";</pre> </div> 2.439 - 2.440 -<p> Document languages that refer to CSS stylesheets that are decoded from bytes 2.441 + or the exact characters</p> 2.442 + 2.443 +<pre>@charset "utf-8";</pre> 2.444 + </div> 2.445 + 2.446 +<p>Document languages that refer to CSS stylesheets that are decoded from bytes 2.447 may define an <dfn data-dfn-type=dfn data-export="" id=environment-encoding>environment encoding<a class=self-link href=#environment-encoding></a></dfn> for each such stylesheet, 2.448 - which is used as a fallback when other encoding hints are not available or can not be used. 2.449 - 2.450 -<p> The concept of <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> only exists for compatibility with legacy content. 2.451 + which is used as a fallback when other encoding hints are not available or can not be used.</p> 2.452 + 2.453 +<p>The concept of <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> only exists for compatibility with legacy content. 2.454 New formats and new linking mechanisms <b>should not</b> provide an <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a>, 2.455 - so the stylesheet defaults to UTF-8 instead in the absence of more explicit information. 2.456 - 2.457 -<p class=note> Note: <a data-biblio-type=informative data-link-type=biblio href=#html title=html>[HTML]</a> defines <a href=http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#link-type-stylesheet>the environment encoding for <code><link rel=stylesheet></code></a>. 2.458 - 2.459 -<p class=note> Note: <a data-biblio-type=informative data-link-type=biblio href=#cssom title=cssom>[CSSOM]</a> defines <a href=http://dev.w3.org/csswg/cssom/#requirements-on-user-agents-implementing-the-xml-stylesheet-processing-instruction>the environment encoding for <code><xml-stylesheet?></code></a>. 2.460 - 2.461 -<p class=note> Note: <a data-biblio-type=informative data-link-type=biblio href=#css3cascade title=css3cascade>[CSS3CASCADE]</a> defines <a href=http://dev.w3.org/csswg/css-cascade/#at-ruledef-import>the environment encoding for <code>@import</code></a>. 2.462 + so the stylesheet defaults to UTF-8 instead in the absence of more explicit information.</p> 2.463 + 2.464 + Note: <a data-biblio-type=informative data-link-type=biblio href=#html title=html>[HTML]</a> defines <a href=http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#link-type-stylesheet>the environment encoding for <code><link rel=stylesheet></code></a>. 2.465 + 2.466 + Note: <a data-biblio-type=informative data-link-type=biblio href=#cssom title=cssom>[CSSOM]</a> defines <a href=http://dev.w3.org/csswg/cssom/#requirements-on-user-agents-implementing-the-xml-stylesheet-processing-instruction>the environment encoding for <code><xml-stylesheet?></code></a>. 2.467 + 2.468 + Note: <a data-biblio-type=informative data-link-type=biblio href=#css3cascade title=css3cascade>[CSS3CASCADE]</a> defines <a href=http://dev.w3.org/csswg/css-cascade/#at-ruledef-import>the environment encoding for <code>@import</code></a>. 2.469 2.470 2.471 <h3 class="heading settled heading" data-level=3.3 id=input-preprocessing><span class=secno>3.3 </span><span class=content> 2.472 Preprocessing the input stream</span><a class=self-link href=#input-preprocessing></a></h3> 2.473 2.474 -<p> The input stream consists of the <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.475 - pushed into it as the input byte stream is decoded. 2.476 - 2.477 -<p> Before sending the input stream to the tokenizer, 2.478 - implementations must make the following <a data-link-type=dfn href=#code-point title="code point">code point</a> substitutions: 2.479 - 2.480 -<p> <ul> 2.481 +<p>The input stream consists of the <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.482 + pushed into it as the input byte stream is decoded.</p> 2.483 + 2.484 +<p>Before sending the input stream to the tokenizer, 2.485 + implementations must make the following <a data-link-type=dfn href=#code-point title="code point">code point</a> substitutions:</p> 2.486 + 2.487 + <ul> 2.488 <li> 2.489 -<p> Replace any U+000D CARRIAGE RETURN (CR) <a data-link-type=dfn href=#code-point title="code point">code point</a>, 2.490 + Replace any U+000D CARRIAGE RETURN (CR) <a data-link-type=dfn href=#code-point title="code point">code point</a>, 2.491 U+000C FORM FEED (FF) <a data-link-type=dfn href=#code-point title="code point">code point</a>, 2.492 or pairs of U+000D CARRIAGE RETURN (CR) followed by U+000A LINE FEED (LF) 2.493 by a single U+000A LINE FEED (LF) <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.494 2.495 <li> 2.496 -<p> Replace any U+0000 NULL <a data-link-type=dfn href=#code-point title="code point">code point</a> with U+FFFD REPLACEMENT CHARACTER (�). 2.497 + Replace any U+0000 NULL <a data-link-type=dfn href=#code-point title="code point">code point</a> with U+FFFD REPLACEMENT CHARACTER (�). 2.498 </ul> 2.499 2.500 2.501 <h2 class="heading settled heading" data-level=4 id=tokenization><span class=secno>4 </span><span class=content> 2.502 Tokenization</span><a class=self-link href=#tokenization></a></h2> 2.503 2.504 -<p> Implementations must act as if they used the following algorithms to tokenize CSS. 2.505 +<p>Implementations must act as if they used the following algorithms to tokenize CSS. 2.506 To transform a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a> into a stream of tokens, 2.507 repeatedly <a data-link-type=dfn href=#consume-a-token0 title="consume a token">consume a token</a> 2.508 until an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> is reached, 2.509 @@ -586,9 +593,9 @@ 2.510 Each call to the <a data-link-type=dfn href=#consume-a-token0 title="consume a token">consume a token</a> algorithm 2.511 returns a single token, 2.512 so it can also be used "on-demand" to tokenize a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a> <em>during</em> parsing, 2.513 - if so desired. 2.514 - 2.515 -<p> The output of the tokenization step is a stream of zero or more of the following tokens: 2.516 + if so desired.</p> 2.517 + 2.518 +<p>The output of the tokenization step is a stream of zero or more of the following tokens: 2.519 <dfn class=css-code data-dfn-type=type data-export="" id=typedef-ident-token><ident-token><a class=self-link href=#typedef-ident-token></a></dfn>, 2.520 <dfn class=css-code data-dfn-type=type data-export="" id=typedef-function-token><function-token><a class=self-link href=#typedef-function-token></a></dfn>, 2.521 <dfn class=css-code data-dfn-type=type data-export="" id=typedef-at-keyword-token><at-keyword-token><a class=self-link href=#typedef-at-keyword-token></a></dfn>, 2.522 @@ -619,55 +626,55 @@ 2.523 <dfn class=css-code data-dfn-type=type data-export="" id=tokendef-open-paren><(-token><a class=self-link href=#tokendef-open-paren></a></dfn>, 2.524 <dfn class=css-code data-dfn-type=type data-export="" id=tokendef-close-paren><)-token><a class=self-link href=#tokendef-close-paren></a></dfn>, 2.525 <dfn class=css-code data-dfn-type=type data-export="" id=tokendef-open-curly><{-token><a class=self-link href=#tokendef-open-curly></a></dfn>, 2.526 - and <dfn class=css-code data-dfn-type=type data-export="" id=tokendef-close-curly><}-token><a class=self-link href=#tokendef-close-curly></a></dfn>. 2.527 - 2.528 -<p> <ul> 2.529 + and <dfn class=css-code data-dfn-type=type data-export="" id=tokendef-close-curly><}-token><a class=self-link href=#tokendef-close-curly></a></dfn>.</p> 2.530 + 2.531 + <ul> 2.532 <li> 2.533 -<p> <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>, <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>, <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>, <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>, <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> have a value composed of zero or more <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.534 + <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>, <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>, <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>, <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>, <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> have a value composed of zero or more <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.535 Additionally, hash tokens have a type flag set to either "id" or "unrestricted". The type flag defaults to "unrestricted" if not otherwise set. 2.536 2.537 <li> 2.538 -<p> <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> has a value composed of a single <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.539 + <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> has a value composed of a single <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.540 2.541 <li> 2.542 -<p> <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a>, <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> have a representation composed of one or more <a data-link-type=dfn href=#code-point title="code points">code points</a>, and a numeric value. 2.543 + <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a>, <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> have a representation composed of one or more <a data-link-type=dfn href=#code-point title="code points">code points</a>, and a numeric value. 2.544 <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a> and <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> additionally have a type flag set to either "integer" or "number". The type flag defaults to "integer" if not otherwise set. 2.545 <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> additionally have a unit composed of one or more <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.546 2.547 <li> 2.548 -<p> <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> has 2.549 + <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> has 2.550 a <dfn data-dfn-type=dfn data-noexport="" id=unicode-range-start title="start of the range">start<a class=self-link href=#unicode-range-start></a></dfn> 2.551 and an <dfn data-dfn-type=dfn data-noexport="" id=unicode-range-end title="end of the range">end<a class=self-link href=#unicode-range-end></a></dfn>, 2.552 a pair of integers. 2.553 2.554 </ul> 2.555 2.556 -<p class=note> Note: The type flag of hash tokens is used in the Selectors syntax <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a>. 2.557 - Only hash tokens with the "id" type are valid <a href=http://www.w3.org/TR/selectors/#id-selectors>ID selectors</a>. 2.558 - 2.559 -<p class=note> Note: As a technical note, 2.560 +<p class=note>Note: The type flag of hash tokens is used in the Selectors syntax <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a>. 2.561 + Only hash tokens with the "id" type are valid <a href=http://www.w3.org/TR/selectors/#id-selectors>ID selectors</a>.</p> 2.562 + 2.563 +<p class=note>Note: As a technical note, 2.564 the tokenizer defined here requires only three <a data-link-type=dfn href=#code-point title="code points">code points</a> of look-ahead. 2.565 The tokens it produces are designed to allow Selectors to be parsed with one token of look-ahead, 2.566 - and additional tokens may be added in the future to maintain this invariant. 2.567 + and additional tokens may be added in the future to maintain this invariant.</p> 2.568 2.569 2.570 <h3 class="heading settled heading" data-level=4.1 id=token-diagrams><span class=secno>4.1 </span><span class=content> 2.571 Token Railroad Diagrams</span><a class=self-link href=#token-diagrams></a></h3> 2.572 2.573 -<p> <em>This section is non-normative.</em> 2.574 - 2.575 -<p> This section presents an informative view of the tokenizer, 2.576 +<p><em>This section is non-normative.</em></p> 2.577 + 2.578 +<p>This section presents an informative view of the tokenizer, 2.579 in the form of railroad diagrams. 2.580 Railroad diagrams are more compact than an explicit parser, 2.581 - but often easier to read than an regular expression. 2.582 - 2.583 -<p> These diagrams are <em>informative</em> and <em>incomplete</em>; 2.584 + but often easier to read than an regular expression.</p> 2.585 + 2.586 +<p>These diagrams are <em>informative</em> and <em>incomplete</em>; 2.587 they describe the grammar of "correct" tokens, 2.588 but do not describe error-handling at all. 2.589 - They are provided solely to make it easier to get an intuitive grasp of the syntax of each token. 2.590 - 2.591 -<p> Diagrams with names such as <em><foo-token></em> represent tokens. 2.592 - The rest are productions referred to by other diagrams. 2.593 + They are provided solely to make it easier to get an intuitive grasp of the syntax of each token.</p> 2.594 + 2.595 +<p>Diagrams with names such as <em><foo-token></em> represent tokens. 2.596 + The rest are productions referred to by other diagrams.</p> 2.597 2.598 <dl> 2.599 <dt id=comment-diagram><a class=self-link href=#comment-diagram></a>comment 2.600 @@ -714,6 +721,7 @@ 2.601 */</text></g><path d="M446 41h10"> 2.602 </path><path d="M 456 41 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.603 </path></g></svg></div> 2.604 + 2.605 <dt id=newline-diagram><a class=self-link href=#newline-diagram></a>newline 2.606 <dd> 2.607 <div class=railroad><svg class=railroad-diagram height=152 viewBox="0 0 173 152" width=173> 2.608 @@ -752,6 +760,7 @@ 2.609 \f</text></g><path d="M112.0 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10"> 2.610 </path></g><path d="M 132 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.611 </path></g></svg></div> 2.612 + 2.613 <dt id=whitespace-diagram><a class=self-link href=#whitespace-diagram></a>whitespace 2.614 <dd> 2.615 <div class=railroad><svg class=railroad-diagram height=122 viewBox="0 0 197 122" width=197> 2.616 @@ -783,6 +792,7 @@ 2.617 newline</text></g><path d="M136.0 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"> 2.618 </path></g><path d="M 156 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.619 </path></g></svg></div> 2.620 + 2.621 <dt id=hex-digit-diagram><a class=self-link href=#hex-digit-diagram></a>hex digit 2.622 <dd> 2.623 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 233 62" width=233> 2.624 @@ -797,6 +807,7 @@ 2.625 0-9 a-f or A-F</text></g><path d="M182 31h10"> 2.626 </path><path d="M 192 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.627 </path></g></svg></div> 2.628 + 2.629 <dt id=escape-diagram><a class=self-link href=#escape-diagram></a>escape 2.630 <dd> 2.631 <div class=railroad><svg class=railroad-diagram height=122 viewBox="0 0 441 122" width=441> 2.632 @@ -858,6 +869,7 @@ 2.633 </path></g></g><path d="M380.0 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"> 2.634 </path></g><path d="M 400 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.635 </path></g></svg></div> 2.636 + 2.637 <dt id=whitespace-token-diagram><a class=self-link href=#whitespace-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a> 2.638 <dd> 2.639 <div class=railroad><svg class=railroad-diagram height=71 viewBox="0 0 221 71" width=221> 2.640 @@ -881,6 +893,7 @@ 2.641 </path></g><path d="M170 31h10"> 2.642 </path><path d="M 180 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.643 </path></g></svg></div> 2.644 + 2.645 <dt id=ws*-diagram><a class=self-link href=#ws%2A-diagram></a>ws* 2.646 <dd> 2.647 <div class=railroad><svg class=railroad-diagram height=81 viewBox="0 0 305 81" width=305> 2.648 @@ -911,6 +924,7 @@ 2.649 </path></g><path d="M244.0 41h20"> 2.650 </path></g><path d="M 264 41 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.651 </path></g></svg></div> 2.652 + 2.653 <dt id=ident-token-diagram><a class=self-link href=#ident-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a> 2.654 <dd> 2.655 <div class=railroad><svg class=railroad-diagram height=130 viewBox="0 0 769 130" width=769> 2.656 @@ -999,6 +1013,7 @@ 2.657 </path></g><path d="M708.0 61h20"> 2.658 </path></g><path d="M 728 61 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.659 </path></g></svg></div> 2.660 + 2.661 <dt id=function-token-diagram><a class=self-link href=#function-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a> 2.662 <dd> 2.663 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 273 62" width=273> 2.664 @@ -1020,6 +1035,7 @@ 2.665 (</text></g><path d="M222 31h10"> 2.666 </path><path d="M 232 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.667 </path></g></svg></div> 2.668 + 2.669 <dt id=at-keyword-token-diagram><a class=self-link href=#at-keyword-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> 2.670 <dd> 2.671 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 273 62" width=273> 2.672 @@ -1041,6 +1057,7 @@ 2.673 <ident-token></text></g><path d="M222 31h10"> 2.674 </path><path d="M 232 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.675 </path></g></svg></div> 2.676 + 2.677 <dt id=hash-token-diagram><a class=self-link href=#hash-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a> 2.678 <dd> 2.679 <div class=railroad><svg class=railroad-diagram height=100 viewBox="0 0 453 100" width=453> 2.680 @@ -1083,6 +1100,7 @@ 2.681 </path></g><path d="M402 31h10"> 2.682 </path><path d="M 412 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.683 </path></g></svg></div> 2.684 + 2.685 <dt id=string-token-diagram><a class=self-link href=#string-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a> 2.686 <dd> 2.687 <div class=railroad><svg class=railroad-diagram height=248 viewBox="0 0 481 248" width=481> 2.688 @@ -1239,6 +1257,7 @@ 2.689 </path></g><path d="M420.0 149a10 10 0 0 0 10 -10v-88a10 10 0 0 1 10 -10"> 2.690 </path></g><path d="M 440 41 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.691 </path></g></svg></div> 2.692 + 2.693 <dt id=url-token-diagram><a class=self-link href=#url-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> 2.694 <dd> 2.695 <div class=railroad><svg class=railroad-diagram height=102 viewBox="0 0 709 102" width=709> 2.696 @@ -1310,6 +1329,7 @@ 2.697 )</text></g><path d="M658 41h10"> 2.698 </path><path d="M 668 41 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.699 </path></g></svg></div> 2.700 + 2.701 <dt id=url-unquoted-diagram><a class=self-link href=#url-unquoted-diagram></a>url-unquoted 2.702 <dd> 2.703 <div class=railroad><svg class=railroad-diagram height=100 viewBox="0 0 509 100" width=509> 2.704 @@ -1345,6 +1365,7 @@ 2.705 </path></g><path d="M458 31h10"> 2.706 </path><path d="M 468 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.707 </path></g></svg></div> 2.708 + 2.709 <dt id=number-token-diagram><a class=self-link href=#number-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a> 2.710 <dd> 2.711 <div class=railroad><svg class=railroad-diagram height=179 viewBox="0 0 713 179" width=713> 2.712 @@ -1530,6 +1551,7 @@ 2.713 </path></g><path d="M652.0 108a10 10 0 0 0 10 -10v-28a10 10 0 0 1 10 -10"> 2.714 </path></g><path d="M 672 60 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.715 </path></g></svg></div> 2.716 + 2.717 <dt id=dimension-token-diagram><a class=self-link href=#dimension-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> 2.718 <dd> 2.719 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 377 62" width=377> 2.720 @@ -1551,6 +1573,7 @@ 2.721 <ident-token></text></g><path d="M326 31h10"> 2.722 </path><path d="M 336 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.723 </path></g></svg></div> 2.724 + 2.725 <dt id=percentage-token-diagram><a class=self-link href=#percentage-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a> 2.726 <dd> 2.727 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 281 62" width=281> 2.728 @@ -1572,6 +1595,7 @@ 2.729 %</text></g><path d="M230 31h10"> 2.730 </path><path d="M 240 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.731 </path></g></svg></div> 2.732 + 2.733 <dt id=unicode-range-token-diagram><a class=self-link href=#unicode-range-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> 2.734 <dd> 2.735 <div class=railroad><svg class=railroad-diagram height=222 viewBox="0 0 600 222" width=600> 2.736 @@ -1720,6 +1744,7 @@ 2.737 </path></g><path d="M539.0 171a10 10 0 0 0 10 -10v-120a10 10 0 0 1 10 -10"> 2.738 </path></g><path d="M 559 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.739 </path></g></svg></div> 2.740 + 2.741 <dt id=include-match-token-diagram><a class=self-link href=#include-match-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-include-match-token title="<include-match-token>"><include-match-token></a> 2.742 <dd> 2.743 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 137 62" width=137> 2.744 @@ -1734,6 +1759,7 @@ 2.745 ~=</text></g><path d="M86 31h10"> 2.746 </path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.747 </path></g></svg></div> 2.748 + 2.749 <dt id=dash-match-token-diagram><a class=self-link href=#dash-match-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-dash-match-token title="<dash-match-token>"><dash-match-token></a> 2.750 <dd> 2.751 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 137 62" width=137> 2.752 @@ -1748,6 +1774,7 @@ 2.753 |=</text></g><path d="M86 31h10"> 2.754 </path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"> 2.755 </path></g></svg></div> 2.756 + 2.757 <dt id=prefix-match-token-diagram><a class=self-link href=#prefix-match-token-diagram></a><a class="production css-code" data-link-type=type href=#typedef-prefix-match-token title="<prefix-match-token>"><prefix-match-token></a> 2.758 <dd> 2.759 <div class=railroad><svg class=railroad-diagram height=62 viewBox="0 0 137 62" width=137> 2.760 @@ -1836,83 +1863,83 @@ 2.761 <h3 class="heading settled heading" data-level=4.2 id=tokenizer-definitions><span class=secno>4.2 </span><span class=content> 2.762 Definitions</span><a class=self-link href=#tokenizer-definitions></a></h3> 2.763 2.764 -<p> This section defines several terms used during the tokenization phase. 2.765 + This section defines several terms used during the tokenization phase. 2.766 2.767 <dl data-export=""> 2.768 <dt><dfn data-dfn-type=dfn data-export="" id=code-point>code point<a class=self-link href=#code-point></a></dfn> 2.769 <dd> 2.770 -<p> A <a href=http://unicode.org/glossary/#code_point>Unicode code point</a>. <a data-biblio-type=normative data-link-type=biblio href=#unicode title=unicode>[UNICODE]</a> 2.771 + A <a href=http://unicode.org/glossary/#code_point>Unicode code point</a>. <a data-biblio-type=normative data-link-type=biblio href=#unicode title=unicode>[UNICODE]</a> 2.772 Any value in the Unicode codespace; that is, the range of integers from 0 to (hexadecimal) 10FFFF. 2.773 2.774 <dt><dfn data-dfn-type=dfn data-export="" id=next-input-code-point>next input code point<a class=self-link href=#next-input-code-point></a></dfn> 2.775 <dd> 2.776 -<p> The first <a data-link-type=dfn href=#code-point title="code point">code point</a> in the input stream that has not yet been consumed. 2.777 + The first <a data-link-type=dfn href=#code-point title="code point">code point</a> in the input stream that has not yet been consumed. 2.778 2.779 <dt><dfn data-dfn-type=dfn data-export="" id=current-input-code-point>current input code point<a class=self-link href=#current-input-code-point></a></dfn> 2.780 <dd> 2.781 -<p> The last <a data-link-type=dfn href=#code-point title="code point">code point</a> to have been consumed. 2.782 + The last <a data-link-type=dfn href=#code-point title="code point">code point</a> to have been consumed. 2.783 2.784 <dt><dfn data-dfn-type=dfn data-export="" id=reconsume-the-current-input-code-point>reconsume the current input code point<a class=self-link href=#reconsume-the-current-input-code-point></a></dfn> 2.785 <dd> 2.786 -<p> Push the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> back onto the front of the input stream, 2.787 + Push the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> back onto the front of the input stream, 2.788 so that the next time you are instructed to consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>, 2.789 it will instead reconsume the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.790 2.791 <dt><dfn data-dfn-type=dfn data-export="" id=eof-code-point>EOF code point<a class=self-link href=#eof-code-point></a></dfn> 2.792 <dd> 2.793 -<p> A conceptual <a data-link-type=dfn href=#code-point title="code point">code point</a> representing the end of the input stream. 2.794 + A conceptual <a data-link-type=dfn href=#code-point title="code point">code point</a> representing the end of the input stream. 2.795 Whenever the input stream is empty, 2.796 the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is always an EOF code point. 2.797 2.798 <dt><dfn data-dfn-type=dfn data-export="" id=digit>digit<a class=self-link href=#digit></a></dfn> 2.799 <dd> 2.800 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 2.801 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 2.802 2.803 <dt><dfn data-dfn-type=dfn data-export="" id=hex-digit>hex digit<a class=self-link href=#hex-digit></a></dfn> 2.804 <dd> 2.805 -<p> A <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.806 + A <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.807 or a <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), 2.808 or a <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). 2.809 2.810 <dt><dfn data-dfn-type=dfn data-export="" id=uppercase-letter>uppercase letter<a class=self-link href=#uppercase-letter></a></dfn> 2.811 <dd> 2.812 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 2.813 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 2.814 2.815 <dt><dfn data-dfn-type=dfn data-export="" id=lowercase-letter>lowercase letter<a class=self-link href=#lowercase-letter></a></dfn> 2.816 <dd> 2.817 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 2.818 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 2.819 2.820 <dt><dfn data-dfn-type=dfn data-export="" id=letter>letter<a class=self-link href=#letter></a></dfn> 2.821 <dd> 2.822 -<p> An <a data-link-type=dfn href=#uppercase-letter title="uppercase letter">uppercase letter</a> 2.823 + An <a data-link-type=dfn href=#uppercase-letter title="uppercase letter">uppercase letter</a> 2.824 or a <a data-link-type=dfn href=#lowercase-letter title="lowercase letter">lowercase letter</a>. 2.825 2.826 <dt><dfn data-dfn-type=dfn data-export="" id=non-ascii-code-point>non-ASCII code point<a class=self-link href=#non-ascii-code-point></a></dfn> 2.827 <dd> 2.828 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> with a value equal to or greater than U+0080 <control>. 2.829 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> with a value equal to or greater than U+0080 <control>. 2.830 2.831 <dt><dfn data-dfn-type=dfn data-export="" id=name-start-code-point>name-start code point<a class=self-link href=#name-start-code-point></a></dfn> 2.832 <dd> 2.833 -<p> A <a data-link-type=dfn href=#letter title=letter>letter</a>, 2.834 + A <a data-link-type=dfn href=#letter title=letter>letter</a>, 2.835 a <a data-link-type=dfn href=#non-ascii-code-point title="non-ascii code point">non-ASCII code point</a>, 2.836 or U+005F LOW LINE (_). 2.837 2.838 <dt><dfn data-dfn-type=dfn data-export="" id=name-code-point>name code point<a class=self-link href=#name-code-point></a></dfn> 2.839 <dd> 2.840 -<p> A <a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a>, 2.841 + A <a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a>, 2.842 A <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.843 or U+002D HYPHEN-MINUS (-). 2.844 2.845 <dt><dfn data-dfn-type=dfn data-export="" id=non-printable-code-point>non-printable code point<a class=self-link href=#non-printable-code-point></a></dfn> 2.846 <dd> 2.847 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0000 NULL and U+0008 BACKSPACE, 2.848 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+0000 NULL and U+0008 BACKSPACE, 2.849 or U+000B LINE TABULATION, 2.850 or a <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, 2.851 or U+007F DELETE. 2.852 2.853 <dt><dfn data-dfn-type=dfn data-export="" id=newline>newline<a class=self-link href=#newline></a></dfn> 2.854 <dd> 2.855 -<p> U+000A LINE FEED. 2.856 + U+000A LINE FEED. 2.857 <span class=note> 2.858 Note that U+000D CARRIAGE RETURN and U+000C FORM FEED are not included in this definition, 2.859 as they are converted to U+000A LINE FEED during <a href=#input-preprocessing>preprocessing</a>. 2.860 @@ -1923,14 +1950,14 @@ 2.861 2.862 <dt><dfn data-dfn-type=dfn data-export="" id=surrogate-code-point>surrogate code point<a class=self-link href=#surrogate-code-point></a></dfn> 2.863 <dd> 2.864 -<p> A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+D800 and U+DFFF inclusive. 2.865 + A <a data-link-type=dfn href=#code-point title="code point">code point</a> between U+D800 and U+DFFF inclusive. 2.866 2.867 <dt><dfn data-dfn-type=dfn data-export="" id=maximum-allowed-code-point>maximum allowed code point<a class=self-link href=#maximum-allowed-code-point></a></dfn> 2.868 <dd>The greatest <a data-link-type=dfn href=#code-point title="code point">code point</a> defined by Unicode: U+10FFFF. 2.869 2.870 <dt><dfn data-dfn-type=dfn data-export="" id=identifier>identifier<a class=self-link href=#identifier></a></dfn> 2.871 <dd> 2.872 -<p> A portion of the CSS source that has the same syntax as an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>. 2.873 + A portion of the CSS source that has the same syntax as an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>. 2.874 Also appears in <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>, 2.875 <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>, 2.876 <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a> with the "id" type flag, 2.877 @@ -1941,120 +1968,120 @@ 2.878 <h3 class="heading settled heading" data-level=4.3 id=tokenizer-algorithms><span class=secno>4.3 </span><span class=content> 2.879 Tokenizer Algorithms</span><a class=self-link href=#tokenizer-algorithms></a></h3> 2.880 2.881 -<p> The algorithms defined in this section transform a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a> into a stream of tokens. 2.882 + The algorithms defined in this section transform a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a> into a stream of tokens. 2.883 2.884 <h4 class="heading settled heading" data-level=4.3.1 id=consume-a-token><span class=secno>4.3.1 </span><span class=content> 2.885 Consume a token</span><a class=self-link href=#consume-a-token></a></h4> 2.886 2.887 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-token0>consume a token<a class=self-link href=#consume-a-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.888 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-token0>consume a token<a class=self-link href=#consume-a-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.889 It will return a single token of any type. 2.890 2.891 -<p> <a data-link-type=dfn href=#consume-comments0 title="consume comments">Consume comments</a>. 2.892 - 2.893 -<p> Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>. 2.894 + <a data-link-type=dfn href=#consume-comments0 title="consume comments">Consume comments</a>. 2.895 + 2.896 + Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>. 2.897 2.898 <dl> 2.899 <dt><a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> 2.900 <dd> 2.901 -<p> Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.902 + Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.903 Return a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>. 2.904 2.905 <dt>U+0022 QUOTATION MARK (") 2.906 <dd> 2.907 -<p> <a data-link-type=dfn href=#consume-a-string-token0 title="consume a string token">Consume a string token</a> 2.908 + <a data-link-type=dfn href=#consume-a-string-token0 title="consume a string token">Consume a string token</a> 2.909 and return it. 2.910 2.911 <dt>U+0023 NUMBER SIGN (#) 2.912 <dd> 2.913 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a <a data-link-type=dfn href=#name-code-point title="name code point">name code point</a> 2.914 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a <a data-link-type=dfn href=#name-code-point title="name code point">name code point</a> 2.915 or the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next two input code points</a> 2.916 <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="are a valid escape">are a valid escape</a>, 2.917 then: 2.918 2.919 <ol> 2.920 <li> 2.921 -<p> Create a <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>. 2.922 + Create a <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>. 2.923 2.924 <li> 2.925 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="would start an identifier">would start an identifier</a>, 2.926 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="would start an identifier">would start an identifier</a>, 2.927 set the <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>’s type flag to "id". 2.928 2.929 <li> 2.930 -<p> <a data-link-type=dfn href=#consume-a-name0 title="consume a name">Consume a name</a>, 2.931 + <a data-link-type=dfn href=#consume-a-name0 title="consume a name">Consume a name</a>, 2.932 and set the <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>’s value to the returned string. 2.933 2.934 <li> 2.935 -<p> Return the <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>. 2.936 + Return the <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a>. 2.937 </ol> 2.938 2.939 -<p> Otherwise, 2.940 + Otherwise, 2.941 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.942 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.943 2.944 <dt>U+0024 DOLLAR SIGN ($) 2.945 <dd> 2.946 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.947 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.948 U+003D EQUALS SIGN (=), 2.949 consume it 2.950 and return a <a class="production css-code" data-link-type=type href=#typedef-suffix-match-token title="<suffix-match-token>"><suffix-match-token></a>. 2.951 2.952 -<p> Otherwise, 2.953 + Otherwise, 2.954 emit a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.955 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.956 2.957 <dt>U+0027 APOSTROPHE (') 2.958 <dd> 2.959 -<p> <a data-link-type=dfn href=#consume-a-string-token0 title="consume a string token">Consume a string token</a> 2.960 + <a data-link-type=dfn href=#consume-a-string-token0 title="consume a string token">Consume a string token</a> 2.961 and return it. 2.962 2.963 <dt>U+0028 LEFT PARENTHESIS (() 2.964 <dd> 2.965 -<p> Return a <a href=#tokendef-open-paren><(-token></a>. 2.966 + Return a <a href=#tokendef-open-paren><(-token></a>. 2.967 2.968 <dt>U+0029 RIGHT PARENTHESIS ()) 2.969 <dd> 2.970 -<p> Return a <a href=#tokendef-close-paren><)-token></a>. 2.971 + Return a <a href=#tokendef-close-paren><)-token></a>. 2.972 2.973 <dt>U+002A ASTERISK (*) 2.974 <dd> 2.975 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.976 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.977 U+003D EQUALS SIGN (=), 2.978 consume it 2.979 and return a <a class="production css-code" data-link-type=type href=#typedef-substring-match-token title="<substring-match-token>"><substring-match-token></a>. 2.980 2.981 -<p> Otherwise, 2.982 + Otherwise, 2.983 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.984 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.985 2.986 <dt>U+002B PLUS SIGN (+) 2.987 <dd> 2.988 -<p> If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.989 + If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.990 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.991 <a data-link-type=dfn href=#consume-a-numeric-token0 title="consume a numeric token">consume a numeric token</a> 2.992 and return it. 2.993 2.994 -<p> Otherwise, 2.995 + Otherwise, 2.996 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.997 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.998 2.999 <dt>U+002C COMMA (,) 2.1000 <dd> 2.1001 -<p> Return a <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a>. 2.1002 + Return a <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a>. 2.1003 2.1004 <dt>U+002D HYPHEN-MINUS (-) 2.1005 <dd> 2.1006 -<p> If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.1007 + If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.1008 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.1009 <a data-link-type=dfn href=#consume-a-numeric-token0 title="consume a numeric token">consume a numeric token</a>, 2.1010 and return it. 2.1011 2.1012 -<p> Otherwise, 2.1013 + Otherwise, 2.1014 if the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="starts with an identifier">starts with an identifier</a>, 2.1015 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.1016 <a data-link-type=dfn href=#consume-an-ident-like-token0 title="consume an ident-like token">consume an ident-like token</a>, 2.1017 and return it. 2.1018 2.1019 -<p> Otherwise, 2.1020 + Otherwise, 2.1021 if the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1022 U+002D HYPHEN-MINUS 2.1023 U+003E GREATER-THAN SIGN 2.1024 @@ -2062,32 +2089,32 @@ 2.1025 consume them 2.1026 and return a <a class="production css-code" data-link-type=type href=#typedef-cdc-token title="<cdc-token>"><CDC-token></a>. 2.1027 2.1028 -<p> Otherwise, 2.1029 + Otherwise, 2.1030 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1031 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1032 2.1033 <dt>U+002E FULL STOP (.) 2.1034 <dd> 2.1035 -<p> If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.1036 + If the input stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a>, 2.1037 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.1038 <a data-link-type=dfn href=#consume-a-numeric-token0 title="consume a numeric token">consume a numeric token</a>, 2.1039 and return it. 2.1040 2.1041 -<p> Otherwise, 2.1042 + Otherwise, 2.1043 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1044 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1045 2.1046 <dt>U+003A COLON (:) 2.1047 <dd> 2.1048 -<p> Return a <a class="production css-code" data-link-type=type href=#typedef-colon-token title="<colon-token>"><colon-token></a>. 2.1049 + Return a <a class="production css-code" data-link-type=type href=#typedef-colon-token title="<colon-token>"><colon-token></a>. 2.1050 2.1051 <dt>U+003B SEMICOLON (;) 2.1052 <dd> 2.1053 -<p> Return a <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a>. 2.1054 + Return a <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a>. 2.1055 2.1056 <dt>U+003C LESS-THAN SIGN (<) 2.1057 <dd> 2.1058 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> are 2.1059 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> are 2.1060 U+0021 EXCLAMATION MARK 2.1061 U+002D HYPHEN-MINUS 2.1062 U+002D HYPHEN-MINUS 2.1063 @@ -2095,71 +2122,71 @@ 2.1064 consume them 2.1065 and return a <a class="production css-code" data-link-type=type href=#typedef-cdo-token title="<cdo-token>"><CDO-token></a>. 2.1066 2.1067 -<p> Otherwise, 2.1068 + Otherwise, 2.1069 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1070 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1071 2.1072 <dt>U+0040 COMMERCIAL AT (@) 2.1073 <dd> 2.1074 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> 2.1075 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> 2.1076 <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="would start an identifier">would start an identifier</a>, 2.1077 <a data-link-type=dfn href=#consume-a-name0 title="consume a name">consume a name</a>, 2.1078 create an <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> with its value set to the returned value, 2.1079 and return it. 2.1080 2.1081 -<p> Otherwise, 2.1082 + Otherwise, 2.1083 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1084 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1085 2.1086 <dt>U+005B LEFT SQUARE BRACKET ([) 2.1087 <dd> 2.1088 -<p> Return a <a href=#tokendef-open-square><[-token></a>. 2.1089 + Return a <a href=#tokendef-open-square><[-token></a>. 2.1090 2.1091 <dt>U+005C REVERSE SOLIDUS (\) 2.1092 <dd> 2.1093 -<p> If the input stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a>, 2.1094 + If the input stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a>, 2.1095 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.1096 <a data-link-type=dfn href=#consume-an-ident-like-token0 title="consume an ident-like token">consume an ident-like token</a>, 2.1097 and return it. 2.1098 2.1099 -<p> Otherwise, 2.1100 + Otherwise, 2.1101 this is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1102 Return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1103 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1104 2.1105 <dt>U+005D RIGHT SQUARE BRACKET (]) 2.1106 <dd> 2.1107 -<p> Return a <a href=#tokendef-close-square><]-token></a>. 2.1108 + Return a <a href=#tokendef-close-square><]-token></a>. 2.1109 2.1110 <dt>U+005E CIRCUMFLEX ACCENT (^) 2.1111 <dd> 2.1112 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1113 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1114 U+003D EQUALS SIGN (=), 2.1115 consume it 2.1116 and return a <a class="production css-code" data-link-type=type href=#typedef-prefix-match-token title="<prefix-match-token>"><prefix-match-token></a>. 2.1117 2.1118 -<p> Otherwise, 2.1119 + Otherwise, 2.1120 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1121 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1122 2.1123 <dt>U+007B LEFT CURLY BRACKET ({) 2.1124 <dd> 2.1125 -<p> Return a <a href=#tokendef-open-curly><{-token></a>. 2.1126 + Return a <a href=#tokendef-open-curly><{-token></a>. 2.1127 2.1128 <dt>U+007D RIGHT CURLY BRACKET (}) 2.1129 <dd> 2.1130 -<p> Return a <a href=#tokendef-close-curly><}-token></a>. 2.1131 + Return a <a href=#tokendef-close-curly><}-token></a>. 2.1132 2.1133 <dt><a data-link-type=dfn href=#digit title=digit>digit</a> 2.1134 <dd> 2.1135 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>, 2.1136 + <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>, 2.1137 <a data-link-type=dfn href=#consume-a-numeric-token0 title="consume a numeric token">consume a numeric token</a>, 2.1138 and return it. 2.1139 2.1140 <dt>U+0055 LATIN CAPITAL LETTER U (U) 2.1141 <dt>U+0075 LATIN SMALL LETTER U (u) 2.1142 <dd> 2.1143 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1144 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1145 U+002B PLUS SIGN (+) 2.1146 followed by a <a data-link-type=dfn href=#hex-digit title="hex digit">hex digit</a> 2.1147 or U+003F QUESTION MARK (?), 2.1148 @@ -2168,52 +2195,52 @@ 2.1149 <a data-link-type=dfn href=#consume-a-unicode-range-token0 title="consume a unicode-range token">Consume a unicode-range token</a> 2.1150 and return it. 2.1151 2.1152 -<p> Otherwise, 2.1153 + Otherwise, 2.1154 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">reconsume the current input code point</a>, 2.1155 <a data-link-type=dfn href=#consume-an-ident-like-token0 title="consume an ident-like token">consume an ident-like token</a>, 2.1156 and return it. 2.1157 2.1158 <dt><a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a> 2.1159 <dd> 2.1160 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>, 2.1161 + <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>, 2.1162 <a data-link-type=dfn href=#consume-an-ident-like-token0 title="consume an ident-like token">consume an ident-like token</a>, 2.1163 and return it. 2.1164 2.1165 <dt>U+007C VERTICAL LINE (|) 2.1166 <dd> 2.1167 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1168 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1169 U+003D EQUALS SIGN (=), 2.1170 consume it 2.1171 and return a <a class="production css-code" data-link-type=type href=#typedef-dash-match-token title="<dash-match-token>"><dash-match-token></a>. 2.1172 2.1173 -<p> Otherwise, 2.1174 + Otherwise, 2.1175 if the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1176 U+0073 VERTICAL LINE (|), 2.1177 consume it 2.1178 and return a <a class="production css-code" data-link-type=type href=#typedef-column-token title="<column-token>"><column-token></a>. 2.1179 2.1180 -<p> Otherwise, 2.1181 + Otherwise, 2.1182 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1183 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1184 2.1185 <dt>U+007E TILDE (~) 2.1186 <dd> 2.1187 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1188 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1189 U+003D EQUALS SIGN (=), 2.1190 consume it 2.1191 and return an <a class="production css-code" data-link-type=type href=#typedef-include-match-token title="<include-match-token>"><include-match-token></a>. 2.1192 2.1193 -<p> Otherwise, 2.1194 + Otherwise, 2.1195 return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1196 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1197 2.1198 <dt>EOF 2.1199 <dd> 2.1200 -<p> Return an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>. 2.1201 + Return an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>. 2.1202 2.1203 <dt>anything else 2.1204 <dd> 2.1205 -<p> Return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1206 + Return a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> 2.1207 with its value set to the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1208 </dl> 2.1209 2.1210 @@ -2221,10 +2248,10 @@ 2.1211 <h4 class="heading settled heading" data-level=4.3.2 id=consume-comments><span class=secno>4.3.2 </span><span class=content> 2.1212 Consume comments</span><a class=self-link href=#consume-comments></a></h4> 2.1213 2.1214 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-comments0>consume comments<a class=self-link href=#consume-comments0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1215 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-comments0>consume comments<a class=self-link href=#consume-comments0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1216 It returns nothing. 2.1217 2.1218 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next two input code point</a> are 2.1219 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next two input code point</a> are 2.1220 U+002F SOLIDUS (/) followed by a U+002A ASTERISK (*), 2.1221 consume them 2.1222 and all following <a data-link-type=dfn href=#code-point title="code points">code points</a> up to and including 2.1223 @@ -2232,7 +2259,7 @@ 2.1224 or up to an EOF code point. 2.1225 Return to the start of this step. 2.1226 2.1227 -<p> Otherwise, 2.1228 + Otherwise, 2.1229 return nothing. 2.1230 2.1231 2.1232 @@ -2240,12 +2267,12 @@ 2.1233 <h4 class="heading settled heading" data-level=4.3.3 id=consume-a-numeric-token><span class=secno>4.3.3 </span><span class=content> 2.1234 Consume a numeric token</span><a class=self-link href=#consume-a-numeric-token></a></h4> 2.1235 2.1236 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-numeric-token0>consume a numeric token<a class=self-link href=#consume-a-numeric-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1237 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-numeric-token0>consume a numeric token<a class=self-link href=#consume-a-numeric-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1238 It returns either a <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a>, <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a>, or <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a>. 2.1239 2.1240 -<p> <a data-link-type=dfn href=#consume-a-number0 title="consume a number">Consume a number</a>. 2.1241 - 2.1242 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="would start an identifier">would start an identifier</a>, 2.1243 + <a data-link-type=dfn href=#consume-a-number0 title="consume a number">Consume a number</a>. 2.1244 + 2.1245 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 3 input code points</a> <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="would start an identifier">would start an identifier</a>, 2.1246 then: 2.1247 2.1248 <ol> 2.1249 @@ -2258,13 +2285,13 @@ 2.1250 <li>Return the <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a>. 2.1251 </ol> 2.1252 2.1253 -<p> Otherwise, 2.1254 + Otherwise, 2.1255 if the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0025 PERCENTAGE SIGN (%), 2.1256 consume it. 2.1257 Create a <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a> with the same representation and value as the returned number, 2.1258 and return it. 2.1259 2.1260 -<p> Otherwise, 2.1261 + Otherwise, 2.1262 create a <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a> with the same representation, value, and type flag as the returned number, 2.1263 and return it. 2.1264 2.1265 @@ -2272,25 +2299,25 @@ 2.1266 <h4 class="heading settled heading" data-level=4.3.4 id=consume-an-ident-like-token><span class=secno>4.3.4 </span><span class=content> 2.1267 Consume an ident-like token</span><a class=self-link href=#consume-an-ident-like-token></a></h4> 2.1268 2.1269 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-an-ident-like-token0>consume an ident-like token<a class=self-link href=#consume-an-ident-like-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1270 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-an-ident-like-token0>consume an ident-like token<a class=self-link href=#consume-an-ident-like-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1271 It returns an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>, <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>, <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>, or <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>. 2.1272 2.1273 -<p> <a data-link-type=dfn href=#consume-a-name0 title="consume a name">Consume a name</a>. 2.1274 - 2.1275 -<p> If the returned string’s value is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "url", 2.1276 + <a data-link-type=dfn href=#consume-a-name0 title="consume a name">Consume a name</a>. 2.1277 + 2.1278 + If the returned string’s value is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "url", 2.1279 and the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0028 LEFT PARENTHESIS ((), 2.1280 consume it. 2.1281 <a data-link-type=dfn href=#consume-a-url-token0 title="consume a url token">Consume a url token</a>, 2.1282 and return it. 2.1283 2.1284 -<p> Otherwise, 2.1285 + Otherwise, 2.1286 if the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0028 LEFT PARENTHESIS ((), 2.1287 consume it. 2.1288 Create a <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a> 2.1289 with its value set to the returned string 2.1290 and return it. 2.1291 2.1292 -<p> Otherwise, 2.1293 + Otherwise, 2.1294 create an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a> 2.1295 with its value set to the returned string 2.1296 and return it. 2.1297 @@ -2299,94 +2326,94 @@ 2.1298 <h4 class="heading settled heading" data-level=4.3.5 id=consume-a-string-token><span class=secno>4.3.5 </span><span class=content> 2.1299 Consume a string token</span><a class=self-link href=#consume-a-string-token></a></h4> 2.1300 2.1301 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-string-token0>consume a string token<a class=self-link href=#consume-a-string-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1302 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-string-token0>consume a string token<a class=self-link href=#consume-a-string-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1303 It returns either a <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a> or <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a>. 2.1304 2.1305 -<p> This algorithm may be called with an <var>ending code point</var>, 2.1306 + This algorithm may be called with an <var>ending code point</var>, 2.1307 which denotes the <a data-link-type=dfn href=#code-point title="code point">code point</a> that ends the string. 2.1308 If an <var>ending code point</var> is not specified, 2.1309 the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> is used. 2.1310 2.1311 -<p> Initially create a <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a> with its value set to the empty string. 2.1312 - 2.1313 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1314 + Initially create a <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a> with its value set to the empty string. 2.1315 + 2.1316 + Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1317 2.1318 <dl> 2.1319 <dt><var>ending code point</var> 2.1320 <dt>EOF 2.1321 <dd> 2.1322 -<p> Return the <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>. 2.1323 + Return the <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>. 2.1324 2.1325 <dt><a data-link-type=dfn href=#newline title=newline>newline</a> 2.1326 <dd> 2.1327 -<p> This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1328 + This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1329 <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>, 2.1330 create a <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a>, and return it. 2.1331 2.1332 <dt>U+005C REVERSE SOLIDUS (\) 2.1333 <dd> 2.1334 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is EOF, 2.1335 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is EOF, 2.1336 do nothing. 2.1337 2.1338 -<p> Otherwise, 2.1339 + Otherwise, 2.1340 if the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a newline, 2.1341 consume it. 2.1342 2.1343 -<p> Otherwise, 2.1344 + Otherwise, 2.1345 <span class=note>(the stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a>)</span> 2.1346 <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">consume an escaped code point</a> 2.1347 and append the returned <a data-link-type=dfn href=#code-point title="code point">code point</a> to the <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>’s value. 2.1348 2.1349 <dt>anything else 2.1350 <dd> 2.1351 -<p> Append the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> to the <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>’s value. 2.1352 + Append the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> to the <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>’s value. 2.1353 </dl> 2.1354 2.1355 2.1356 <h4 class="heading settled heading" data-level=4.3.6 id=consume-a-url-token><span class=secno>4.3.6 </span><span class=content> 2.1357 Consume a url token</span><a class=self-link href=#consume-a-url-token></a></h4> 2.1358 2.1359 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-url-token0>consume a url token<a class=self-link href=#consume-a-url-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1360 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-url-token0>consume a url token<a class=self-link href=#consume-a-url-token0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1361 It returns either a <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> or a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>. 2.1362 2.1363 -<p class=note> Note: This algorithm assumes that the initial "url(" has already been consumed. 2.1364 - 2.1365 -<p> Execute the following steps in order: 2.1366 + Note: This algorithm assumes that the initial "url(" has already been consumed. 2.1367 + 2.1368 + Execute the following steps in order: 2.1369 2.1370 <ol> 2.1371 <li> 2.1372 -<p> Initially create a <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> with its value set to the empty string. 2.1373 + Initially create a <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> with its value set to the empty string. 2.1374 2.1375 <li> 2.1376 -<p> Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1377 + Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1378 2.1379 <li> 2.1380 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is EOF, 2.1381 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is EOF, 2.1382 return the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>. 2.1383 2.1384 <li> 2.1385 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 2.1386 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 2.1387 then: 2.1388 2.1389 <ol> 2.1390 <li> 2.1391 -<p> Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>, 2.1392 + Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>, 2.1393 then <a data-link-type=dfn href=#consume-a-string-token0 title="consume a string token">consume a string token</a>. 2.1394 2.1395 <li> 2.1396 -<p> If a <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a> was returned, 2.1397 + If a <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a> was returned, 2.1398 <a data-link-type=dfn href=#consume-the-remnants-of-a-bad-url0 title="consume the remnants of a bad url">consume the remnants of a bad url</a>, 2.1399 create a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>, 2.1400 and return it. 2.1401 2.1402 <li> 2.1403 -<p> Set the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>’s value to the returned <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>’s value. 2.1404 + Set the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>’s value to the returned <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a>’s value. 2.1405 2.1406 <li> 2.1407 -<p> Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1408 + Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1409 2.1410 <li> 2.1411 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.1412 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.1413 consume it and return the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>; 2.1414 otherwise, 2.1415 <a data-link-type=dfn href=#consume-the-remnants-of-a-bad-url0 title="consume the remnants of a bad url">consume the remnants of a bad url</a>, 2.1416 @@ -2395,17 +2422,17 @@ 2.1417 </ol> 2.1418 2.1419 <li> 2.1420 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1421 + Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1422 2.1423 <dl> 2.1424 <dt>U+0029 RIGHT PARENTHESIS ()) 2.1425 <dt>EOF 2.1426 <dd> 2.1427 -<p> Return the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>. 2.1428 + Return the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>. 2.1429 2.1430 <dt><a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> 2.1431 <dd> 2.1432 -<p> Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1433 + Consume as much <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a> as possible. 2.1434 If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.1435 consume it and return the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>; 2.1436 otherwise, 2.1437 @@ -2418,18 +2445,18 @@ 2.1438 <dt>U+0028 LEFT PARENTHESIS (() 2.1439 <dt><a data-link-type=dfn href=#non-printable-code-point title="non-printable code point">non-printable code point</a> 2.1440 <dd> 2.1441 -<p> This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1442 + This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1443 <a data-link-type=dfn href=#consume-the-remnants-of-a-bad-url0 title="consume the remnants of a bad url">Consume the remnants of a bad url</a>, 2.1444 create a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>, 2.1445 and return it. 2.1446 2.1447 <dt>U+005C REVERSE SOLIDUS 2.1448 <dd> 2.1449 -<p> If the stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a>, 2.1450 + If the stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a>, 2.1451 <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">consume an escaped code point</a> 2.1452 and append the returned <a data-link-type=dfn href=#code-point title="code point">code point</a> to the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>’s value. 2.1453 2.1454 -<p> Otherwise, 2.1455 + Otherwise, 2.1456 this is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.1457 <a data-link-type=dfn href=#consume-the-remnants-of-a-bad-url0 title="consume the remnants of a bad url">Consume the remnants of a bad url</a>, 2.1458 create a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>, 2.1459 @@ -2437,7 +2464,7 @@ 2.1460 2.1461 <dt>anything else 2.1462 <dd> 2.1463 -<p> Append the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> 2.1464 + Append the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a> 2.1465 to the <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>’s value. 2.1466 </dl> 2.1467 </ol> 2.1468 @@ -2446,45 +2473,45 @@ 2.1469 <h4 class="heading settled heading" data-level=4.3.7 id=consume-a-unicode-range-token><span class=secno>4.3.7 </span><span class=content> 2.1470 Consume a unicode-range token</span><a class=self-link href=#consume-a-unicode-range-token></a></h4> 2.1471 2.1472 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-unicode-range-token0>consume a unicode-range token<a class=self-link href=#consume-a-unicode-range-token0></a></dfn>. 2.1473 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-unicode-range-token0>consume a unicode-range token<a class=self-link href=#consume-a-unicode-range-token0></a></dfn>. 2.1474 It returns a <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a>. 2.1475 2.1476 -<p class=note> Note: This algorithm assumes that the initial "u+" has been consumed, 2.1477 + Note: This algorithm assumes that the initial "u+" has been consumed, 2.1478 and the next <a data-link-type=dfn href=#code-point title="code point">code point</a> verified to be a <a data-link-type=dfn href=#hex-digit title="hex digit">hex digit</a> or a "?". 2.1479 2.1480 -<p> Execute the following steps in order: 2.1481 + Execute the following steps in order: 2.1482 2.1483 <ol> 2.1484 <li> 2.1485 -<p> Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 6. 2.1486 + Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 6. 2.1487 If less than 6 <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> were consumed, 2.1488 consume as many U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code points">code points</a> as possible, 2.1489 but no more than enough to make the total of <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> and U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code points">code points</a> equal to 6. 2.1490 2.1491 -<p> If any U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code points">code points</a> were consumed, 2.1492 + If any U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code points">code points</a> were consumed, 2.1493 then: 2.1494 2.1495 <ol> 2.1496 <li> 2.1497 -<p> Interpret the consumed <a data-link-type=dfn href=#code-point title="code points">code points</a> as a hexadecimal number, 2.1498 + Interpret the consumed <a data-link-type=dfn href=#code-point title="code points">code points</a> as a hexadecimal number, 2.1499 with the U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code points">code points</a> replaced by U+0030 DIGIT ZERO (0) <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1500 This is the <a data-link-type=dfn href=#unicode-range-start title="start of the range">start of the range</a>. 2.1501 2.1502 <li> 2.1503 -<p> Interpret the consumed <a data-link-type=dfn href=#code-point title="code points">code points</a> as a hexadecimal number again, 2.1504 + Interpret the consumed <a data-link-type=dfn href=#code-point title="code points">code points</a> as a hexadecimal number again, 2.1505 with the U+003F QUESTION MARK (?) <a data-link-type=dfn href=#code-point title="code point">code point</a> replaced by U+0046 LATIN CAPITAL LETTER F (F) <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1506 This is the <a data-link-type=dfn href=#unicode-range-end title="end of the range">end of the range</a>. 2.1507 2.1508 <li> 2.1509 -<p> Return a new <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> with the above start and end. 2.1510 + Return a new <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> with the above start and end. 2.1511 </ol> 2.1512 2.1513 -<p> Otherwise, 2.1514 + Otherwise, 2.1515 interpret the digits as a hexadecimal number. 2.1516 This is the <a data-link-type=dfn href=#unicode-range-start title="start of the range">start of the range</a>. 2.1517 2.1518 <li> 2.1519 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code point</a> are 2.1520 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code point</a> are 2.1521 U+002D HYPHEN-MINUS (-) followed by a <a data-link-type=dfn href=#hex-digit title="hex digit">hex digit</a>, 2.1522 then: 2.1523 2.1524 @@ -2492,34 +2519,34 @@ 2.1525 <li>Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>. 2.1526 2.1527 <li> 2.1528 -<p> Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 6. 2.1529 + Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 6. 2.1530 Interpret the digits as a hexadecimal number. 2.1531 This is the <a data-link-type=dfn href=#unicode-range-end title="end of the range">end of the range</a>. 2.1532 </ol> 2.1533 2.1534 <li> 2.1535 -<p> Otherwise, the <a data-link-type=dfn href=#unicode-range-end title="end of the range">end of the range</a> is the <a data-link-type=dfn href=#unicode-range-start title="start of the range">start of the range</a>. 2.1536 + Otherwise, the <a data-link-type=dfn href=#unicode-range-end title="end of the range">end of the range</a> is the <a data-link-type=dfn href=#unicode-range-start title="start of the range">start of the range</a>. 2.1537 2.1538 <li> 2.1539 -<p> Return the <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> with the above start and end. 2.1540 + Return the <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> with the above start and end. 2.1541 </ol> 2.1542 2.1543 2.1544 <h4 class="heading settled heading" data-level=4.3.8 id=consume-an-escaped-code-point><span class=secno>4.3.8 </span><span class=content> 2.1545 Consume an escaped code point</span><a class=self-link href=#consume-an-escaped-code-point></a></h4> 2.1546 2.1547 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-an-escaped-code-point0>consume an escaped code point<a class=self-link href=#consume-an-escaped-code-point0></a></dfn>. 2.1548 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-an-escaped-code-point0>consume an escaped code point<a class=self-link href=#consume-an-escaped-code-point0></a></dfn>. 2.1549 It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed 2.1550 and that the next input code point has already been verified 2.1551 to not be a <a data-link-type=dfn href=#newline title=newline>newline</a>. 2.1552 It will return a <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.1553 2.1554 -<p> Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>. 2.1555 + Consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>. 2.1556 2.1557 <dl> 2.1558 <dt><a data-link-type=dfn href=#hex-digit title="hex digit">hex digit</a> 2.1559 <dd> 2.1560 -<p> Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 5. 2.1561 + Consume as many <a data-link-type=dfn href=#hex-digit title="hex digits">hex digits</a> as possible, but no more than 5. 2.1562 <span class=note>Note that this means 1-6 hex digits have been consumed in total.</span> 2.1563 If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is 2.1564 <a data-link-type=dfn href=#whitespace title=whitespace>whitespace</a>, 2.1565 @@ -2533,18 +2560,18 @@ 2.1566 2.1567 <dt>EOF code point 2.1568 <dd> 2.1569 -<p> Return U+FFFD REPLACEMENT CHARACTER (�). 2.1570 + Return U+FFFD REPLACEMENT CHARACTER (�). 2.1571 2.1572 <dt>anything else 2.1573 <dd> 2.1574 -<p> Return the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1575 + Return the <a data-link-type=dfn href=#current-input-code-point title="current input code point">current input code point</a>. 2.1576 </dl> 2.1577 2.1578 2.1579 <h4 class="heading settled heading" data-level=4.3.9 id=starts-with-a-valid-escape><span class=secno>4.3.9 </span><span class=content> 2.1580 Check if two code points are a valid escape</span><a class=self-link href=#starts-with-a-valid-escape></a></h4> 2.1581 2.1582 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-two-code-points-are-a-valid-escape title="check if two code points are a valid escape|are a valid escape|starts with a valid escape">check if two code points are a valid escape<a class=self-link href=#check-if-two-code-points-are-a-valid-escape></a></dfn>. 2.1583 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-two-code-points-are-a-valid-escape title="check if two code points are a valid escape|are a valid escape|starts with a valid escape">check if two code points are a valid escape<a class=self-link href=#check-if-two-code-points-are-a-valid-escape></a></dfn>. 2.1584 The algorithm described here can be called explicitly with two <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.1585 or can be called with the input stream itself. 2.1586 In the latter case, the two <a data-link-type=dfn href=#code-point title="code points">code points</a> in question are 2.1587 @@ -2552,22 +2579,22 @@ 2.1588 and the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a>, 2.1589 in that order. 2.1590 2.1591 -<p class=note> Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.1592 - 2.1593 -<p> If the first <a data-link-type=dfn href=#code-point title="code point">code point</a> is not U+005D REVERSE SOLIDUS (\), 2.1594 + Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code point">code point</a>. 2.1595 + 2.1596 + If the first <a data-link-type=dfn href=#code-point title="code point">code point</a> is not U+005D REVERSE SOLIDUS (\), 2.1597 return false. 2.1598 2.1599 -<p> Otherwise, 2.1600 + Otherwise, 2.1601 if the second <a data-link-type=dfn href=#code-point title="code point">code point</a> is a <a data-link-type=dfn href=#newline title=newline>newline</a>, 2.1602 return false. 2.1603 2.1604 -<p> Otherwise, return true. 2.1605 + Otherwise, return true. 2.1606 2.1607 2.1608 <h4 class="heading settled heading" data-level=4.3.10 id=would-start-an-identifier><span class=secno>4.3.10 </span><span class=content> 2.1609 Check if three code points would start an identifier</span><a class=self-link href=#would-start-an-identifier></a></h4> 2.1610 2.1611 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-three-code-points-would-start-an-identifier title="check if three code points would start an identifier|starts with an identifier|start with an identifier|would start an identifier">check if three code points would start an <a data-link-type=dfn href=#identifier title=identifier>identifier</a><a class=self-link href=#check-if-three-code-points-would-start-an-identifier></a></dfn>. 2.1612 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-three-code-points-would-start-an-identifier title="check if three code points would start an identifier|starts with an identifier|start with an identifier|would start an identifier">check if three code points would start an <a data-link-type=dfn href=#identifier title=identifier>identifier</a><a class=self-link href=#check-if-three-code-points-would-start-an-identifier></a></dfn>. 2.1613 The algorithm described here can be called explicitly with three <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.1614 or can be called with the input stream itself. 2.1615 In the latter case, the three <a data-link-type=dfn href=#code-point title="code points">code points</a> in question are 2.1616 @@ -2575,14 +2602,14 @@ 2.1617 and the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next two input code points</a>, 2.1618 in that order. 2.1619 2.1620 -<p class=note> Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1621 - 2.1622 -<p> Look at the first <a data-link-type=dfn href=#code-point title="code point">code point</a>: 2.1623 + Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1624 + 2.1625 + Look at the first <a data-link-type=dfn href=#code-point title="code point">code point</a>: 2.1626 2.1627 <dl> 2.1628 <dt>U+002D HYPHEN-MINUS 2.1629 <dd> 2.1630 -<p> If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> is a <a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a> 2.1631 + If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> is a <a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a> 2.1632 or a U+002D HYPHEN-MINUS, 2.1633 or the second and third <a data-link-type=dfn href=#code-point title="code points">code points</a> <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="are a valid escape">are a valid escape</a>, 2.1634 return true. 2.1635 @@ -2590,19 +2617,23 @@ 2.1636 2.1637 <dt><a data-link-type=dfn href=#name-start-code-point title="name-start code point">name-start code point</a> 2.1638 <dd> 2.1639 -<p> Return true. 2.1640 + Return true. 2.1641 2.1642 <dt>U+005C REVERSE SOLIDUS (\) 2.1643 <dd> 2.1644 -<p> If the first and second <a data-link-type=dfn href=#code-point title="code points">code points</a> <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="are a valid escape">are a valid escape</a>, 2.1645 + If the first and second <a data-link-type=dfn href=#code-point title="code points">code points</a> <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="are a valid escape">are a valid escape</a>, 2.1646 return true. 2.1647 Otherwise, return false. 2.1648 + 2.1649 + <dt>anything else 2.1650 + <dd> 2.1651 + Return false. 2.1652 </dl> 2.1653 2.1654 <h4 class="heading settled heading" data-level=4.3.11 id=starts-with-a-number><span class=secno>4.3.11 </span><span class=content> 2.1655 Check if three code points would start a number</span><a class=self-link href=#starts-with-a-number></a></h4> 2.1656 2.1657 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-three-code-points-would-start-a-number title="check if three code points would start a number|starts with a number|start with a number|would start a number">check if three code points would start a number<a class=self-link href=#check-if-three-code-points-would-start-a-number></a></dfn>. 2.1658 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=check-if-three-code-points-would-start-a-number title="check if three code points would start a number|starts with a number|start with a number|would start a number">check if three code points would start a number<a class=self-link href=#check-if-three-code-points-would-start-a-number></a></dfn>. 2.1659 The algorithm described here can be called explicitly with three <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.1660 or can be called with the input stream itself. 2.1661 In the latter case, the three <a data-link-type=dfn href=#code-point title="code points">code points</a> in question are 2.1662 @@ -2610,74 +2641,74 @@ 2.1663 and the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next two input code points</a>, 2.1664 in that order. 2.1665 2.1666 -<p class=note> Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1667 - 2.1668 -<p> Look at the first <a data-link-type=dfn href=#code-point title="code point">code point</a>: 2.1669 + Note: This algorithm will not consume any additional <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1670 + 2.1671 + Look at the first <a data-link-type=dfn href=#code-point title="code point">code point</a>: 2.1672 2.1673 <dl> 2.1674 <dt>U+002B PLUS SIGN (+) 2.1675 <dt>U+002D HYPHEN-MINUS (-) 2.1676 <dd> 2.1677 -<p> If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1678 + If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1679 is a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1680 return true. 2.1681 2.1682 -<p> Otherwise, 2.1683 + Otherwise, 2.1684 if the second <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1685 is a U+002E FULL STOP (.) 2.1686 and the third <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1687 is a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1688 return true. 2.1689 2.1690 -<p> Otherwise, return false. 2.1691 + Otherwise, return false. 2.1692 2.1693 <dt>U+002E FULL STOP (.) 2.1694 <dd> 2.1695 -<p> If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1696 + If the second <a data-link-type=dfn href=#code-point title="code point">code point</a> 2.1697 is a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1698 return true. 2.1699 Otherwise, return false. 2.1700 2.1701 <dt><a data-link-type=dfn href=#digit title=digit>digit</a> 2.1702 <dd> 2.1703 -<p> Return true. 2.1704 + Return true. 2.1705 2.1706 <dt>anything else 2.1707 <dd> 2.1708 -<p> Return false. 2.1709 + Return false. 2.1710 </dl> 2.1711 2.1712 2.1713 <h4 class="heading settled heading" data-level=4.3.12 id=consume-a-name><span class=secno>4.3.12 </span><span class=content> 2.1714 Consume a name</span><a class=self-link href=#consume-a-name></a></h4> 2.1715 2.1716 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-name0>consume a name<a class=self-link href=#consume-a-name0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1717 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-name0>consume a name<a class=self-link href=#consume-a-name0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1718 It returns a string containing 2.1719 the largest name that can be formed from adjacent <a data-link-type=dfn href=#code-point title="code points">code points</a> in the stream, starting from the first. 2.1720 2.1721 -<p class=note> Note: This algorithm does not do the verification of the first few <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.1722 + Note: This algorithm does not do the verification of the first few <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.1723 that are necessary to ensure the returned <a data-link-type=dfn href=#code-point title="code points">code points</a> would constitute an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>. 2.1724 If that is the intended use, 2.1725 ensure that the stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-an-identifier title="starts with an identifier">starts with an identifier</a> 2.1726 before calling this algorithm. 2.1727 2.1728 -<p> Let <var>result</var> initially be an empty string. 2.1729 - 2.1730 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1731 + Let <var>result</var> initially be an empty string. 2.1732 + 2.1733 + Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1734 2.1735 <dl> 2.1736 <dt><a data-link-type=dfn href=#name-code-point title="name code point">name code point</a> 2.1737 <dd> 2.1738 -<p> Append the <a data-link-type=dfn href=#code-point title="code point">code point</a> to <var>result</var>. 2.1739 + Append the <a data-link-type=dfn href=#code-point title="code point">code point</a> to <var>result</var>. 2.1740 2.1741 <dt>the stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a> 2.1742 <dd> 2.1743 -<p> <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">Consume an escaped code point</a>. 2.1744 + <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">Consume an escaped code point</a>. 2.1745 Append the returned <a data-link-type=dfn href=#code-point title="code point">code point</a> to <var>result</var>. 2.1746 2.1747 <dt>anything else 2.1748 <dd> 2.1749 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>. 2.1750 + <a data-link-type=dfn href=#reconsume-the-current-input-code-point title="reconsume the current input code point">Reconsume the current input code point</a>. 2.1751 Return <var>result</var>. 2.1752 </dl> 2.1753 2.1754 @@ -2685,34 +2716,34 @@ 2.1755 <h4 class="heading settled heading" data-level=4.3.13 id=consume-a-number><span class=secno>4.3.13 </span><span class=content> 2.1756 Consume a number</span><a class=self-link href=#consume-a-number></a></h4> 2.1757 2.1758 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-number0>consume a number<a class=self-link href=#consume-a-number0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1759 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-a-number0>consume a number<a class=self-link href=#consume-a-number0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>. 2.1760 It returns a 3-tuple of 2.1761 a string representation, 2.1762 a numeric value, 2.1763 and a type flag which is either "integer" or "number". 2.1764 2.1765 -<p class=note> Note: This algorithm does not do the verification of the first few <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.1766 + Note: This algorithm does not do the verification of the first few <a data-link-type=dfn href=#code-point title="code points">code points</a> 2.1767 that are necessary to ensure a number can be obtained from the stream. 2.1768 Ensure that the stream <a data-link-type=dfn href=#check-if-three-code-points-would-start-a-number title="starts with a number">starts with a number</a> 2.1769 before calling this algorithm. 2.1770 2.1771 -<p> Execute the following steps in order: 2.1772 + Execute the following steps in order: 2.1773 2.1774 <ol> 2.1775 <li> 2.1776 -<p> Initially set <var>repr</var> to the empty string 2.1777 + Initially set <var>repr</var> to the empty string 2.1778 and <var>type</var> to "integer". 2.1779 2.1780 <li> 2.1781 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 2.1782 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 2.1783 consume it and append it to <var>repr</var>. 2.1784 2.1785 <li> 2.1786 -<p> While the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1787 + While the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> is a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1788 consume it and append it to <var>repr</var>. 2.1789 2.1790 <li> 2.1791 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1792 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1793 U+002E FULL STOP (.) followed by a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1794 then: 2.1795 2.1796 @@ -2724,7 +2755,7 @@ 2.1797 </ol> 2.1798 2.1799 <li> 2.1800 -<p> If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 or 3 input code points</a> are 2.1801 + If the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next 2 or 3 input code points</a> are 2.1802 U+0045 LATIN CAPITAL LETTER E (E) or U+0065 LATIN SMALL LETTER E (e), 2.1803 optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+), 2.1804 followed by a <a data-link-type=dfn href=#digit title=digit>digit</a>, 2.1805 @@ -2738,25 +2769,25 @@ 2.1806 </ol> 2.1807 2.1808 <li> 2.1809 -<p> <a data-link-type=dfn href=#convert-a-string-to-a-number0 title="convert a string to a number">Convert <var>repr</var> to a number</a>, 2.1810 + <a data-link-type=dfn href=#convert-a-string-to-a-number0 title="convert a string to a number">Convert <var>repr</var> to a number</a>, 2.1811 and set the <var>value</var> to the returned value. 2.1812 2.1813 <li> 2.1814 -<p> Return a 3-tuple of <var>repr</var>, <var>value</var>, and <var>type</var>. 2.1815 + Return a 3-tuple of <var>repr</var>, <var>value</var>, and <var>type</var>. 2.1816 </ol> 2.1817 2.1818 2.1819 <h4 class="heading settled heading" data-level=4.3.14 id=convert-a-string-to-a-number><span class=secno>4.3.14 </span><span class=content> 2.1820 Convert a string to a number</span><a class=self-link href=#convert-a-string-to-a-number></a></h4> 2.1821 2.1822 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=convert-a-string-to-a-number0>convert a string to a number<a class=self-link href=#convert-a-string-to-a-number0></a></dfn>. 2.1823 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=convert-a-string-to-a-number0>convert a string to a number<a class=self-link href=#convert-a-string-to-a-number0></a></dfn>. 2.1824 It returns a number. 2.1825 2.1826 -<p class=note> Note: This algorithm does not do any verification to ensure that the string contains only a number. 2.1827 + Note: This algorithm does not do any verification to ensure that the string contains only a number. 2.1828 Ensure that the string contains only a valid CSS number 2.1829 before calling this algorithm. 2.1830 2.1831 -<p> Divide the string into seven components, 2.1832 + Divide the string into seven components, 2.1833 in order from left to right: 2.1834 2.1835 <ol> 2.1836 @@ -2800,35 +2831,35 @@ 2.1837 otherwise, let <var>e</var> be the number 0. 2.1838 </ol> 2.1839 2.1840 -<p> Return the number <code>s·(i + f·10<sup>-d</sup>)·10<sup>te</sup></code>. 2.1841 + Return the number <code>s·(i + f·10<sup>-d</sup>)·10<sup>te</sup></code>. 2.1842 2.1843 2.1844 <h4 class="heading settled heading" data-level=4.3.15 id=consume-the-remnants-of-a-bad-url><span class=secno>4.3.15 </span><span class=content> 2.1845 Consume the remnants of a bad url</span><a class=self-link href=#consume-the-remnants-of-a-bad-url></a></h4> 2.1846 2.1847 -<p> This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url<a class=self-link href=#consume-the-remnants-of-a-bad-url0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.1848 + This section describes how to <dfn data-dfn-type=dfn data-noexport="" id=consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url<a class=self-link href=#consume-the-remnants-of-a-bad-url0></a></dfn> from a stream of <a data-link-type=dfn href=#code-point title="code points">code points</a>, 2.1849 "cleaning up" after the tokenizer realizes that it’s in the middle of a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a> rather than a <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>. 2.1850 It returns nothing; 2.1851 its sole use is to consume enough of the input stream to reach a recovery point 2.1852 where normal tokenizing can resume. 2.1853 2.1854 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1855 + Repeatedly consume the <a data-link-type=dfn href=#next-input-code-point title="next input code point">next input code point</a> from the stream: 2.1856 2.1857 <dl> 2.1858 <dt>U+0029 RIGHT PARENTHESIS ()) 2.1859 <dt>EOF 2.1860 <dd> 2.1861 -<p> Return. 2.1862 + Return. 2.1863 2.1864 <dt>the input stream <a data-link-type=dfn href=#check-if-two-code-points-are-a-valid-escape title="starts with a valid escape">starts with a valid escape</a> 2.1865 <dd> 2.1866 -<p> <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">Consume an escaped code point</a>. 2.1867 + <a data-link-type=dfn href=#consume-an-escaped-code-point0 title="consume an escaped code point">Consume an escaped code point</a>. 2.1868 <span class=note>This allows an escaped right parenthesis ("\)") to be encountered without ending the <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>. 2.1869 This is otherwise identical to the "anything else" clause.</span> 2.1870 2.1871 <dt>anything else 2.1872 <dd> 2.1873 -<p> Do nothing. 2.1874 + Do nothing. 2.1875 </dl> 2.1876 2.1877 2.1878 @@ -2837,30 +2868,30 @@ 2.1879 <h2 class="heading settled heading" data-level=5 id=parsing><span class=secno>5 </span><span class=content> 2.1880 Parsing</span><a class=self-link href=#parsing></a></h2> 2.1881 2.1882 -<p> The input to the parsing stage is a stream or list of tokens from the tokenization stage. 2.1883 + The input to the parsing stage is a stream or list of tokens from the tokenization stage. 2.1884 The output depends on how the parser is invoked, 2.1885 as defined by the entry points listed later in this section. 2.1886 The parser output can consist of at-rules, 2.1887 qualified rules, 2.1888 and/or declarations. 2.1889 2.1890 -<p> The parser’s output is constructed according to the fundamental syntax of CSS, 2.1891 + The parser’s output is constructed according to the fundamental syntax of CSS, 2.1892 without regards for the validity of any specific item. 2.1893 Implementations may check the validity of items as they are returned by the various parser algorithms 2.1894 and treat the algorithm as returning nothing if the item was invalid according to the implementation’s own grammar knowledge, 2.1895 or may construct a full tree as specified 2.1896 and "clean up" afterwards by removing any invalid items. 2.1897 2.1898 -<p> The items that can appear in the tree are: 2.1899 + The items that can appear in the tree are: 2.1900 2.1901 <dl> 2.1902 <dt><dfn data-dfn-type=dfn data-export="" id=at-rule>at-rule<a class=self-link href=#at-rule></a></dfn> 2.1903 <dd> 2.1904 -<p> An at-rule has a name, 2.1905 + An at-rule has a name, 2.1906 a prelude consisting of a list of component values, 2.1907 and an optional block consisting of a simple {} block. 2.1908 2.1909 -<p class=note> Note: This specification places no limits on what an at-rule’s block may contain. 2.1910 + Note: This specification places no limits on what an at-rule’s block may contain. 2.1911 Individual at-rules must define whether they accept a block, 2.1912 and if so, 2.1913 how to parse it 2.1914 @@ -2868,21 +2899,21 @@ 2.1915 2.1916 <dt><dfn data-dfn-type=dfn data-export="" id=qualified-rule>qualified rule<a class=self-link href=#qualified-rule></a></dfn> 2.1917 <dd> 2.1918 -<p> A qualified rule has 2.1919 + A qualified rule has 2.1920 a prelude consisting of a list of component values, 2.1921 and a block consisting of a simple {} block. 2.1922 2.1923 -<p class=note> Note: Most qualified rules will be style rules, 2.1924 + Note: Most qualified rules will be style rules, 2.1925 where the prelude is a selector <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a> 2.1926 and the block a <a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">list of declarations</a>. 2.1927 2.1928 <dt><dfn data-dfn-type=dfn data-export="" id=declaration>declaration<a class=self-link href=#declaration></a></dfn> 2.1929 <dd> 2.1930 -<p> A declaration has a name, 2.1931 + A declaration has a name, 2.1932 a value consisting of a list of component values, 2.1933 and an <var>important</var> flag which is initially unset. 2.1934 2.1935 -<p> Declarations are further categorized as "properties" or "descriptors", 2.1936 + Declarations are further categorized as "properties" or "descriptors", 2.1937 with the former typically appearing in <a data-link-type=dfn href=#qualified-rule title="qualified rules">qualified rules</a> 2.1938 and the latter appearing in <a data-link-type=dfn href=#at-rule title=at-rules>at-rules</a>. 2.1939 (This categorization does not occur at the Syntax level; 2.1940 @@ -2891,23 +2922,23 @@ 2.1941 2.1942 <dt><dfn data-dfn-type=dfn data-export="" id=component-value>component value<a class=self-link href=#component-value></a></dfn> 2.1943 <dd> 2.1944 -<p> A component value is one of the preserved tokens, 2.1945 + A component value is one of the preserved tokens, 2.1946 a function, 2.1947 or a simple block. 2.1948 2.1949 <dt><dfn data-dfn-type=dfn data-noexport="" id=preserved-tokens>preserved tokens<a class=self-link href=#preserved-tokens></a></dfn> 2.1950 <dd> 2.1951 -<p> Any token produced by the tokenizer 2.1952 + Any token produced by the tokenizer 2.1953 except for <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>s, 2.1954 <a href=#tokendef-open-curly><{-token></a>s, 2.1955 <a href=#tokendef-open-paren><(-token></a>s, 2.1956 and <a href=#tokendef-open-square><[-token></a>s. 2.1957 2.1958 -<p class=note> Note: The non-preserved tokens listed above are always consumed into higher-level objects, 2.1959 + Note: The non-preserved tokens listed above are always consumed into higher-level objects, 2.1960 either functions or simple blocks, 2.1961 and so never appear in any parser output themselves. 2.1962 2.1963 -<p class=note> Note: The tokens <a href=#tokendef-close-curly><}-token></a>s, <a href=#tokendef-close-paren><)-token></a>s, <a href=#tokendef-close-square><]-token></a>, <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a> are always parse errors, 2.1964 + Note: The tokens <a href=#tokendef-close-curly><}-token></a>s, <a href=#tokendef-close-paren><)-token></a>s, <a href=#tokendef-close-square><]-token></a>, <a class="production css-code" data-link-type=type href=#typedef-bad-string-token title="<bad-string-token>"><bad-string-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a> are always parse errors, 2.1965 but they are preserved in the token stream by this specification to allow other specs, 2.1966 such as Media Queries, 2.1967 to define more fine-grainted error-handling 2.1968 @@ -2915,26 +2946,26 @@ 2.1969 2.1970 <dt><dfn data-dfn-type=dfn data-export="" id=function>function<a class=self-link href=#function></a></dfn> 2.1971 <dd> 2.1972 -<p> A function has a name 2.1973 + A function has a name 2.1974 and a value consisting of a list of component values. 2.1975 2.1976 <dt><dfn data-dfn-type=dfn data-export="" id=simple-block>simple block<a class=self-link href=#simple-block></a></dfn> 2.1977 <dd> 2.1978 -<p> A simple block has an associated token (either a <a href=#tokendef-open-square><[-token></a>, <a href=#tokendef-open-paren><(-token></a>, or <a href=#tokendef-open-curly><{-token></a>) 2.1979 + A simple block has an associated token (either a <a href=#tokendef-open-square><[-token></a>, <a href=#tokendef-open-paren><(-token></a>, or <a href=#tokendef-open-curly><{-token></a>) 2.1980 and a value consisting of a list of component values. 2.1981 </dl> 2.1982 2.1983 <h3 class="heading settled heading" data-level=5.1 id=parser-diagrams><span class=secno>5.1 </span><span class=content> 2.1984 Parser Railroad Diagrams</span><a class=self-link href=#parser-diagrams></a></h3> 2.1985 2.1986 -<p> <em>This section is non-normative.</em> 2.1987 - 2.1988 -<p> This section presents an informative view of the parser, 2.1989 + <em>This section is non-normative.</em> 2.1990 + 2.1991 + This section presents an informative view of the parser, 2.1992 in the form of railroad diagrams. 2.1993 Railroad diagrams are more compact than a state-machine, 2.1994 but often easier to read than a regular expression. 2.1995 2.1996 -<p> These diagrams are <em>informative</em> and <em>incomplete</em>; 2.1997 + These diagrams are <em>informative</em> and <em>incomplete</em>; 2.1998 they describe the grammar of "correct" stylesheets, 2.1999 but do not describe error-handling at all. 2.2000 They are provided solely to make it easier to get an intuitive grasp of the syntax. 2.2001 @@ -3553,34 +3584,34 @@ 2.2002 <dl> 2.2003 <dt><dfn data-dfn-type=dfn data-noexport="" id=current-input-token>current input token<a class=self-link href=#current-input-token></a></dfn> 2.2004 <dd> 2.2005 -<p> The token or <a data-link-type=dfn href=#component-value title="component value">component value</a> currently being operated on, from the list of tokens produced by the tokenizer. 2.2006 + The token or <a data-link-type=dfn href=#component-value title="component value">component value</a> currently being operated on, from the list of tokens produced by the tokenizer. 2.2007 2.2008 <dt><dfn data-dfn-type=dfn data-noexport="" id=next-input-token>next input token<a class=self-link href=#next-input-token></a></dfn> 2.2009 <dd> 2.2010 -<p> The token or <a data-link-type=dfn href=#component-value title="component value">component value</a> following the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> in the list of tokens produced by the tokenizer. 2.2011 + The token or <a data-link-type=dfn href=#component-value title="component value">component value</a> following the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> in the list of tokens produced by the tokenizer. 2.2012 If there isn’t a token following the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>, 2.2013 the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>. 2.2014 2.2015 <dt><dfn class=css-code data-dfn-type=type data-export="" id=typedef-eof-token><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a><a class=self-link href=#typedef-eof-token></a></dfn> 2.2016 <dd> 2.2017 -<p> A conceptual token representing the end of the list of tokens. 2.2018 + A conceptual token representing the end of the list of tokens. 2.2019 Whenever the list of tokens is empty, 2.2020 the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is always an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>. 2.2021 2.2022 <dt><dfn data-dfn-type=dfn data-noexport="" id=consume-the-next-input-token>consume the next input token<a class=self-link href=#consume-the-next-input-token></a></dfn> 2.2023 <dd> 2.2024 -<p> Let the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> be the current <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>, 2.2025 + Let the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> be the current <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>, 2.2026 adjusting the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> accordingly. 2.2027 2.2028 <dt><dfn data-dfn-type=dfn data-noexport="" id=reconsume-the-current-input-token>reconsume the current input token<a class=self-link href=#reconsume-the-current-input-token></a></dfn> 2.2029 <dd> 2.2030 -<p> The next time an algorithm instructs you to <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>, 2.2031 + The next time an algorithm instructs you to <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>, 2.2032 instead do nothing 2.2033 (retain the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> unchanged). 2.2034 2.2035 <dt><dfn data-dfn-type=dfn data-export="" id=ascii-case-insensitive>ASCII case-insensitive<a class=self-link href=#ascii-case-insensitive></a></dfn> 2.2036 <dd> 2.2037 -<p> When two strings are to be matched ASCII case-insensitively, 2.2038 + When two strings are to be matched ASCII case-insensitively, 2.2039 temporarily convert both of them to ASCII lower-case form 2.2040 by adding 32 (0x20) to the value of each <a data-link-type=dfn href=#code-point title="code point">code point</a> between 2.2041 U+0041 LATIN CAPITAL LETTER A (A) 2.2042 @@ -3594,7 +3625,7 @@ 2.2043 <h3 class="heading settled heading" data-level=5.3 id=parser-entry-points><span class=secno>5.3 </span><span class=content> 2.2044 Parser Entry Points</span><a class=self-link href=#parser-entry-points></a></h3> 2.2045 2.2046 -<p> The algorithms defined in this section produce high-level CSS objects 2.2047 + The algorithms defined in this section produce high-level CSS objects 2.2048 from lower-level objects. 2.2049 They assume that they are invoked on a token stream, 2.2050 but they may also be invoked on a string; 2.2051 @@ -3604,45 +3635,45 @@ 2.2052 then perform <a href=#tokenization>tokenization</a> 2.2053 to produce a token stream. 2.2054 2.2055 -<p> "<a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">Parse a stylesheet</a>" can also be invoked on a byte stream, 2.2056 + "<a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">Parse a stylesheet</a>" can also be invoked on a byte stream, 2.2057 in which case <a href=#input-byte-stream>The input byte stream</a> 2.2058 defines how to decode it into Unicode. 2.2059 2.2060 -<p class=note> Note: This specification does not define how a byte stream is decoded for other entry points. 2.2061 - 2.2062 -<p class=note> Note: Other specs can define additional entry points for their own purposes. 2.2063 + Note: This specification does not define how a byte stream is decoded for other entry points. 2.2064 + 2.2065 + Note: Other specs can define additional entry points for their own purposes. 2.2066 2.2067 <div class=note> 2.2068 The following notes should probably be translated into normative text in the relevant specs, 2.2069 hooking this spec’s terms: 2.2070 2.2071 -<p> <ul> 2.2072 + <ul> 2.2073 <li> 2.2074 -<p> "<a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">Parse a stylesheet</a>" is intended to be the normal parser entry point, 2.2075 + "<a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">Parse a stylesheet</a>" is intended to be the normal parser entry point, 2.2076 for parsing stylesheets. 2.2077 2.2078 <li> 2.2079 -<p> "<a data-link-type=dfn href=#parse-a-list-of-rules0 title="parse a list of rules">Parse a list of rules</a>" is intended for the content of at-rules such as <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a>. 2.2080 + "<a data-link-type=dfn href=#parse-a-list-of-rules0 title="parse a list of rules">Parse a list of rules</a>" is intended for the content of at-rules such as <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a>. 2.2081 It differs from "<a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">Parse a stylesheet</a>" in the handling of <a class="production css-code" data-link-type=type href=#typedef-cdo-token title="<cdo-token>"><CDO-token></a> and <a class="production css-code" data-link-type=type href=#typedef-cdc-token title="<cdc-token>"><CDC-token></a>. 2.2082 2.2083 <li> 2.2084 -<p> "<a data-link-type=dfn href=#parse-a-rule0 title="parse a rule">Parse a rule</a>" is intended for use by the <code>CSSStyleSheet#insertRule</code> method, 2.2085 + "<a data-link-type=dfn href=#parse-a-rule0 title="parse a rule">Parse a rule</a>" is intended for use by the <code>CSSStyleSheet#insertRule</code> method, 2.2086 and similar functions which might exist, 2.2087 which parse text into a single rule. 2.2088 2.2089 <li> 2.2090 -<p> "<a data-link-type=dfn href=#parse-a-declaration0 title="parse a declaration">Parse a declaration</a>" is used in <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-supports title=@supports>@supports</a> conditions. <a data-biblio-type=informative data-link-type=biblio href=#css3-conditional title=css3-conditional>[CSS3-CONDITIONAL]</a> 2.2091 + "<a data-link-type=dfn href=#parse-a-declaration0 title="parse a declaration">Parse a declaration</a>" is used in <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-supports title=@supports>@supports</a> conditions. <a data-biblio-type=informative data-link-type=biblio href=#css3-conditional title=css3-conditional>[CSS3-CONDITIONAL]</a> 2.2092 2.2093 <li> 2.2094 -<p> "<a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">Parse a list of declarations</a>" is for the contents of a <code>style</code> attribute, 2.2095 + "<a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">Parse a list of declarations</a>" is for the contents of a <code>style</code> attribute, 2.2096 which parses text into the contents of a single style rule. 2.2097 2.2098 <li> 2.2099 -<p> "<a data-link-type=dfn href=#parse-a-component-value0 title="parse a component value">Parse a component value</a>" is for things that need to consume a single value, 2.2100 + "<a data-link-type=dfn href=#parse-a-component-value0 title="parse a component value">Parse a component value</a>" is for things that need to consume a single value, 2.2101 like the parsing rules for <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-values-3/#funcdef-attr title=attr()>attr()</a>. 2.2102 2.2103 <li> 2.2104 -<p> "<a data-link-type=dfn href=#parse-a-list-of-component-values0 title="parse a list of component values">Parse a list of component values</a>" is for the contents of presentational attributes, 2.2105 + "<a data-link-type=dfn href=#parse-a-list-of-component-values0 title="parse a list of component values">Parse a list of component values</a>" is for the contents of presentational attributes, 2.2106 which parse text into a single declaration’s value, 2.2107 or for parsing a stand-alone selector <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a> or list of Media Queries <a data-biblio-type=informative data-link-type=biblio href=#mediaq title=mediaq>[MEDIAQ]</a>, 2.2108 as in <a href=http://www.w3.org/TR/selectors-api/>Selectors API</a> 2.2109 @@ -3650,73 +3681,73 @@ 2.2110 </ul> 2.2111 </div> 2.2112 2.2113 -<p> All of the algorithms defined in this spec may be called with either a list of tokens or of component values. 2.2114 + All of the algorithms defined in this spec may be called with either a list of tokens or of component values. 2.2115 Either way produces an identical result. 2.2116 2.2117 2.2118 <h4 class="heading settled heading" data-level=5.3.1 id=parse-a-stylesheet><span class=secno>5.3.1 </span><span class=content> 2.2119 Parse a stylesheet</span><a class=self-link href=#parse-a-stylesheet></a></h4> 2.2120 2.2121 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-stylesheet0>parse a stylesheet<a class=self-link href=#parse-a-stylesheet0></a></dfn> from a stream of tokens: 2.2122 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-stylesheet0>parse a stylesheet<a class=self-link href=#parse-a-stylesheet0></a></dfn> from a stream of tokens: 2.2123 2.2124 <ol> 2.2125 <li> 2.2126 -<p> Create a new stylesheet. 2.2127 + Create a new stylesheet. 2.2128 2.2129 <li> 2.2130 -<p> <a data-link-type=dfn href=#consume-a-list-of-rules0 title="consume a list of rules">Consume a list of rules</a> from the stream of tokens, with the <var>top-level flag</var> set. 2.2131 + <a data-link-type=dfn href=#consume-a-list-of-rules0 title="consume a list of rules">Consume a list of rules</a> from the stream of tokens, with the <var>top-level flag</var> set. 2.2132 2.2133 <li> 2.2134 -<p> Assign the returned value to the stylesheet’s value. 2.2135 + Assign the returned value to the stylesheet’s value. 2.2136 2.2137 <li> 2.2138 -<p> Return the stylesheet. 2.2139 + Return the stylesheet. 2.2140 </ol> 2.2141 2.2142 <h4 class="heading settled heading" data-level=5.3.2 id=parse-a-list-of-rules><span class=secno>5.3.2 </span><span class=content> 2.2143 Parse a list of rules</span><a class=self-link href=#parse-a-list-of-rules></a></h4> 2.2144 2.2145 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-rules0>parse a list of rules<a class=self-link href=#parse-a-list-of-rules0></a></dfn> from a stream of tokens: 2.2146 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-rules0>parse a list of rules<a class=self-link href=#parse-a-list-of-rules0></a></dfn> from a stream of tokens: 2.2147 2.2148 <ol> 2.2149 <li> 2.2150 -<p> <a data-link-type=dfn href=#consume-a-list-of-rules0 title="consume a list of rules">Consume a list of rules</a> from the stream of tokens, with the <var>top-level flag</var> unset. 2.2151 + <a data-link-type=dfn href=#consume-a-list-of-rules0 title="consume a list of rules">Consume a list of rules</a> from the stream of tokens, with the <var>top-level flag</var> unset. 2.2152 2.2153 <li> 2.2154 -<p> Return the returned list. 2.2155 + Return the returned list. 2.2156 </ol> 2.2157 2.2158 <h4 class="heading settled heading" data-level=5.3.3 id=parse-a-rule><span class=secno>5.3.3 </span><span class=content> 2.2159 Parse a rule</span><a class=self-link href=#parse-a-rule></a></h4> 2.2160 2.2161 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-rule0>parse a rule<a class=self-link href=#parse-a-rule0></a></dfn> from a stream of tokens: 2.2162 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-rule0>parse a rule<a class=self-link href=#parse-a-rule0></a></dfn> from a stream of tokens: 2.2163 2.2164 <ol> 2.2165 <li> 2.2166 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2167 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2168 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2169 2.2170 <li> 2.2171 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2172 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2173 return a syntax error. 2.2174 2.2175 -<p> Otherwise, 2.2176 + Otherwise, 2.2177 if the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>, 2.2178 <a data-link-type=dfn href=#consume-an-at-rule0 title="consume an at-rule">consume an at-rule</a>, 2.2179 and let <var>rule</var> be the return value. 2.2180 2.2181 -<p> Otherwise, 2.2182 + Otherwise, 2.2183 <a data-link-type=dfn href=#consume-a-qualified-rule0 title="consume a qualified rule">consume a qualified rule</a> 2.2184 and let <var>rule</var> be the return value. 2.2185 If nothing was returned, 2.2186 return a syntax error. 2.2187 2.2188 <li> 2.2189 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2190 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2191 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2192 2.2193 <li> 2.2194 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2195 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2196 return <var>rule</var>. 2.2197 Otherwise, return a syntax error. 2.2198 </ol> 2.2199 @@ -3724,22 +3755,22 @@ 2.2200 <h4 class="heading settled heading" data-level=5.3.4 id=parse-a-declaration><span class=secno>5.3.4 </span><span class=content> 2.2201 Parse a declaration</span><a class=self-link href=#parse-a-declaration></a></h4> 2.2202 2.2203 -<p class=note> Note: Unlike "<a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">Parse a list of declarations</a>", 2.2204 + Note: Unlike "<a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">Parse a list of declarations</a>", 2.2205 this parses only a declaration and not an at-rule. 2.2206 2.2207 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-declaration0>parse a declaration<a class=self-link href=#parse-a-declaration0></a></dfn>: 2.2208 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-declaration0>parse a declaration<a class=self-link href=#parse-a-declaration0></a></dfn>: 2.2209 2.2210 <ol> 2.2211 <li> 2.2212 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2213 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2214 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2215 2.2216 <li> 2.2217 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is not an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>, 2.2218 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is not an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>, 2.2219 return a syntax error. 2.2220 2.2221 <li> 2.2222 -<p> <a data-link-type=dfn href=#consume-a-declaration0 title="consume a declaration">Consume a declaration</a>. 2.2223 + <a data-link-type=dfn href=#consume-a-declaration0 title="consume a declaration">Consume a declaration</a>. 2.2224 If anything was returned, return it. 2.2225 Otherwise, return a syntax error. 2.2226 </ol> 2.2227 @@ -3747,46 +3778,46 @@ 2.2228 <h4 class="heading settled heading" data-level=5.3.5 id=parse-a-list-of-declarations><span class=secno>5.3.5 </span><span class=content> 2.2229 Parse a list of declarations</span><a class=self-link href=#parse-a-list-of-declarations></a></h4> 2.2230 2.2231 -<p class=note> Note: Despite the name, 2.2232 + Note: Despite the name, 2.2233 this actually parses a mixed list of declarations and at-rules, 2.2234 as CSS 2.1 does for <a href=http://www.w3.org/TR/CSS21/page.html#page-box></a><span class=css data-link-type=maybe title=@page>@page</span>. 2.2235 Unexpected at-rules (which could be all of them, in a given context) 2.2236 are invalid and should be ignored by the consumer. 2.2237 2.2238 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-declarations0>parse a list of declarations<a class=self-link href=#parse-a-list-of-declarations0></a></dfn>: 2.2239 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-declarations0>parse a list of declarations<a class=self-link href=#parse-a-list-of-declarations0></a></dfn>: 2.2240 2.2241 <ol> 2.2242 <li> 2.2243 -<p> <a data-link-type=dfn href=#consume-a-list-of-declarations0 title="consume a list of declarations">Consume a list of declarations</a>. 2.2244 + <a data-link-type=dfn href=#consume-a-list-of-declarations0 title="consume a list of declarations">Consume a list of declarations</a>. 2.2245 2.2246 <li> 2.2247 -<p> Return the returned list. 2.2248 + Return the returned list. 2.2249 </ol> 2.2250 2.2251 <h4 class="heading settled heading" data-level=5.3.6 id=parse-a-component-value><span class=secno>5.3.6 </span><span class=content> 2.2252 Parse a component value</span><a class=self-link href=#parse-a-component-value></a></h4> 2.2253 2.2254 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-component-value0>parse a component value<a class=self-link href=#parse-a-component-value0></a></dfn>: 2.2255 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-component-value0>parse a component value<a class=self-link href=#parse-a-component-value0></a></dfn>: 2.2256 2.2257 <ol> 2.2258 <li> 2.2259 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2260 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2261 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2262 2.2263 <li> 2.2264 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2265 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2266 return a syntax error. 2.2267 2.2268 <li> 2.2269 -<p> <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a> 2.2270 + <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a> 2.2271 and let <var>value</var> be the return value. 2.2272 2.2273 <li> 2.2274 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2275 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2276 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2277 2.2278 <li> 2.2279 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2280 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2281 return <var>value</var>. 2.2282 Otherwise, 2.2283 return a syntax error. 2.2284 @@ -3795,11 +3826,11 @@ 2.2285 <h4 class="heading settled heading" data-level=5.3.7 id=parse-a-list-of-component-values><span class=secno>5.3.7 </span><span class=content> 2.2286 Parse a list of component values</span><a class=self-link href=#parse-a-list-of-component-values></a></h4> 2.2287 2.2288 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-component-values0>parse a list of component values<a class=self-link href=#parse-a-list-of-component-values0></a></dfn>: 2.2289 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-list-of-component-values0>parse a list of component values<a class=self-link href=#parse-a-list-of-component-values0></a></dfn>: 2.2290 2.2291 <ol> 2.2292 <li> 2.2293 -<p> Repeatedly <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> until an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> is returned, 2.2294 + Repeatedly <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> until an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> is returned, 2.2295 appending the returned values (except the final <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>) into a list. 2.2296 Return the list. 2.2297 </ol> 2.2298 @@ -3807,37 +3838,37 @@ 2.2299 <h4 class="heading settled heading" data-level=5.3.8 id=parse-a-comma-separated-list-of-component-values><span class=secno>5.3.8 </span><span class=content> 2.2300 Parse a comma-separated list of component values</span><a class=self-link href=#parse-a-comma-separated-list-of-component-values></a></h4> 2.2301 2.2302 -<p> To <dfn data-dfn-type=dfn data-export="" id=parse-a-comma-separated-list-of-component-values0>parse a comma-separated list of component values<a class=self-link href=#parse-a-comma-separated-list-of-component-values0></a></dfn>: 2.2303 + To <dfn data-dfn-type=dfn data-export="" id=parse-a-comma-separated-list-of-component-values0>parse a comma-separated list of component values<a class=self-link href=#parse-a-comma-separated-list-of-component-values0></a></dfn>: 2.2304 2.2305 <ol> 2.2306 <li> 2.2307 -<p> Let <var>list of cvls</var> be an initially empty list of component value lists. 2.2308 + Let <var>list of cvls</var> be an initially empty list of component value lists. 2.2309 2.2310 <li> 2.2311 -<p> Repeatedly <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> until an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> or <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> is returned, 2.2312 + Repeatedly <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> until an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> or <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> is returned, 2.2313 appending the returned values (except the final <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> or <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a>) into a list. 2.2314 Append the list to <var>list of cvls</var>. 2.2315 2.2316 -<p> If it was a <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> that was returned, 2.2317 + If it was a <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> that was returned, 2.2318 repeat this step. 2.2319 2.2320 <li> 2.2321 -<p> Return <var>list of cvls</var>. 2.2322 + Return <var>list of cvls</var>. 2.2323 </ol> 2.2324 2.2325 2.2326 <h3 class="heading settled heading" data-level=5.4 id=parser-algorithms><span class=secno>5.4 </span><span class=content> 2.2327 Parser Algorithms</span><a class=self-link href=#parser-algorithms></a></h3> 2.2328 2.2329 -<p> The following algorithms comprise the parser. 2.2330 + The following algorithms comprise the parser. 2.2331 They are called by the parser entry points above. 2.2332 2.2333 -<p> These algorithms may be called with a list of either tokens or of component values. 2.2334 + These algorithms may be called with a list of either tokens or of component values. 2.2335 (The difference being that some tokens are replaced by <a data-link-type=dfn href=#function title=functions>functions</a> and <a data-link-type=dfn href=#simple-block title="simple blocks">simple blocks</a> in a list of component values.) 2.2336 Similar to how the input stream returned EOF code points to represent when it was empty during the tokenization stage, 2.2337 the lists in this stage must return an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> when the next token is requested but they are empty. 2.2338 2.2339 -<p> An algorithm may be invoked with a specific list, 2.2340 + An algorithm may be invoked with a specific list, 2.2341 in which case it consumes only that list 2.2342 (and when that list is exhausted, 2.2343 it begins returning <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>s). 2.2344 @@ -3848,28 +3879,28 @@ 2.2345 <h4 class="heading settled heading" data-level=5.4.1 id=consume-a-list-of-rules><span class=secno>5.4.1 </span><span class=content> 2.2346 Consume a list of rules</span><a class=self-link href=#consume-a-list-of-rules></a></h4> 2.2347 2.2348 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-list-of-rules0>consume a list of rules<a class=self-link href=#consume-a-list-of-rules0></a></dfn>: 2.2349 - 2.2350 -<p> Create an initially empty list of rules. 2.2351 - 2.2352 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2353 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-list-of-rules0>consume a list of rules<a class=self-link href=#consume-a-list-of-rules0></a></dfn>: 2.2354 + 2.2355 + Create an initially empty list of rules. 2.2356 + 2.2357 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2358 2.2359 <dl> 2.2360 <dt><a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a> 2.2361 <dd> 2.2362 -<p> Do nothing. 2.2363 + Do nothing. 2.2364 2.2365 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2366 <dd> 2.2367 -<p> Return the list of rules. 2.2368 + Return the list of rules. 2.2369 2.2370 <dt><a class="production css-code" data-link-type=type href=#typedef-cdo-token title="<cdo-token>"><CDO-token></a> 2.2371 <dt><a class="production css-code" data-link-type=type href=#typedef-cdc-token title="<cdc-token>"><CDC-token></a> 2.2372 <dd> 2.2373 -<p> If the <dfn data-dfn-type=dfn data-noexport="" id=top-level-flag><var>top-level flag</var><a class=self-link href=#top-level-flag></a></dfn> is set, 2.2374 + If the <dfn data-dfn-type=dfn data-noexport="" id=top-level-flag><var>top-level flag</var><a class=self-link href=#top-level-flag></a></dfn> is set, 2.2375 do nothing. 2.2376 2.2377 -<p> Otherwise, 2.2378 + Otherwise, 2.2379 <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">reconsume the current input token</a>. 2.2380 <a data-link-type=dfn href=#consume-a-qualified-rule0 title="consume a qualified rule">Consume a qualified rule</a>. 2.2381 If anything is returned, 2.2382 @@ -3877,14 +3908,14 @@ 2.2383 2.2384 <dt><a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> 2.2385 <dd> 2.2386 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2387 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2388 <a data-link-type=dfn href=#consume-an-at-rule0 title="consume an at-rule">Consume an at-rule</a>. 2.2389 If anything is returned, 2.2390 append it to the list of rules. 2.2391 2.2392 <dt>anything else 2.2393 <dd> 2.2394 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2395 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2396 <a data-link-type=dfn href=#consume-a-qualified-rule0 title="consume a qualified rule">Consume a qualified rule</a>. 2.2397 If anything is returned, 2.2398 append it to the list of rules. 2.2399 @@ -3894,36 +3925,36 @@ 2.2400 <h4 class="heading settled heading" data-level=5.4.2 id=consume-an-at-rule><span class=secno>5.4.2 </span><span class=content> 2.2401 Consume an at-rule</span><a class=self-link href=#consume-an-at-rule></a></h4> 2.2402 2.2403 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-an-at-rule0>consume an at-rule<a class=self-link href=#consume-an-at-rule0></a></dfn>: 2.2404 - 2.2405 -<p> <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2406 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-an-at-rule0>consume an at-rule<a class=self-link href=#consume-an-at-rule0></a></dfn>: 2.2407 + 2.2408 + <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2409 Create a new at-rule 2.2410 with its name set to the value of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>, 2.2411 its prelude initially set to an empty list, 2.2412 and its value initially set to nothing. 2.2413 2.2414 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2415 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2416 2.2417 <dl> 2.2418 <dt><a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> 2.2419 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2420 <dd> 2.2421 -<p> Return the at-rule. 2.2422 + Return the at-rule. 2.2423 2.2424 <dt><a href=#tokendef-open-curly><{-token></a> 2.2425 <dd> 2.2426 -<p> <a data-link-type=dfn href=#consume-a-simple-block0 title="consume a simple block">Consume a simple block</a> 2.2427 + <a data-link-type=dfn href=#consume-a-simple-block0 title="consume a simple block">Consume a simple block</a> 2.2428 and assign it to the at-rule’s block. 2.2429 Return the at-rule. 2.2430 2.2431 <dt><a data-link-type=dfn href=#simple-block title="simple block">simple block</a> with an associated token of <a href=#tokendef-open-curly><{-token></a> 2.2432 <dd> 2.2433 -<p> Assign the block to the at-rule’s block. 2.2434 + Assign the block to the at-rule’s block. 2.2435 Return the at-rule. 2.2436 2.2437 <dt>anything else 2.2438 <dd> 2.2439 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2440 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2441 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a>. 2.2442 Append the returned value to the at-rule’s prelude. 2.2443 </dl> 2.2444 @@ -3932,34 +3963,34 @@ 2.2445 <h4 class="heading settled heading" data-level=5.4.3 id=consume-a-qualified-rule><span class=secno>5.4.3 </span><span class=content> 2.2446 Consume a qualified rule</span><a class=self-link href=#consume-a-qualified-rule></a></h4> 2.2447 2.2448 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-qualified-rule0>consume a qualified rule<a class=self-link href=#consume-a-qualified-rule0></a></dfn>: 2.2449 - 2.2450 -<p> Create a new qualified rule 2.2451 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-qualified-rule0>consume a qualified rule<a class=self-link href=#consume-a-qualified-rule0></a></dfn>: 2.2452 + 2.2453 + Create a new qualified rule 2.2454 with its prelude initially set to an empty list, 2.2455 and its value initially set to nothing. 2.2456 2.2457 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2458 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2459 2.2460 <dl> 2.2461 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2462 <dd> 2.2463 -<p> This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.2464 + This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.2465 Return nothing. 2.2466 2.2467 <dt><a href=#tokendef-open-curly><{-token></a> 2.2468 <dd> 2.2469 -<p> <a data-link-type=dfn href=#consume-a-simple-block0 title="consume a simple block">Consume a simple block</a> 2.2470 + <a data-link-type=dfn href=#consume-a-simple-block0 title="consume a simple block">Consume a simple block</a> 2.2471 and assign it to the qualified rule’s block. 2.2472 Return the qualified rule. 2.2473 2.2474 <dt><a data-link-type=dfn href=#simple-block title="simple block">simple block</a> with an associated token of <a href=#tokendef-open-curly><{-token></a> 2.2475 <dd> 2.2476 -<p> Assign the block to the qualified rule’s block. 2.2477 + Assign the block to the qualified rule’s block. 2.2478 Return the qualified rule. 2.2479 2.2480 <dt>anything else 2.2481 <dd> 2.2482 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2483 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2484 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a>. 2.2485 Append the returned value to the qualified rule’s prelude. 2.2486 </dl> 2.2487 @@ -3968,31 +3999,31 @@ 2.2488 <h4 class="heading settled heading" data-level=5.4.4 id=consume-a-list-of-declarations><span class=secno>5.4.4 </span><span class=content> 2.2489 Consume a list of declarations</span><a class=self-link href=#consume-a-list-of-declarations></a></h4> 2.2490 2.2491 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-list-of-declarations0>consume a list of declarations<a class=self-link href=#consume-a-list-of-declarations0></a></dfn>: 2.2492 - 2.2493 -<p> Create an initially empty list of declarations. 2.2494 - 2.2495 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2496 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-list-of-declarations0>consume a list of declarations<a class=self-link href=#consume-a-list-of-declarations0></a></dfn>: 2.2497 + 2.2498 + Create an initially empty list of declarations. 2.2499 + 2.2500 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a>: 2.2501 2.2502 <dl> 2.2503 <dt><a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a> 2.2504 <dt><a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> 2.2505 <dd> 2.2506 -<p> Do nothing. 2.2507 + Do nothing. 2.2508 2.2509 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2510 <dd> 2.2511 -<p> Return the list of declarations. 2.2512 + Return the list of declarations. 2.2513 2.2514 <dt><a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> 2.2515 <dd> 2.2516 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2517 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2518 <a data-link-type=dfn href=#consume-an-at-rule0 title="consume an at-rule">Consume an at-rule</a>. 2.2519 Append the returned rule to the list of declarations. 2.2520 2.2521 <dt><a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a> 2.2522 <dd> 2.2523 -<p> Initialize a temporary list initially filled with the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2524 + Initialize a temporary list initially filled with the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2525 As long as the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than a <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> or <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2526 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> and append it to the temporary list. 2.2527 <a data-link-type=dfn href=#consume-a-declaration0 title="consume a declaration">Consume a declaration</a> from the temporary list. 2.2528 @@ -4001,7 +4032,7 @@ 2.2529 2.2530 <dt>anything else 2.2531 <dd> 2.2532 -<p> This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.2533 + This is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.2534 <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2535 As long as the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than a <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> or <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2536 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> 2.2537 @@ -4012,88 +4043,88 @@ 2.2538 <h4 class="heading settled heading" data-level=5.4.5 id=consume-a-declaration><span class=secno>5.4.5 </span><span class=content> 2.2539 Consume a declaration</span><a class=self-link href=#consume-a-declaration></a></h4> 2.2540 2.2541 -<p class=note> Note: This algorithm assumes that the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> has already been checked to be an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>. 2.2542 - 2.2543 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-declaration0>consume a declaration<a class=self-link href=#consume-a-declaration0></a></dfn>: 2.2544 - 2.2545 -<p> <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2546 + Note: This algorithm assumes that the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> has already been checked to be an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>. 2.2547 + 2.2548 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-declaration0>consume a declaration<a class=self-link href=#consume-a-declaration0></a></dfn>: 2.2549 + 2.2550 + <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2551 Create a new declaration 2.2552 with its name set to the value of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2553 and its value initially set to the empty list. 2.2554 2.2555 <ol> 2.2556 <li> 2.2557 -<p> While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2558 + While the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>, 2.2559 <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2560 2.2561 <li> 2.2562 -<p> If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than a <a class="production css-code" data-link-type=type href=#typedef-colon-token title="<colon-token>"><colon-token></a>, 2.2563 + If the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than a <a class="production css-code" data-link-type=type href=#typedef-colon-token title="<colon-token>"><colon-token></a>, 2.2564 this is a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.2565 Return nothing. 2.2566 2.2567 -<p> Otherwise, <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2568 + Otherwise, <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">consume the next input token</a>. 2.2569 2.2570 <li> 2.2571 -<p> As long as the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2572 + As long as the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> is anything other than an <a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a>, 2.2573 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">consume a component value</a> 2.2574 and append it to the declaration’s value. 2.2575 2.2576 <li> 2.2577 -<p> If the last two non-<a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>s in the declaration’s value are 2.2578 + If the last two non-<a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>s in the declaration’s value are 2.2579 a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> with the value "!" 2.2580 followed by an <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a> with a value that is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "important", 2.2581 remove them from the declaration’s value 2.2582 and set the declaration’s <var>important</var> flag to true. 2.2583 2.2584 <li> 2.2585 -<p> Return the declaration. 2.2586 + Return the declaration. 2.2587 </ol> 2.2588 2.2589 2.2590 <h4 class="heading settled heading" data-level=5.4.6 id=consume-a-component-value><span class=secno>5.4.6 </span><span class=content> 2.2591 Consume a component value</span><a class=self-link href=#consume-a-component-value></a></h4> 2.2592 2.2593 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-component-value0>consume a component value<a class=self-link href=#consume-a-component-value0></a></dfn>: 2.2594 - 2.2595 -<p> <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2596 - 2.2597 -<p> If the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2598 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-component-value0>consume a component value<a class=self-link href=#consume-a-component-value0></a></dfn>: 2.2599 + 2.2600 + <a data-link-type=dfn href=#consume-the-next-input-token title="consume the next input token">Consume the next input token</a>. 2.2601 + 2.2602 + If the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2603 is a <a href=#tokendef-open-curly><{-token></a>, <a href=#tokendef-open-square><[-token></a>, or <a href=#tokendef-open-paren><(-token></a>, 2.2604 <a data-link-type=dfn href=#consume-a-simple-block0 title="consume a simple block">consume a simple block</a> 2.2605 and return it. 2.2606 2.2607 -<p> Otherwise, if the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2608 + Otherwise, if the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2609 is a <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>, 2.2610 <a data-link-type=dfn href=#consume-a-function0 title="consume a function">consume a function</a> 2.2611 and return it. 2.2612 2.2613 -<p> Otherwise, return the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2614 + Otherwise, return the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2615 2.2616 2.2617 <h4 class="heading settled heading" data-level=5.4.7 id=consume-a-simple-block><span class=secno>5.4.7 </span><span class=content> 2.2618 Consume a simple block</span><a class=self-link href=#consume-a-simple-block></a></h4> 2.2619 2.2620 -<p class=note> Note: This algorithm assumes that the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> has already been checked to be an <a href=#tokendef-open-curly><{-token></a>, <a href=#tokendef-open-square><[-token></a>, or <a href=#tokendef-open-paren><(-token></a>. 2.2621 - 2.2622 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-simple-block0>consume a simple block<a class=self-link href=#consume-a-simple-block0></a></dfn>: 2.2623 - 2.2624 -<p> The <dfn data-dfn-type=dfn data-noexport="" id=ending-token>ending token<a class=self-link href=#ending-token></a></dfn> is the mirror variant of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2625 + Note: This algorithm assumes that the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> has already been checked to be an <a href=#tokendef-open-curly><{-token></a>, <a href=#tokendef-open-square><[-token></a>, or <a href=#tokendef-open-paren><(-token></a>. 2.2626 + 2.2627 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-simple-block0>consume a simple block<a class=self-link href=#consume-a-simple-block0></a></dfn>: 2.2628 + 2.2629 + The <dfn data-dfn-type=dfn data-noexport="" id=ending-token>ending token<a class=self-link href=#ending-token></a></dfn> is the mirror variant of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>. 2.2630 (E.g. if it was called with <a href=#tokendef-open-square><[-token></a>, the <a data-link-type=dfn href=#ending-token title="ending token">ending token</a> is <a href=#tokendef-close-square><]-token></a>.) 2.2631 2.2632 -<p> Create a <a data-link-type=dfn href=#simple-block title="simple block">simple block</a> with its associated token set to the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2633 + Create a <a data-link-type=dfn href=#simple-block title="simple block">simple block</a> with its associated token set to the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> 2.2634 and with a value with is initially an empty list. 2.2635 2.2636 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> and process it as follows: 2.2637 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> and process it as follows: 2.2638 2.2639 <dl> 2.2640 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2641 <dt><a data-link-type=dfn href=#ending-token title="ending token">ending token</a> 2.2642 <dd> 2.2643 -<p> Return the block. 2.2644 + Return the block. 2.2645 2.2646 <dt>anything else 2.2647 <dd> 2.2648 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2649 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2650 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a> 2.2651 and append it to the value of the block. 2.2652 </dl> 2.2653 @@ -4102,24 +4133,24 @@ 2.2654 <h4 class="heading settled heading" data-level=5.4.8 id=consume-a-function><span class=secno>5.4.8 </span><span class=content> 2.2655 Consume a function</span><a class=self-link href=#consume-a-function></a></h4> 2.2656 2.2657 -<p class=note> Note: This algorithm assumes that the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> has already been checked to be a <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>. 2.2658 - 2.2659 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-function0>consume a function<a class=self-link href=#consume-a-function0></a></dfn>: 2.2660 - 2.2661 -<p> Create a function with a name equal to the value of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>, 2.2662 + Note: This algorithm assumes that the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a> has already been checked to be a <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>. 2.2663 + 2.2664 + To <dfn data-dfn-type=dfn data-noexport="" id=consume-a-function0>consume a function<a class=self-link href=#consume-a-function0></a></dfn>: 2.2665 + 2.2666 + Create a function with a name equal to the value of the <a data-link-type=dfn href=#current-input-token title="current input token">current input token</a>, 2.2667 and with a value which is initially an empty list. 2.2668 2.2669 -<p> Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> and process it as follows: 2.2670 + Repeatedly consume the <a data-link-type=dfn href=#next-input-token title="next input token">next input token</a> and process it as follows: 2.2671 2.2672 <dl> 2.2673 <dt><a class="production css-code" data-link-type=type href=#typedef-eof-token title="<eof-token>"><EOF-token></a> 2.2674 <dt><a href=#tokendef-close-paren><)-token></a> 2.2675 <dd> 2.2676 -<p> Return the function. 2.2677 + Return the function. 2.2678 2.2679 <dt>anything else 2.2680 <dd> 2.2681 -<p> <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2682 + <a data-link-type=dfn href=#reconsume-the-current-input-token title="reconsume the current input token">Reconsume the current input token</a>. 2.2683 <a data-link-type=dfn href=#consume-a-component-value0 title="consume a component value">Consume a component value</a> 2.2684 and append the returned value 2.2685 to the function’s value. 2.2686 @@ -4130,24 +4161,24 @@ 2.2687 <h2 class="heading settled heading" data-level=6 id=anb><span class=secno>6 </span><span class=content> 2.2688 The <var>An+B</var> microsyntax</span><a class=self-link href=#anb></a></h2> 2.2689 2.2690 -<p> Several things in CSS, 2.2691 + Several things in CSS, 2.2692 such as the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/selectors-4/#nth-child-pseudo title=:nth-child()>:nth-child()</a> pseudoclass, 2.2693 need to indicate indexes in a list. 2.2694 The <var>An+B</var> microsyntax is useful for this, 2.2695 allowing an author to easily indicate single elements 2.2696 or all elements at regularly-spaced intervals in a list. 2.2697 2.2698 -<p> The <dfn data-dfn-type=dfn data-export="" id=anb0>An+B<a class=self-link href=#anb0></a></dfn> notation defines an integer step (<dfn data-dfn-type=dfn data-noexport="" id=a>A<a class=self-link href=#a></a></dfn>) and offset (<dfn data-dfn-type=dfn data-noexport="" id=b>B<a class=self-link href=#b></a></dfn>), 2.2699 + The <dfn data-dfn-type=dfn data-export="" id=anb0>An+B<a class=self-link href=#anb0></a></dfn> notation defines an integer step (<dfn data-dfn-type=dfn data-noexport="" id=a>A<a class=self-link href=#a></a></dfn>) and offset (<dfn data-dfn-type=dfn data-noexport="" id=b>B<a class=self-link href=#b></a></dfn>), 2.2700 and represents the <var>An+B</var>th elements in a list, 2.2701 for every positive integer or zero value of <var>n</var>, 2.2702 with the first element in the list having index 1 (not 0). 2.2703 2.2704 -<p> For values of <var>A</var> and <var>B</var> greater than 0, 2.2705 + For values of <var>A</var> and <var>B</var> greater than 0, 2.2706 this effectively divides the list into groups of <var>A</var> elements 2.2707 (the last group taking the remainder), 2.2708 and selecting the <var>B</var>th element of each group. 2.2709 2.2710 -<p> The <var>An+B</var> notation also accepts the <span class=css data-link-type=maybe title=even>even</span> and <span class=css data-link-type=maybe title=odd>odd</span> keywords, 2.2711 + The <var>An+B</var> notation also accepts the <span class=css data-link-type=maybe title=even>even</span> and <span class=css data-link-type=maybe title=odd>odd</span> keywords, 2.2712 which have the same meaning as <span class=css data-link-type=maybe title=2n>2n</span> and <span class=css data-link-type=maybe title=2n+1>2n+1</span>, respectively. 2.2713 2.2714 <div class=example> 2.2715 @@ -4156,7 +4187,7 @@ 2.2716 even /* same */ 2.2717 4n+1 /* represents the 1st, 5th, 9th, 13th, etc. elements in the list */</pre> </div> 2.2718 2.2719 -<p> The values of <var>A</var> and <var>B</var> can be negative, 2.2720 + The values of <var>A</var> and <var>B</var> can be negative, 2.2721 but only the positive results of <var>An+B</var>, 2.2722 for <var>n</var> ≥ 0, 2.2723 are used. 2.2724 @@ -4167,15 +4198,15 @@ 2.2725 -4n+10 /* represents the 2nd, 6th, and 10th elements of the list */ 2.2726 </pre> </div> 2.2727 2.2728 -<p> If both <var>A</var> and <var>B</var> are 0, 2.2729 + If both <var>A</var> and <var>B</var> are 0, 2.2730 the pseudo-class represents no element in the list. 2.2731 2.2732 <h3 class="heading settled heading" data-level=6.1 id=anb-syntax><span class=secno>6.1 </span><span class=content> 2.2733 Informal Syntax Description</span><a class=self-link href=#anb-syntax></a></h3> 2.2734 2.2735 -<p> <em>This section is non-normative.</em> 2.2736 - 2.2737 -<p> When <var>A</var> is 0, the <var>An</var> part may be omitted 2.2738 + <em>This section is non-normative.</em> 2.2739 + 2.2740 + When <var>A</var> is 0, the <var>An</var> part may be omitted 2.2741 (unless the <var>B</var> part is already omitted). 2.2742 When <var>An</var> is not included 2.2743 and <var>B</var> is non-negative, 2.2744 @@ -4188,7 +4219,7 @@ 2.2745 <pre>0n+5 /* represents the 5th element in the list */ 2.2746 5 /* same */</pre> </div> 2.2747 2.2748 -<p> When <var>A</var> is 1 or -1, 2.2749 + When <var>A</var> is 1 or -1, 2.2750 the <code>1</code> may be omitted from the rule. 2.2751 2.2752 <div class=example> 2.2753 @@ -4198,7 +4229,7 @@ 2.2754 n+0 /* same */ 2.2755 n /* same */</pre> </div> 2.2756 2.2757 -<p> If <var>B</var> is 0, then every <var>A</var>th element is picked. 2.2758 + If <var>B</var> is 0, then every <var>A</var>th element is picked. 2.2759 In such a case, 2.2760 the <var>+B</var> (or <var>-B</var>) part may be omitted 2.2761 unless the <var>A</var> part is already omitted. 2.2762 @@ -4208,14 +4239,14 @@ 2.2763 <pre>2n+0 /* represents every even element in the list */ 2.2764 2n /* same */</pre> </div> 2.2765 2.2766 -<p> When B is negative, its minus sign replaces the <span class=css data-link-type=maybe title=+>+</span> sign. 2.2767 + When B is negative, its minus sign replaces the <span class=css data-link-type=maybe title=+>+</span> sign. 2.2768 2.2769 <div class=example> 2.2770 <p>Valid example: 2.2771 <pre>3n-6</pre> <p>Invalid example: 2.2772 <pre>3n + -6</pre> </div> 2.2773 2.2774 -<p> Whitespace is permitted on either side of the <span class=css data-link-type=maybe title=+>+</span> or <span class=css data-link-type=maybe title=->-</span> 2.2775 + Whitespace is permitted on either side of the <span class=css data-link-type=maybe title=+>+</span> or <span class=css data-link-type=maybe title=->-</span> 2.2776 that separates the <var>An</var> and <var>B</var> parts when both are present. 2.2777 2.2778 <div class=example> 2.2779 @@ -4232,13 +4263,13 @@ 2.2780 <h3 class="heading settled heading" data-level=6.2 id=the-anb-type><span class=secno>6.2 </span><span class=content> 2.2781 The <code><an+b></code> type</span><a class=self-link href=#the-anb-type></a></h3> 2.2782 2.2783 -<p> The <var>An+B</var> notation was originally defined using a slightly different tokenizer than the rest of CSS, 2.2784 + The <var>An+B</var> notation was originally defined using a slightly different tokenizer than the rest of CSS, 2.2785 resulting in a somewhat odd definition when expressed in terms of CSS tokens. 2.2786 This section describes how to recognize the <var>An+B</var> notation in terms of CSS tokens 2.2787 (thus defining the <var><an+b></var> type for CSS grammar purposes), 2.2788 and how to interpret the CSS tokens to obtain values for <var>A</var> and <var>B</var>. 2.2789 2.2790 -<p> The <var><an+b></var> type is defined 2.2791 + The <var><an+b></var> type is defined 2.2792 (using the <a href=http://www.w3.org/TR/css3-values/#value-defs>Value Definition Syntax in the Values & Units spec</a>) 2.2793 as: 2.2794 2.2795 @@ -4266,9 +4297,9 @@ 2.2796 '+'?<sup><a href=#anb-plus>†</a></sup> n ['+' | '-'] <var><signless-integer></var> | 2.2797 -n ['+' | '-'] <var><signless-integer></var> 2.2798 </pre> 2.2799 -<p> where: 2.2800 - 2.2801 -<p> <ul> 2.2802 + where: 2.2803 + 2.2804 + <ul> 2.2805 <li><dfn class=css-code data-dfn-type=type data-export="" id=typedef-n-dimension><code><n-dimension></code><a class=self-link href=#typedef-n-dimension></a></dfn> is a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> with its type flag set to "integer", and a unit that is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "n" 2.2806 <li><dfn class=css-code data-dfn-type=type data-export="" id=typedef-ndash-dimension><code><ndash-dimension></code><a class=self-link href=#typedef-ndash-dimension></a></dfn> is a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> with its type flag set to "integer", and a unit that is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "n-" 2.2807 <li><dfn class=css-code data-dfn-type=type data-export="" id=typedef-ndashdigit-dimension><code><ndashdigit-dimension></code><a class=self-link href=#typedef-ndashdigit-dimension></a></dfn> is a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> with its type flag set to "integer", and a unit that is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match for "n-*", where "*" is a series of one or more <a data-link-type=dfn href=#digit title=digits>digits</a> 2.2808 @@ -4285,39 +4316,39 @@ 2.2809 or else the tokens do not match the above grammar. 2.2810 Whitespace is valid (and ignored) between any other two tokens. 2.2811 2.2812 -<p> The clauses of the production are interpreted as follows: 2.2813 + The clauses of the production are interpreted as follows: 2.2814 2.2815 <dl> 2.2816 <dt><span class=css data-link-type=maybe title=odd>odd</span> 2.2817 <dd> 2.2818 -<p> <var>A</var> is 2, <var>B</var> is 1. 2.2819 + <var>A</var> is 2, <var>B</var> is 1. 2.2820 2.2821 <dt><span class=css data-link-type=maybe title=even>even</span> 2.2822 <dd> 2.2823 -<p> <var>A</var> is 2, <var>B</var> is 0. 2.2824 + <var>A</var> is 2, <var>B</var> is 0. 2.2825 2.2826 <dt><code><var><integer></var></code> 2.2827 <dd> 2.2828 -<p> <var>A</var> is 0, <var>B</var> is the integer’s value. 2.2829 + <var>A</var> is 0, <var>B</var> is the integer’s value. 2.2830 2.2831 <dt><code><var><n-dimension></var></code> 2.2832 <dt><code>'+'? n</code> 2.2833 <dt><code>-n</code> 2.2834 <dd> 2.2835 -<p> <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2836 + <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2837 <var>B</var> is 0. 2.2838 2.2839 <dt><code><var><ndashdigit-dimension></var></code> 2.2840 <dt><code>'+'? <var><ndashdigit-ident></var></code> 2.2841 <dd> 2.2842 -<p> <var>A</var> is the dimension’s value or 1, respectively. 2.2843 + <var>A</var> is the dimension’s value or 1, respectively. 2.2844 <var>B</var> is the dimension’s unit or ident’s value, respectively, 2.2845 with the first <a data-link-type=dfn href=#code-point title="code point">code point</a> removed and the remainder interpreted as a base-10 number. 2.2846 <span class=note>B is negative.</span> 2.2847 2.2848 <dt><code><var><dashndashdigit-ident></var></code> 2.2849 <dd> 2.2850 -<p> <var>A</var> is -1. 2.2851 + <var>A</var> is -1. 2.2852 <var>B</var> is the ident’s value, with the first two <a data-link-type=dfn href=#code-point title="code points">code points</a> removed and the remainder interpreted as a base-10 number. 2.2853 <span class=note>B is negative.</span> 2.2854 2.2855 @@ -4325,21 +4356,21 @@ 2.2856 <dt><code>'+'? n <var><signed-integer></var></code> 2.2857 <dt><code>-n <var><signed-integer></var></code> 2.2858 <dd> 2.2859 -<p> <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2860 + <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2861 <var>B</var> is the integer’s value. 2.2862 2.2863 <dt><code><var><ndash-dimension></var> <var><signless-integer></var></code> 2.2864 <dt><code>'+'? n- <var><signless-integer></var></code> 2.2865 <dt><code>-n- <var><signless-integer></var></code> 2.2866 <dd> 2.2867 -<p> <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2868 + <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2869 <var>B</var> is the negation of the integer’s value. 2.2870 2.2871 <dt><code><var><n-dimension></var> ['+' | '-'] <var><signless-integer></var></code> 2.2872 <dt><code>'+'? n ['+' | '-'] <var><signless-integer></var></code> 2.2873 <dt><code>-n ['+' | '-'] <var><signless-integer></var></code> 2.2874 <dd> 2.2875 -<p> <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2876 + <var>A</var> is the dimension’s value, 1, or -1, respectively. 2.2877 <var>B</var> is the integer’s value. 2.2878 If a '-' was provided between the two, <var>B</var> is instead the negation of the integer’s value. 2.2879 </dl> 2.2880 @@ -4349,24 +4380,24 @@ 2.2881 <h2 class="heading settled heading" data-level=7 id=rule-defs><span class=secno>7 </span><span class=content> 2.2882 Defining Grammars for Rules and Other Values</span><a class=self-link href=#rule-defs></a></h2> 2.2883 2.2884 -<p> The <a href=http://www.w3.org/TR/css3-values/>Values</a> spec defines how to specify a grammar for properties. 2.2885 + The <a href=http://www.w3.org/TR/css3-values/>Values</a> spec defines how to specify a grammar for properties. 2.2886 This section does the same, but for rules. 2.2887 2.2888 -<p> Just like in property grammars, 2.2889 + Just like in property grammars, 2.2890 the notation <code><foo></code> refers to the "foo" grammar term, 2.2891 assumed to be defined elsewhere. 2.2892 Substituting the <code><foo></code> for its definition results in a semantically identical grammar. 2.2893 2.2894 -<p> Several types of tokens are written literally, without quotes: 2.2895 - 2.2896 -<p> <ul> 2.2897 + Several types of tokens are written literally, without quotes: 2.2898 + 2.2899 + <ul> 2.2900 <li><a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>s (such as <span class=css data-link-type=maybe title=auto>auto</span>, <span class=css data-link-type=maybe title=disc>disc</span>, etc), which are simply written as their value. 2.2901 <li><a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>s, which are written as an @ character followed by the token’s value, like "@media". 2.2902 <li><a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a>s, which are written as the function name followed by a ( character, like "translate(". 2.2903 <li>The <a class="production css-code" data-link-type=type href=#typedef-colon-token title="<colon-token>"><colon-token></a> (written as <code>:</code>), <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> (written as <code>,</code>), <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a> (written as <code>;</code>), <a href=#tokendef-open-paren><(-token></a>, <a href=#tokendef-close-paren><)-token></a>, <a href=#tokendef-open-curly><{-token></a>, and <a href=#tokendef-close-curly><}-token></a>s. 2.2904 </ul> 2.2905 2.2906 -<p> Tokens match if their value is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match 2.2907 + Tokens match if their value is an <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a> match 2.2908 for the value defined in the grammar. 2.2909 2.2910 <p class=note> 2.2911 @@ -4375,7 +4406,7 @@ 2.2912 such a tokens is not a <a class="production css-code" data-link-type=type href=#typedef-function-token title="<function-token>"><function-token></a> or an <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a> 2.2913 and does not match corresponding grammar definitions. 2.2914 2.2915 -<p> <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a>s are written with their value enclosed in single quotes. 2.2916 + <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a>s are written with their value enclosed in single quotes. 2.2917 For example, a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> containing the "+" <a data-link-type=dfn href=#code-point title="code point">code point</a> is written as <code>'+'</code>. 2.2918 Similarly, the <a href=#tokendef-open-square><[-token></a> and <a href=#tokendef-close-square><]-token></a>s must be written in single quotes, 2.2919 as they’re used by the syntax of the grammar itself to group clauses. 2.2920 @@ -4385,7 +4416,7 @@ 2.2921 (For example, if the prelude of a rule is a selector, 2.2922 whitespace is significant.) 2.2923 2.2924 -<p> When defining a function or a block, 2.2925 + When defining a function or a block, 2.2926 the ending token must be specified in the grammar, 2.2927 but if it’s not present in the eventual token stream, 2.2928 it still matches. 2.2929 @@ -4394,10 +4425,10 @@ 2.2930 For example, the syntax of the <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-transforms-1/#funcdef-translatex title=translatex()>translateX()</a> function is: 2.2931 2.2932 <pre>translateX( <a class="production css-code" data-link-type=type href=http://www.w3.org/TR/css3-2d-transforms/#typedef-translation-value title="<translation-value>"><translation-value></a> )</pre> 2.2933 -<p> However, the stylesheet may end with the function unclosed, like: 2.2934 + However, the stylesheet may end with the function unclosed, like: 2.2935 2.2936 <pre>.foo { transform: translate(50px</pre> 2.2937 -<p> The CSS parser parses this as a style rule containing one declaration, 2.2938 + The CSS parser parses this as a style rule containing one declaration, 2.2939 whose value is a function named "translate". 2.2940 This matches the above grammar, 2.2941 even though the ending token didn’t appear in the token stream, 2.2942 @@ -4409,20 +4440,20 @@ 2.2943 <h3 class="heading settled heading" data-level=7.1 id=declaration-rule-list><span class=secno>7.1 </span><span class=content> 2.2944 Defining Block Contents: the <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, <a class="production css-code" data-link-type=type href=#typedef-rule-list title="<rule-list>"><rule-list></a>, and <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a> productions</span><a class=self-link href=#declaration-rule-list></a></h3> 2.2945 2.2946 -<p> The CSS parser is agnostic as to the contents of blocks, 2.2947 + The CSS parser is agnostic as to the contents of blocks, 2.2948 such as those that come at the end of some at-rules. 2.2949 Defining the generic grammar of the blocks in terms of tokens is non-trivial, 2.2950 but there are dedicated and unambiguous algorithms defined for parsing this. 2.2951 2.2952 -<p> The <dfn class=css-code data-dfn-type=type data-export="" id=typedef-declaration-list><declaration-list><a class=self-link href=#typedef-declaration-list></a></dfn> production represents a list of declarations. 2.2953 + The <dfn class=css-code data-dfn-type=type data-export="" id=typedef-declaration-list><declaration-list><a class=self-link href=#typedef-declaration-list></a></dfn> production represents a list of declarations. 2.2954 It may only be used in grammars as the sole value in a block, 2.2955 and represents that the contents of the block must be parsed using the <a data-link-type=dfn href=#consume-a-list-of-declarations0 title="consume a list of declarations">consume a list of declarations</a> algorithm. 2.2956 2.2957 -<p> Similarly, the <dfn class=css-code data-dfn-type=type data-export="" id=typedef-rule-list><rule-list><a class=self-link href=#typedef-rule-list></a></dfn> production represents a list of rules, 2.2958 + Similarly, the <dfn class=css-code data-dfn-type=type data-export="" id=typedef-rule-list><rule-list><a class=self-link href=#typedef-rule-list></a></dfn> production represents a list of rules, 2.2959 and may only be used in grammars as the sole value in a block. 2.2960 It represents that the contents of the block must be parsed using the <a data-link-type=dfn href=#consume-a-list-of-rules0 title="consume a list of rules">consume a list of rules</a> algorithm. 2.2961 2.2962 -<p> Finally, the <dfn class=css-code data-dfn-type=type data-export="" id=typedef-stylesheet><stylesheet><a class=self-link href=#typedef-stylesheet></a></dfn> production represents a list of rules. 2.2963 + Finally, the <dfn class=css-code data-dfn-type=type data-export="" id=typedef-stylesheet><stylesheet><a class=self-link href=#typedef-stylesheet></a></dfn> production represents a list of rules. 2.2964 It is identical to <a class="production css-code" data-link-type=type href=#typedef-rule-list title="<rule-list>"><rule-list></a>, 2.2965 except that blocks using it default to accepting all rules 2.2966 that aren’t otherwise limited to a particular context. 2.2967 @@ -4433,23 +4464,23 @@ 2.2968 This is expressed with the following grammar: 2.2969 2.2970 <pre>@font-face { <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a> }</pre> 2.2971 -<p> This is a complete and sufficient definition of the rule’s grammar. 2.2972 - 2.2973 -<p> For another example, 2.2974 + This is a complete and sufficient definition of the rule’s grammar. 2.2975 + 2.2976 + For another example, 2.2977 <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-animations-1/#at-ruledef-keyframes title=@keyframes>@keyframes</a> rules are more complex, 2.2978 interpreting their prelude as a name and containing keyframes rules in their block 2.2979 Their grammar is: 2.2980 2.2981 <pre>@keyframes <a class="production css-code" data-link-type=type title="<keyframes-name>"><keyframes-name></a> { <a class="production css-code" data-link-type=type href=#typedef-rule-list title="<rule-list>"><rule-list></a> }</pre> </div> 2.2982 2.2983 -<p> For rules that use <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, 2.2984 + For rules that use <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, 2.2985 the spec for the rule must define which properties, descriptors, and/or at-rules are valid inside the rule; 2.2986 this may be as simple as saying "The @foo rule accepts the properties/descriptors defined in this specification/section.", 2.2987 and extension specs may simply say "The @foo rule additionally accepts the following properties/descriptors.". 2.2988 Any declarations or at-rules found inside the block that are not defined as valid 2.2989 must be removed from the rule’s value. 2.2990 2.2991 -<p> Within a <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, 2.2992 + Within a <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, 2.2993 <code>!important</code> is automatically invalid on any descriptors. 2.2994 If the rule accepts properties, 2.2995 the spec for the rule must define whether the properties interact with the cascade, 2.2996 @@ -4464,7 +4495,7 @@ 2.2997 define that the allowed declarations are the descriptors defined in the Fonts spec. 2.2998 </div> 2.2999 2.3000 -<p> For rules that use <a class="production css-code" data-link-type=type href=#typedef-rule-list title="<rule-list>"><rule-list></a>, 2.3001 + For rules that use <a class="production css-code" data-link-type=type href=#typedef-rule-list title="<rule-list>"><rule-list></a>, 2.3002 the spec for the rule must define what types of rules are valid inside the rule, 2.3003 same as <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a>, 2.3004 and unrecognized rules must similarly be removed from the rule’s value. 2.3005 @@ -4476,13 +4507,13 @@ 2.3006 which are defined as: 2.3007 2.3008 <pre><a class="production css-code" data-link-type=type title="<keyframe-rule>"><keyframe-rule></a> = <a class="production css-code" data-link-type=type title="<keyframe-selector>"><keyframe-selector></a> { <a class="production css-code" data-link-type=type href=#typedef-declaration-list title="<declaration-list>"><declaration-list></a> }</pre> 2.3009 -<p> Keyframe rules, then, 2.3010 + Keyframe rules, then, 2.3011 must further define that they accept as declarations all animatable CSS properties, 2.3012 plus the <a class=property data-link-type=propdesc href=http://dev.w3.org/csswg/css-animations-1/#propdef-animation-timing-function title=animation-timing-function>animation-timing-function</a> property, 2.3013 but that they do not interact with the cascade. 2.3014 </div> 2.3015 2.3016 -<p> For rules that use <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a>, 2.3017 + For rules that use <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a>, 2.3018 all rules are allowed by default, 2.3019 but the spec for the rule may define what types of rules are <em>invalid</em> inside the rule. 2.3020 2.3021 @@ -4492,7 +4523,7 @@ 2.3022 As such, its grammar is: 2.3023 2.3024 <pre>@media <a class="production css-code" data-link-type=type href=http://dev.w3.org/csswg/mediaqueries-4/#typedef-media-query-list title="<media-query-list>"><media-query-list></a> { <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a> }</pre> 2.3025 -<p> It additionally defines a restriction that the <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a> can not contain <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a> rules, 2.3026 + It additionally defines a restriction that the <a class="production css-code" data-link-type=type href=#typedef-stylesheet title="<stylesheet>"><stylesheet></a> can not contain <a class=css data-link-type=maybe href=http://dev.w3.org/csswg/css-conditional-3/#at-ruledef-media title=@media>@media</a> rules, 2.3027 which causes them to be dropped from the outer rule’s value if they appear. 2.3028 </div> 2.3029 2.3030 @@ -4500,11 +4531,11 @@ 2.3031 <h2 class="heading settled heading" data-level=8 id=css-stylesheets><span class=secno>8 </span><span class=content> 2.3032 CSS stylesheets</span><a class=self-link href=#css-stylesheets></a></h2> 2.3033 2.3034 -<p> To <dfn data-dfn-type=dfn data-noexport="" id=parse-a-css-stylesheet>parse a CSS stylesheet<a class=self-link href=#parse-a-css-stylesheet></a></dfn>, 2.3035 + To <dfn data-dfn-type=dfn data-noexport="" id=parse-a-css-stylesheet>parse a CSS stylesheet<a class=self-link href=#parse-a-css-stylesheet></a></dfn>, 2.3036 first <a data-link-type=dfn href=#parse-a-stylesheet0 title="parse a stylesheet">parse a stylesheet</a>. 2.3037 Interpret all of the resulting top-level <a data-link-type=dfn href=#qualified-rule title="qualified rules">qualified rules</a> as <a data-link-type=dfn href=#style-rule title="style rules">style rules</a>, defined below. 2.3038 2.3039 -<p> If any style rule is invalid, 2.3040 + If any style rule is invalid, 2.3041 or any at-rule is not recognized or is invalid according to its grammar or context, 2.3042 it’s a <a data-link-type=dfn href=#parse-error title="parse error">parse error</a>. 2.3043 Discard that rule. 2.3044 @@ -4512,19 +4543,19 @@ 2.3045 <h3 class="heading settled heading" data-level=8.1 id=style-rules><span class=secno>8.1 </span><span class=content> 2.3046 Style rules</span><a class=self-link href=#style-rules></a></h3> 2.3047 2.3048 -<p> A <dfn data-dfn-type=dfn data-noexport="" id=style-rule>style rule<a class=self-link href=#style-rule></a></dfn> is a <a data-link-type=dfn href=#qualified-rule title="qualified rule">qualified rule</a> 2.3049 + A <dfn data-dfn-type=dfn data-noexport="" id=style-rule>style rule<a class=self-link href=#style-rule></a></dfn> is a <a data-link-type=dfn href=#qualified-rule title="qualified rule">qualified rule</a> 2.3050 that associates a <a href=http://dev.w3.org/csswg/selectors4/#selector-list>selector list</a> <a data-biblio-type=normative data-link-type=biblio href=#select title=select>[SELECT]</a> 2.3051 with a list of property declarations. 2.3052 They are also called 2.3053 <a href=http://www.w3.org/TR/CSS21/syndata.html#rule-sets>rule sets</a> in <a data-biblio-type=normative data-link-type=biblio href=#css21 title=css21>[CSS21]</a>. 2.3054 CSS Cascading and Inheritance <a data-biblio-type=normative data-link-type=biblio href=#css3cascade title=css3cascade>[CSS3CASCADE]</a> defines how the declarations inside of style rules participate in the cascade. 2.3055 2.3056 -<p> The prelude of the qualified rule is parsed as a 2.3057 + The prelude of the qualified rule is parsed as a 2.3058 <a href=http://dev.w3.org/csswg/selectors4/#selector-list>selector list</a>. 2.3059 If this results in an <a href=http://dev.w3.org/csswg/selectors4/#invalid>invalid selector list</a>, 2.3060 the entire style rule is invalid. 2.3061 2.3062 -<p> The content of the qualified rule’s block is parsed as a 2.3063 + The content of the qualified rule’s block is parsed as a 2.3064 <a data-link-type=dfn href=#parse-a-list-of-declarations0 title="parse a list of declarations">list of declarations</a>. 2.3065 Unless defined otherwise by another specification or a future level of this specification, 2.3066 at-rules in that list are invalid 2.3067 @@ -4535,9 +4566,9 @@ 2.3068 The validity of the style rule’s contents have no effect on the validity of the style rule itself. 2.3069 Unless otherwise specified, property names are <a data-link-type=dfn href=#ascii-case-insensitive title="ascii case-insensitive">ASCII case-insensitive</a>. 2.3070 2.3071 -<p class=note> Note: The names of Custom Properties <a data-biblio-type=informative data-link-type=biblio href=#css-variables title=css-variables>[CSS-VARIABLES]</a> are case-sensitive. 2.3072 - 2.3073 -<p> <a data-link-type=dfn href=#qualified-rule title="qualified rules">Qualified rules</a> at the top-level of a CSS stylesheet are style rules. 2.3074 + Note: The names of Custom Properties <a data-biblio-type=informative data-link-type=biblio href=#css-variables title=css-variables>[CSS-VARIABLES]</a> are case-sensitive. 2.3075 + 2.3076 + <a data-link-type=dfn href=#qualified-rule title="qualified rules">Qualified rules</a> at the top-level of a CSS stylesheet are style rules. 2.3077 Qualified rules in other contexts may or may not be style rules, 2.3078 as defined by the context. 2.3079 2.3080 @@ -4548,16 +4579,16 @@ 2.3081 <h3 class="heading settled heading" data-level=8.2 id=charset-rule><span class=secno>8.2 </span><span class=content> 2.3082 The <a class=css data-link-type=maybe href=#at-ruledef-charset title=@charset>@charset</a> Rule</span><a class=self-link href=#charset-rule></a></h3> 2.3083 2.3084 -<p> The @charset rule is an artifact of the algorithm used to <a data-link-type=dfn href=#determine-the-fallback-encoding title="determine the fallback encoding">determine the fallback encoding</a> for the stylesheet. 2.3085 + The @charset rule is an artifact of the algorithm used to <a data-link-type=dfn href=#determine-the-fallback-encoding title="determine the fallback encoding">determine the fallback encoding</a> for the stylesheet. 2.3086 That algorithm looks for a specific byte sequence as the very first few bytes in the file, 2.3087 which has the syntactic form of an @-rule. 2.3088 Those bytes are not discarded from the input, 2.3089 whether or not they influence the encoding actually used to process the stylesheet. 2.3090 2.3091 -<p> Therefore, the stylesheet parser recognizes an @-rule with the general syntax 2.3092 + Therefore, the stylesheet parser recognizes an @-rule with the general syntax 2.3093 2.3094 <pre class=prod><dfn class=css-code data-dfn-type=at-rule data-export="" id=at-ruledef-charset>@charset<a class=self-link href=#at-ruledef-charset></a></dfn> = @charset <a class="production css-code" data-link-type=type href=http://dev.w3.org/csswg/css-values-3/#string-value title="<string>"><string></a> ;</pre> 2.3095 -<p> and, for backward compatibility, includes it in the object model for the stylesheet. 2.3096 + and, for backward compatibility, includes it in the object model for the stylesheet. 2.3097 Modifying, adding, or removing an @charset rule via the object model has no effect 2.3098 (in particular it does <strong>not</strong> cause the stylesheet to be rescanned in a different encoding). 2.3099 The @charset rule is invalid if it is not the very first, top-level rule in the stylesheet, 2.3100 @@ -4571,56 +4602,56 @@ 2.3101 <h2 class="heading settled heading" data-level=9 id=serialization><span class=secno>9 </span><span class=content> 2.3102 Serialization</span><a class=self-link href=#serialization></a></h2> 2.3103 2.3104 -<p> The tokenizer described in this specification does not produce tokens for comments, 2.3105 + The tokenizer described in this specification does not produce tokens for comments, 2.3106 or otherwise preserve them in any way. 2.3107 Implementations may preserve the contents of comments and their location in the token stream. 2.3108 If they do, this preserved information must have no effect on the parsing step. 2.3109 2.3110 -<p> This specification does not define how to serialize CSS in general, 2.3111 + This specification does not define how to serialize CSS in general, 2.3112 leaving that task to the CSSOM and individual feature specifications. 2.3113 In particular, the serialization of comments an whitespace is not defined. 2.3114 2.3115 -<p> The only requirement for serialization is that it must "round-trip" with parsing, 2.3116 + The only requirement for serialization is that it must "round-trip" with parsing, 2.3117 that is, parsing the stylesheet must produce the same data structures as 2.3118 parsing, serializing, and parsing again, 2.3119 except for consecutive <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a>s, 2.3120 which may be collapsed into a single token. 2.3121 2.3122 -<p class=note> Note: This exception can exist because 2.3123 + Note: This exception can exist because 2.3124 CSS grammars always interpret any amount of whitespace as identical to a single space. 2.3125 2.3126 <div class=note id=serialization-tables><a class=self-link href=#serialization-tables></a> 2.3127 To satisfy this requirement: 2.3128 2.3129 -<p> <ul> 2.3130 + <ul> 2.3131 <li> 2.3132 -<p> A <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> containing U+005C REVERSE SOLIDUS (\) 2.3133 + A <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> containing U+005C REVERSE SOLIDUS (\) 2.3134 must be serialized as U+005C REVERSE SOLIDUS 2.3135 followed by a <a data-link-type=dfn href=#newline title=newline>newline</a>. 2.3136 (The tokenizer only ever emits such a token followed by a <a class="production css-code" data-link-type=type href=#typedef-whitespace-token title="<whitespace-token>"><whitespace-token></a> 2.3137 that starts with a newline.) 2.3138 2.3139 <li> 2.3140 -<p> A <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a> with the "unrestricted" type flag may not need 2.3141 + A <a class="production css-code" data-link-type=type href=#typedef-hash-token title="<hash-token>"><hash-token></a> with the "unrestricted" type flag may not need 2.3142 as much escaping as the same token with the "id" type flag. 2.3143 2.3144 <li> 2.3145 -<p> The unit of a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> may need escaping 2.3146 + The unit of a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> may need escaping 2.3147 to disambiguate with scientific notation. 2.3148 2.3149 <li> 2.3150 -<p> For any consecutive pair of tokens, 2.3151 + For any consecutive pair of tokens, 2.3152 if the first token shows up in the row headings of either of the following two tables, 2.3153 and the second token shows up in the column headings, 2.3154 and there’s a ✗ in the cell denoted by the intersection of the chosen row and column, 2.3155 the pair of tokens must be serialized with a comment between them. 2.3156 2.3157 -<p> If the tokenizer preserves comments, 2.3158 + If the tokenizer preserves comments, 2.3159 the preserved comment should be used; 2.3160 otherwise, an empty comment (<code>/**/</code>) must be inserted. 2.3161 (Preserved comments may be reinserted even if the following tables don’t require a comment between two tokens.) 2.3162 2.3163 -<p> Single characters in the row and column headings represent a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> with that value, 2.3164 + Single characters in the row and column headings represent a <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> with that value, 2.3165 except for "<code>(</code>", 2.3166 which represents a <a href=#tokendef-open-paren>(-token</a>. 2.3167 </ul> 2.3168 @@ -4703,43 +4734,43 @@ 2.3169 <h3 class="heading settled heading" data-level=9.1 id=serializing-anb><span class=secno>9.1 </span><span class=content> 2.3170 Serializing <var><an+b></var></span><a class=self-link href=#serializing-anb></a></h3> 2.3171 2.3172 -<p> To serialize an <var><an+b></var> value, 2.3173 + To serialize an <var><an+b></var> value, 2.3174 let <var>s</var> initially be the empty string: 2.3175 2.3176 <dl> 2.3177 <dt><var>A</var> and <var>B</var> are both zero 2.3178 <dd> 2.3179 -<p> Append "0" to <var>s</var>. 2.3180 + Append "0" to <var>s</var>. 2.3181 2.3182 <dt><var>A</var> is zero, <var>B</var> is non-zero 2.3183 <dd> 2.3184 -<p> Serialize <var>B</var> and append it to <var>s</var>. 2.3185 + Serialize <var>B</var> and append it to <var>s</var>. 2.3186 2.3187 <dt><var>A</var> is non-zero, <var>B</var> is zero 2.3188 <dd> 2.3189 -<p> Serialize <var>A</var> and append it to <var>s</var>. 2.3190 + Serialize <var>A</var> and append it to <var>s</var>. 2.3191 Append "n" to <var>s</var>. 2.3192 2.3193 <dt><var>A</var> and <var>B</var> are both non-zero 2.3194 <dd> 2.3195 -<p> Serialize <var>A</var> and append it to <var>s</var>. 2.3196 + Serialize <var>A</var> and append it to <var>s</var>. 2.3197 Append "n" to <var>s</var>. 2.3198 If <var>B</var> is positive, 2.3199 append "+" to <var>s</var> 2.3200 Serialize <var>B</var> and append it to <var>s</var>. 2.3201 </dl> 2.3202 2.3203 -<p> Return <var>s</var>. 2.3204 + Return <var>s</var>. 2.3205 2.3206 <h2 class="heading settled heading" data-level=10 id=changes0><span class=secno>10 </span><span class=content> 2.3207 Changes</span><a class=self-link href=#changes0></a></h2> 2.3208 2.3209 -<p> <em>This section is non-normative.</em> 2.3210 + <em>This section is non-normative.</em> 2.3211 2.3212 <h3 class="heading settled heading" data-level=10.1 id=changes-CR-20140220><span class=secno>10.1 </span><span class=content> 2.3213 Changes from the 20 February 2014 Candidate Recommendation</span><a class=self-link href=#changes-CR-20140220></a></h3> 2.3214 2.3215 -<p> <ul> 2.3216 + <ul> 2.3217 <li>Fix several bugs in the tokenization and parsing algorithms. 2.3218 <li>Change the definition of ident-like tokens to allow "--" to start an ident. 2.3219 <li>Minor editorial restructuring of algorithms. 2.3220 @@ -4748,18 +4779,18 @@ 2.3221 <h3 class="heading settled heading" data-level=10.2 id=changes-WD-20131105><span class=secno>10.2 </span><span class=content> 2.3222 Changes from the 5 November 2013 Last Call Working Draft</span><a class=self-link href=#changes-WD-20131105></a></h3> 2.3223 2.3224 -<p> <ul> 2.3225 + <ul> 2.3226 <li> 2.3227 -<p> The <a href=#serialization>Serialization</a> section has been rewritten 2.3228 + The <a href=#serialization>Serialization</a> section has been rewritten 2.3229 to make only the "round-trip" requirement normative, 2.3230 and move the details of how to achieve it into a note. 2.3231 Some corner cases in these details have been fixed. 2.3232 <li> 2.3233 -<p> <a data-biblio-type=informative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a> has been added to the list of normative references. 2.3234 + <a data-biblio-type=informative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a> has been added to the list of normative references. 2.3235 It was already referenced in normative text before, 2.3236 just not listed as such. 2.3237 <li> 2.3238 -<p> In the algorithm to <a data-link-type=dfn href=#determine-the-fallback-encoding title="determine the fallback encoding">determine the fallback encoding</a> of a stylesheet, 2.3239 + In the algorithm to <a data-link-type=dfn href=#determine-the-fallback-encoding title="determine the fallback encoding">determine the fallback encoding</a> of a stylesheet, 2.3240 limit the <code>@charset</code> byte sequence to 1024 bytes. 2.3241 This aligns with what HTML does for <code><meta charset></code> 2.3242 and makes sure the size of the sequence is bounded. 2.3243 @@ -4771,9 +4802,9 @@ 2.3244 <h3 class="heading settled heading" data-level=10.3 id=changes-WD-20130919><span class=secno>10.3 </span><span class=content> 2.3245 Changes from the 19 September 2013 Working Draft</span><a class=self-link href=#changes-WD-20130919></a></h3> 2.3246 2.3247 -<p> <ul> 2.3248 + <ul> 2.3249 <li> 2.3250 -<p> The concept of <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> was added. 2.3251 + The concept of <a data-link-type=dfn href=#environment-encoding title="environment encoding">environment encoding</a> was added. 2.3252 The behavior does not change, 2.3253 but some of the definitions should be moved to the relevant specs. 2.3254 </ul> 2.3255 @@ -4781,68 +4812,68 @@ 2.3256 <h3 class="heading settled heading" data-level=10.4 id=changes-css21><span class=secno>10.4 </span><span class=content> 2.3257 Changes from CSS 2.1 and Selectors Level 3</span><a class=self-link href=#changes-css21></a></h3> 2.3258 2.3259 -<p class=note> Note: The point of this spec is to match reality; 2.3260 + Note: The point of this spec is to match reality; 2.3261 changes from CSS2.1 are nearly always because CSS 2.1 specified something that doesn’t match actual browser behavior, 2.3262 or left something unspecified. 2.3263 If some detail doesn’t match browsers, 2.3264 please let me know 2.3265 as it’s almost certainly unintentional. 2.3266 2.3267 -<p> Changes in decoding from a byte stream: 2.3268 - 2.3269 -<p> <ul> 2.3270 + Changes in decoding from a byte stream: 2.3271 + 2.3272 + <ul> 2.3273 <li> 2.3274 -<p> Only detect <a class=css data-link-type=maybe href=#at-ruledef-charset title=@charset>@charset</a> rules in ASCII-compatible byte patterns. 2.3275 + Only detect <a class=css data-link-type=maybe href=#at-ruledef-charset title=@charset>@charset</a> rules in ASCII-compatible byte patterns. 2.3276 2.3277 <li> 2.3278 -<p> Ignore <a class=css data-link-type=maybe href=#at-ruledef-charset title=@charset>@charset</a> rules that specify an ASCII-incompatible encoding, 2.3279 + Ignore <a class=css data-link-type=maybe href=#at-ruledef-charset title=@charset>@charset</a> rules that specify an ASCII-incompatible encoding, 2.3280 as that would cause the rule itself to not decode properly. 2.3281 2.3282 <li> 2.3283 -<p> Refer to <a data-biblio-type=normative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a> 2.3284 + Refer to <a data-biblio-type=normative data-link-type=biblio href=#encoding title=encoding>[ENCODING]</a> 2.3285 rather than the IANA registery for character encodings. 2.3286 2.3287 </ul> 2.3288 2.3289 -<p> Tokenization changes: 2.3290 - 2.3291 -<p> <ul> 2.3292 + Tokenization changes: 2.3293 + 2.3294 + <ul> 2.3295 <li> 2.3296 -<p> Any U+0000 NULL <a data-link-type=dfn href=#code-point title="code point">code point</a> in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 2.3297 + Any U+0000 NULL <a data-link-type=dfn href=#code-point title="code point">code point</a> in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 2.3298 2.3299 <li> 2.3300 -<p> Any hexadecimal escape sequence such as <span class=css data-link-type=maybe title=\0>\0</span> that evaluates to zero 2.3301 + Any hexadecimal escape sequence such as <span class=css data-link-type=maybe title=\0>\0</span> that evaluates to zero 2.3302 produce U+FFFD REPLACEMENT CHARACTER rather than U+0000 NULL. 2.3303 2.3304 2.3305 <li> 2.3306 -<p> The definition of <a data-link-type=dfn href=#non-ascii-code-point title="non-ascii code point">non-ASCII code point</a> was changed 2.3307 + The definition of <a data-link-type=dfn href=#non-ascii-code-point title="non-ascii code point">non-ASCII code point</a> was changed 2.3308 to be consistent with every definition of ASCII. 2.3309 This affects <a data-link-type=dfn href=#code-point title="code points">code points</a> U+0080 to U+009F, 2.3310 which are now <a data-link-type=dfn href=#name-code-point title="name code points">name code points</a> rather than <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a>s, 2.3311 like the rest of <a data-link-type=dfn href=#non-ascii-code-point title="non-ascii code points">non-ASCII code points</a>. 2.3312 2.3313 <li> 2.3314 -<p> Tokenization does not emit COMMENT or BAD_COMMENT tokens anymore. 2.3315 + Tokenization does not emit COMMENT or BAD_COMMENT tokens anymore. 2.3316 BAD_COMMENT is now considered the same as a normal token (not an error). 2.3317 <a href=#serialization>Serialization</a> is responsible 2.3318 for inserting comments as necessary between tokens that need to be separated, 2.3319 e.g. two consecutive <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>s. 2.3320 2.3321 <li> 2.3322 -<p> The <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> is now more restrictive, 2.3323 + The <a class="production css-code" data-link-type=type href=#typedef-unicode-range-token title="<unicode-range-token>"><unicode-range-token></a> is now more restrictive, 2.3324 and doesn’t include non-sensical patterns that the 2.1 definition allowed. 2.3325 2.3326 <li> 2.3327 -<p> Apply the <a href=http://www.w3.org/TR/CSS21/syndata.html#unexpected-eof>EOF error handling rule</a> in the tokenizer 2.3328 + Apply the <a href=http://www.w3.org/TR/CSS21/syndata.html#unexpected-eof>EOF error handling rule</a> in the tokenizer 2.3329 and emit normal <a class="production css-code" data-link-type=type href=#typedef-string-token title="<string-token>"><string-token></a> and <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a> rather than BAD_STRING or BAD_URI 2.3330 on EOF. 2.3331 2.3332 <li> 2.3333 -<p> <a class="production css-code" data-link-type=type href=#typedef-prefix-match-token title="<prefix-match-token>"><prefix-match-token></a>, <a class="production css-code" data-link-type=type href=#typedef-suffix-match-token title="<suffix-match-token>"><suffix-match-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-substring-match-token title="<substring-match-token>"><substring-match-token></a> have been imported from Selectors 3. 2.3334 + <a class="production css-code" data-link-type=type href=#typedef-prefix-match-token title="<prefix-match-token>"><prefix-match-token></a>, <a class="production css-code" data-link-type=type href=#typedef-suffix-match-token title="<suffix-match-token>"><suffix-match-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-substring-match-token title="<substring-match-token>"><substring-match-token></a> have been imported from Selectors 3. 2.3335 2.3336 <li> 2.3337 -<p> The BAD_URI token (now <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>) is "self-contained". 2.3338 + The BAD_URI token (now <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a>) is "self-contained". 2.3339 In other words, once the tokenizer realizes it’s in a <a class="production css-code" data-link-type=type href=#typedef-bad-url-token title="<bad-url-token>"><bad-url-token></a> rather than a <a class="production css-code" data-link-type=type href=#typedef-url-token title="<url-token>"><url-token></a>, 2.3340 it just seeks forward to look for the closing ), 2.3341 ignoring everything else. 2.3342 @@ -4852,33 +4883,33 @@ 2.3343 but it doesn’t appear that we’ve gotten any compat bugs from it. 2.3344 2.3345 <li> 2.3346 -<p> The <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> has been added. 2.3347 + The <a class="production css-code" data-link-type=type href=#typedef-comma-token title="<comma-token>"><comma-token></a> has been added. 2.3348 2.3349 <li> 2.3350 -<p> <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a>, <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> have been changed 2.3351 + <a class="production css-code" data-link-type=type href=#typedef-number-token title="<number-token>"><number-token></a>, <a class="production css-code" data-link-type=type href=#typedef-percentage-token title="<percentage-token>"><percentage-token></a>, and <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> have been changed 2.3352 to include the preceding +/- sign as part of their value 2.3353 (rather than as a separate <a class="production css-code" data-link-type=type href=#typedef-delim-token title="<delim-token>"><delim-token></a> that needs to be manually handled every time the token is mentioned in other specs). 2.3354 The only consequence of this is that comments can no longer be inserted between the sign and the number. 2.3355 2.3356 <li> 2.3357 -<p> Scientific notation is supported for numbers/percentages/dimensions to match SVG, 2.3358 + Scientific notation is supported for numbers/percentages/dimensions to match SVG, 2.3359 per WG resolution. 2.3360 2.3361 <li> 2.3362 -<p> <a class="production css-code" data-link-type=type href=#typedef-column-token title="<column-token>"><column-token></a> has been added, 2.3363 + <a class="production css-code" data-link-type=type href=#typedef-column-token title="<column-token>"><column-token></a> has been added, 2.3364 to keep Selectors parsing in single-token lookahead. 2.3365 2.3366 <li> 2.3367 -<p> Hexadecimal escape for <a data-link-type=dfn href=#surrogate-code-point title="surrogate code points">surrogate code points</a> now emit a replacement character rather than the surrogate. 2.3368 + Hexadecimal escape for <a data-link-type=dfn href=#surrogate-code-point title="surrogate code points">surrogate code points</a> now emit a replacement character rather than the surrogate. 2.3369 This allows implementations to safely use UTF-16 internally. 2.3370 2.3371 </ul> 2.3372 2.3373 -<p> Parsing changes: 2.3374 - 2.3375 -<p> <ul> 2.3376 + Parsing changes: 2.3377 + 2.3378 + <ul> 2.3379 <li> 2.3380 -<p> Any list of declarations now also accepts at-rules, like <span class=css data-link-type=maybe title=@page>@page</span>, 2.3381 + Any list of declarations now also accepts at-rules, like <span class=css data-link-type=maybe title=@page>@page</span>, 2.3382 per WG resolution. 2.3383 This makes a difference in error handling 2.3384 even if no such at-rules are defined yet: 2.3385 @@ -4886,7 +4917,7 @@ 2.3386 and lets the next declaration begin. 2.3387 2.3388 <li> 2.3389 -<p> The handling of some miscellanous "special" tokens 2.3390 + The handling of some miscellanous "special" tokens 2.3391 (like an unmatched <a href=#tokendef-close-curly><}-token></a>) 2.3392 showing up in various places in the grammar 2.3393 has been specified with some reasonable behavior shown by at least one browser. 2.3394 @@ -4894,30 +4925,30 @@ 2.3395 so their handling was totally undefined. 2.3396 Specifically: 2.3397 2.3398 -<p> <ul> 2.3399 + <ul> 2.3400 <li> 2.3401 -<p> [] blocks, () blocks and functions can now contain {} blocks, <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>s or <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a>s 2.3402 + [] blocks, () blocks and functions can now contain {} blocks, <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>s or <a class="production css-code" data-link-type=type href=#typedef-semicolon-token title="<semicolon-token>"><semicolon-token></a>s 2.3403 2.3404 <li> 2.3405 -<p> Qualified rule preludes can now contain semicolons 2.3406 + Qualified rule preludes can now contain semicolons 2.3407 2.3408 <li> 2.3409 -<p> Qualified rule and at-rule preludes can now contain <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>s 2.3410 + Qualified rule and at-rule preludes can now contain <a class="production css-code" data-link-type=type href=#typedef-at-keyword-token title="<at-keyword-token>"><at-keyword-token></a>s 2.3411 </ul> 2.3412 2.3413 </ul> 2.3414 2.3415 -<p> <var>An+B</var> changes from Selectors Level 3 <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a>: 2.3416 - 2.3417 -<p> <ul> 2.3418 + <var>An+B</var> changes from Selectors Level 3 <a data-biblio-type=informative data-link-type=biblio href=#select title=select>[SELECT]</a>: 2.3419 + 2.3420 + <ul> 2.3421 <li> 2.3422 -<p> The <var>An+B</var> microsyntax has now been formally defined in terms of CSS tokens, 2.3423 + The <var>An+B</var> microsyntax has now been formally defined in terms of CSS tokens, 2.3424 rather than with a separate tokenizer. 2.3425 This has resulted in minor differences: 2.3426 2.3427 -<p> <ul> 2.3428 + <ul> 2.3429 <li> 2.3430 -<p> In some cases, minus signs or digits can be escaped 2.3431 + In some cases, minus signs or digits can be escaped 2.3432 (when they appear as part of the unit of a <a class="production css-code" data-link-type=type href=#typedef-dimension-token title="<dimension-token>"><dimension-token></a> or <a class="production css-code" data-link-type=type href=#typedef-ident-token title="<ident-token>"><ident-token></a>). 2.3433 </ul> 2.3434 </ul> 2.3435 @@ -4933,29 +4964,30 @@ 2.3436 Johannes Koch, 2.3437 呂康豪 (Kang-Hao Lu), 2.3438 Marc O’Morain, 2.3439 + Raffaello Giulietti, 2.3440 Simon Pieter, 2.3441 and Zack Weinberg. 2.3442 2.3443 <h2 class="no-num heading settled heading" id=changes><span class=content> 2.3444 Changes Since the 20 Feb 2014 CR Publication</span><a class=self-link href=#changes></a></h2> 2.3445 2.3446 -<p> The following substantive changes were made: 2.3447 - 2.3448 -<p> <ul> 2.3449 + The following substantive changes were made: 2.3450 + 2.3451 + <ul> 2.3452 <li> 2.3453 -<p> Fixed a bug in the "Consume a URL token" algorithm, 2.3454 + Fixed a bug in the "Consume a URL token" algorithm, 2.3455 where it didn’t consume the quote character starting a string before attempting to consume the string. 2.3456 2.3457 <li> 2.3458 -<p> Fixed a bug in several of the parser algorithms 2.3459 + Fixed a bug in several of the parser algorithms 2.3460 related to the current/next input token and things getting consumed early/late. 2.3461 </ul> 2.3462 2.3463 -<p> The following editorial changes were made: 2.3464 - 2.3465 -<p> <ul> 2.3466 + The following editorial changes were made: 2.3467 + 2.3468 + <ul> 2.3469 <li> 2.3470 -<p> The "Consume a string token" algorithm was changed to allow calling it without specifying an explicit ending token, 2.3471 + The "Consume a string token" algorithm was changed to allow calling it without specifying an explicit ending token, 2.3472 so that it uses the current input token instead. 2.3473 The three call-sites of the algorithm were changed to use that form. 2.3474 </ul>