Wed, 14 Aug 2013 18:26:25 +0100
[css-syntax] Terminology: use "code point" instead of "character".
1.1 --- a/css-syntax/Diagrams.src.html Wed Aug 14 11:35:33 2013 +0200 1.2 +++ b/css-syntax/Diagrams.src.html Wed Aug 14 18:26:25 2013 +0100 1.3 @@ -60,7 +60,7 @@ 1.4 1.5 add('newline', Diagram(Choice(0, '\\n', '\\r\\n', '\\r', '\\f'))); 1.6 1.7 -add('whitespace character', Diagram(Choice( 1.8 +add('whitespace', Diagram(Choice( 1.9 0, 'space', '\\t', NonTerminal('newline')))); 1.10 1.11 add('escape', Diagram( 1.12 @@ -68,9 +68,9 @@ 1.13 NonTerminal('not newline or hex digit'), 1.14 Sequence( 1.15 OneOrMore(NonTerminal('hex digit'), Comment('1-6 times')), 1.16 - Optional(NonTerminal('whitespace character'), 'skip'))))); 1.17 + Optional(NonTerminal('whitespace'), 'skip'))))); 1.18 1.19 -add('〈whitespace〉', Diagram(OneOrMore(NonTerminal('whitespace character')))); 1.20 +add('〈whitespace〉', Diagram(OneOrMore(NonTerminal('whitespace')))); 1.21 1.22 add('〈ident〉', Diagram( 1.23 Choice(0, Skip(), '-'),
2.1 --- a/css-syntax/Overview.html Wed Aug 14 11:35:33 2013 +0200 2.2 +++ b/css-syntax/Overview.html Wed Aug 14 18:26:25 2013 +0100 2.3 @@ -12,7 +12,7 @@ 2.4 </a></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" id=subtitle><span class=content>Editor's Draft, 2.7 - <span class=dt-updated><span class=value-title title=20130813>13 August 2013</span></span></span></h2> 2.8 + <span class=dt-updated><span class=value-title title=20130814>14 August 2013</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>Editor's Draft:<dd><a href=http://dev.w3.org/csswg/css-syntax>http://dev.w3.org/csswg/css-syntax</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 @@ -82,11 +82,11 @@ 2.13 Consume an ident-like token</a><li><a href=#consume-a-string-token><span class=secno>4.3.4</span> 2.14 Consume a string token</a><li><a href=#consume-a-url-token><span class=secno>4.3.5</span> 2.15 Consume a url token</a><li><a href=#consume-a-unicode-range-token><span class=secno>4.3.6</span> 2.16 -Consume a unicode-range token</a><li><a href=#consume-an-escaped-character><span class=secno>4.3.7</span> 2.17 -Consume an escaped character</a><li><a href=#check-if-two-characters-are-a-valid-escape><span class=secno>4.3.8</span> 2.18 -Check if two characters are a valid escape</a><li><a href=#check-if-three-characters-would-start-an-identifier><span class=secno>4.3.9</span> 2.19 -Check if three characters would start an identifier</a><li><a href=#check-if-three-characters-would-start-a-number><span class=secno>4.3.10</span> 2.20 -Check if three characters would start a number</a><li><a href=#consume-a-name><span class=secno>4.3.11</span> 2.21 +Consume a unicode-range token</a><li><a href=#consume-an-escaped-code-point><span class=secno>4.3.7</span> 2.22 +consume an escaped code point</a><li><a href=#check-if-two-code-points-are-a-valid-escape><span class=secno>4.3.8</span> 2.23 +Check if two code points are a valid escape</a><li><a href=#check-if-three-code-points-would-start-an-identifier><span class=secno>4.3.9</span> 2.24 +Check if three code points would start an identifier</a><li><a href=#check-if-three-code-points-would-start-a-number><span class=secno>4.3.10</span> 2.25 +Check if three code points would start a number</a><li><a href=#consume-a-name><span class=secno>4.3.11</span> 2.26 Consume a name</a><li><a href=#consume-a-number><span class=secno>4.3.12</span> 2.27 Consume a number</a><li><a href=#convert-a-string-to-a-number><span class=secno>4.3.13</span> 2.28 Convert a string to a number</a><li><a href=#consume-the-remnants-of-a-bad-url><span class=secno>4.3.14</span> 2.29 @@ -148,7 +148,7 @@ 2.30 and other things which use CSS syntax 2.31 (such as the HTML <code>style</code> attribute). 2.32 2.33 -<p> It defines algorithms for converting a stream of codepoints 2.34 +<p> It defines algorithms for converting a stream of Unicode <a href=#code-point>code points</a> 2.35 (in other words, text) 2.36 into a stream of CSS tokens, 2.37 and then further into CSS objects 2.38 @@ -198,7 +198,7 @@ 2.39 </div> 2.40 2.41 <p> At-rules are all different, but they have a basic structure in common. 2.42 - They start with an "@" character followed by their name. 2.43 + They start with an "@" <a href=#code-point>code point</a> followed by their name. 2.44 Some <a href=#at-rule>at-rules</a> are simple statements, 2.45 with their name followed by more CSS values to specify their behavior, 2.46 and finally ended by a semicolon. 2.47 @@ -242,7 +242,7 @@ 2.48 <p> Property names and <a href=#at-rule>at-rule</a> names are always <b>identifiers</b>, 2.49 which have to start with a letter or a hyphen followed by a letter, 2.50 and then can contain letters, numbers, hyphens, or underscores. 2.51 - You can include any character at all, 2.52 + You can include any <a href=#code-point>code point</a> at all, 2.53 even ones that CSS uses in its syntax, 2.54 by <a href=#escaping0>escaping</a> it. 2.55 2.56 @@ -255,18 +255,18 @@ 2.57 2.58 <p> <em>This section is not normative.</em> 2.59 2.60 -<p> Any Unicode character can be included in an identifier or quoted string 2.61 +<p> Any Unicode <a href=#code-point>code point</a> can be included in an identifier or quoted string 2.62 by <dfn data-dfn-type=dfn id=escaping0>escaping</dfn> it. 2.63 CSS escape sequences start with a backslash (\), and continue with: 2.64 2.65 <p> <ul> 2.66 <li> 2.67 - Any Unicode character that is not a <a href=#hex-digit>hex digits</a> or a <a href=#newline>newline</a>. 2.68 - The escape sequence is replaced by that character. 2.69 + Any Unicode <a href=#code-point>code point</a> that is not a <a href=#hex-digit>hex digits</a> or a <a href=#newline>newline</a>. 2.70 + The escape sequence is replaced by that <a href=#code-point>code point</a>. 2.71 <li> 2.72 Or one to six <a href=#hex-digit>hex digits</a>, followed by an optional <a href=#whitespace>whitespace</a>. 2.73 - The escape sequence is replaced by the Unicode character 2.74 - whose codepoint number is given by the hexadecimal digits. 2.75 + The escape sequence is replaced by the Unicode <a href=#code-point>code point</a> 2.76 + whose value is given by the hexadecimal digits. 2.77 This optional whitespace allow hexadecimal escape sequences 2.78 to be followed by "real" hex digits. 2.79 2.80 @@ -363,7 +363,7 @@ 2.81 <h3 data-level=3.1 id=overview-of-the-parsing-model><span class=secno>3.1 </span><span class=content> 2.82 Overview of the Parsing Model</span><a class=section-link href=#overview-of-the-parsing-model>§</a></h3> 2.83 2.84 -<p> The input to the CSS parsing process consists of a stream of Unicode code points, 2.85 +<p> The input to the CSS parsing process consists of a stream of Unicode <a href=#code-point>code points</a>, 2.86 which is passed through a tokenization stage followed by a tree construction stage. 2.87 The output is a CSSStyleSheet object. 2.88 2.89 @@ -374,12 +374,13 @@ 2.90 The input byte stream</span><a class=section-link href=#the-input-byte-stream>§</a></h3> 2.91 2.92 <p> When parsing a stylesheet, 2.93 - the stream of Unicode code points that comprises the input to the tokenization stage may be initially seen by the user agent as a stream of bytes 2.94 + the stream of Unicode <a href=#code-point>code points</a> that comprises the input to the tokenization stage 2.95 + may be initially seen by the user agent as a stream of bytes 2.96 (typically coming over the network or from the local file system). 2.97 - The bytes encode the actual characters according to a particular character encoding, 2.98 - which the user agent must use to decode the bytes into characters. 2.99 - 2.100 -<p> To decode the stream of bytes into a stream of characters, 2.101 + The bytes encode the <a href=#code-point>code points</a> according to a particular character encoding, 2.102 + which the user agent must use to decode the bytes into <a href=#code-point>code points</a>. 2.103 + 2.104 +<p> To decode the stream of bytes into a stream of <a href=#code-point>code points</a>, 2.105 UAs must follow these steps. 2.106 2.107 <p> The algorithms to <a href=http://encoding.spec.whatwg.org/#concept-encoding-get><dfn data-dfn-type=dfn id=get-an-encoding>get an encoding</dfn></a> 2.108 @@ -447,21 +448,21 @@ 2.109 <h3 data-level=3.3 id=preprocessing-the-input-stream><span class=secno>3.3 </span><span class=content> 2.110 Preprocessing the input stream</span><a class=section-link href=#preprocessing-the-input-stream>§</a></h3> 2.111 2.112 -<p> The input stream consists of the characters (individual unicode code-points) 2.113 +<p> The input stream consists of the <a href=#code-point>code points</a> 2.114 pushed into it as the input byte stream is decoded. 2.115 2.116 <p> Before sending the input stream to the tokenizer, 2.117 - implementations must make the following character substitutions: 2.118 + implementations must make the following <a href=#code-point>code point</a> substitutions: 2.119 2.120 <p> <ul> 2.121 <li> 2.122 - Replace any U+000D CARRIAGE RETURN (CR) characters, 2.123 - U+000C FORM FEED (FF) characters, 2.124 + Replace any U+000D CARRIAGE RETURN (CR) <a href=#code-point>code point</a>, 2.125 + U+000C FORM FEED (FF) <a href=#code-point>code point</a>, 2.126 or pairs of U+000D CARRIAGE RETURN (CR) followed by U+000A LINE FEED (LF) 2.127 - by a single U+000A LINE FEED (LF) character. 2.128 + by a single U+000A LINE FEED (LF) <a href=#code-point>code point</a>. 2.129 2.130 <li> 2.131 - Replace any U+0000 NULL characters with U+FFFD REPLACEMENT CHARACTER (�). 2.132 + Replace any U+0000 NULL <a href=#code-point>code point</a> with U+FFFD REPLACEMENT CHARACTER (�). 2.133 </ul> 2.134 2.135 2.136 @@ -469,13 +470,13 @@ 2.137 Tokenization</span><a class=section-link href=#tokenization>§</a></h2> 2.138 2.139 <p> Implementations must act as if they used the following algorithms to tokenize CSS. 2.140 - To transform a stream of characters into a stream of tokens, 2.141 + To transform a stream of <a href=#code-point>code points</a> into a stream of tokens, 2.142 repeatedly <a href=#consume-a-token0>consume a token</a> 2.143 until an <a data-link-type=token href=#tokendef-eof>〈EOF〉</a> is reached, 2.144 collecting the returned tokens into a stream. 2.145 Each call to the <a href=#consume-a-token0>consume a token</a> algorithm 2.146 returns a single token, 2.147 - so it can also be used "on-demand" to tokenize a stream of characters <em>during</em> parsing, 2.148 + so it can also be used "on-demand" to tokenize a stream of <a href=#code-point>code points</a> <em>during</em> parsing, 2.149 if so desired. 2.150 2.151 <p> The output of the tokenization step is a stream of zero or more of the following tokens: 2.152 @@ -513,26 +514,26 @@ 2.153 2.154 <p> <ul> 2.155 <li> 2.156 - <a data-link-type=token href=#tokendef-ident>〈ident〉</a>, <a data-link-type=token href=#tokendef-function>〈function〉</a>, <a data-link-type=token href=#tokendef-at-keyword>〈at-keyword〉</a>, <a data-link-type=token href=#tokendef-hash>〈hash〉</a>, <a data-link-type=token href=#tokendef-string>〈string〉</a>, and <a data-link-type=token href=#tokendef-url>〈url〉</a> tokens have a value composed of zero or more characters. 2.157 + <a data-link-type=token href=#tokendef-ident>〈ident〉</a>, <a data-link-type=token href=#tokendef-function>〈function〉</a>, <a data-link-type=token href=#tokendef-at-keyword>〈at-keyword〉</a>, <a data-link-type=token href=#tokendef-hash>〈hash〉</a>, <a data-link-type=token href=#tokendef-string>〈string〉</a>, and <a data-link-type=token href=#tokendef-url>〈url〉</a> tokens have a value composed of zero or more <a href=#code-point>code points</a>. 2.158 Additionally, hash tokens have a type flag set to either "id" or "unrestricted". The type flag defaults to "unrestricted" if not otherwise set. 2.159 2.160 <li> 2.161 - <a data-link-type=token href=#tokendef-delim>〈delim〉</a> tokens have a value composed of a single character. 2.162 + <a data-link-type=token href=#tokendef-delim>〈delim〉</a> tokens have a value composed of a single <a href=#code-point>code point</a>. 2.163 2.164 <li> 2.165 - <a data-link-type=token href=#tokendef-number>〈number〉</a>, <a data-link-type=token href=#tokendef-percentage>〈percentage〉</a>, and <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> tokens have a representation composed of one or more character, and a numeric value. 2.166 + <a data-link-type=token href=#tokendef-number>〈number〉</a>, <a data-link-type=token href=#tokendef-percentage>〈percentage〉</a>, and <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> tokens have a representation composed of one or more <a href=#code-point>code points</a>, and a numeric value. 2.167 <a data-link-type=token href=#tokendef-number>〈number〉</a> and <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> tokens additionally have a type flag set to either "integer" or "number". The type flag defaults to "integer" if not otherwise set. 2.168 - <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> tokens additionally have a unit composed of one or more characters. 2.169 + <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> tokens additionally have a unit composed of one or more <a href=#code-point>code points</a>. 2.170 2.171 <li> 2.172 - <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a> tokens have a range of characters. 2.173 + <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a> tokens have a range of <a href=#code-point>code points</a>. 2.174 </ul> 2.175 2.176 <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.177 Only hash tokens with the "id" type are valid <a href=http://www.w3.org/TR/selectors/#id-selectors>ID selectors</a>. 2.178 2.179 <p class=note> Note: As a technical note, 2.180 - the tokenizer defined here requires only three characters of look-ahead. 2.181 + the tokenizer defined here requires only three <a href=#code-point>code points</a> of look-ahead. 2.182 The tokens it produces are designed to allow Selectors to be parsed with one token of look-ahead, 2.183 and additional tokens may be added in the future to maintain this invariant. 2.184 2.185 @@ -568,144 +569,151 @@ 2.186 <dt id=newline-diagram>newline</dt> 2.187 <dd><svg class=railroad-diagram height=152 width=173><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M132 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h8"></path><path d="M104 31h8"></path><rect height=22 rx=10 ry=10 width=36 x=68 y=20></rect><text x=86 y=35>\n</text></g><path d="M112 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M112 61h0"></path><rect height=22 rx=10 ry=10 width=52 x=60 y=50></rect><text x=86 y=65>\r\n</text></g><path d="M112 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M60 91h8"></path><path d="M104 91h8"></path><rect height=22 rx=10 ry=10 width=36 x=68 y=80></rect><text x=86 y=95>\r</text></g><path d="M112 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10"></path><g><path d="M60 121h8"></path><path d="M104 121h8"></path><rect height=22 rx=10 ry=10 width=36 x=68 y=110></rect><text x=86 y=125>\f</text></g><path d="M112 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10"></path></g><path d="M 132 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.188 2.189 - <dt id=whitespace-character-diagram>whitespace character</dt> 2.190 + <dt id=whitespace-diagram>whitespace</dt> 2.191 <dd><svg class=railroad-diagram height=122 width=197><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M156 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h8"></path><path d="M128 31h8"></path><rect height=22 rx=10 ry=10 width=60 x=68 y=20></rect><text x=98 y=35>space</text></g><path d="M136 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h20"></path><path d="M116 61h20"></path><rect height=22 rx=10 ry=10 width=36 x=80 y=50></rect><text x=98 y=65>\t</text></g><path d="M136 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M60 91h0"></path><path d="M136 91h0"></path><rect height=22 width=76 x=60 y=80></rect><text x=98 y=95>newline</text></g><path d="M136 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M 156 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.192 2.193 <dt id=escape-diagram>escape</dt> 2.194 - <dd><svg class=railroad-diagram height=122 width=521><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=50 y=20></rect><text x=64 y=35>\</text></g><path d="M78 31h10"></path><g><path d="M88 31h0"></path><path d="M480 31h0"></path><path d="M88 31h20"></path><g><path d="M108 31h70"></path><path d="M390 31h70"></path><rect height=22 width=212 x=178 y=20></rect><text x=284 y=35>not newline or hex digit</text></g><path d="M460 31h20"></path><path d="M88 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M108 61h0"></path><path d="M460 61h0"></path><path d="M108 61h10"></path><g><path d="M118 61h0"></path><path d="M230 61h0"></path><path d="M118 61h10"></path><g><path d="M128 61h0"></path><path d="M220 61h0"></path><rect height=22 width=92 x=128 y=50></rect><text x=174 y=65>hex digit</text></g><path d="M220 61h10"></path><path d="M128 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 91h9.5"></path><path d="M210.5 91h9.5"></path><text class=comment x=174 y=96>1-6 times</text></g><path d="M220 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M230 61h10"></path><g><path d="M240 61h0"></path><path d="M460 61h0"></path><path d="M240 61h20"></path><g><path d="M260 61h180"></path></g><path d="M440 61h20"></path><path d="M240 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M260 81h0"></path><path d="M440 81h0"></path><rect height=22 width=180 x=260 y=70></rect><text x=350 y=85>whitespace character</text></g><path d="M440 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M460 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M 480 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.195 - 2.196 - <dt id="<a data-link-type='token'>〈whitespace〉</a>-diagram"><a data-link-type=token href=#tokendef-whitespace>〈whitespace〉</a></dt> 2.197 - <dd><svg class=railroad-diagram height=71 width=301><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M250 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M240 31h0"></path><rect height=22 width=180 x=60 y=20></rect><text x=150 y=35>whitespace character</text></g><path d="M240 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 51h180"></path></g><path d="M240 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M250 31h10"></path><path d="M 260 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.198 - 2.199 - <dt id="<a data-link-type='token'>〈ident〉</a>-diagram"><a data-link-type=token href=#tokendef-ident>〈ident〉</a></dt> 2.200 + <dd><svg class=railroad-diagram height=122 width=441><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=50 y=20></rect><text x=64 y=35>\</text></g><path d="M78 31h10"></path><g><path d="M88 31h0"></path><path d="M400 31h0"></path><path d="M88 31h20"></path><g><path d="M108 31h30"></path><path d="M350 31h30"></path><rect height=22 width=212 x=138 y=20></rect><text x=244 y=35>not newline or hex digit</text></g><path d="M380 31h20"></path><path d="M88 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M108 61h0"></path><path d="M380 61h0"></path><path d="M108 61h10"></path><g><path d="M118 61h0"></path><path d="M230 61h0"></path><path d="M118 61h10"></path><g><path d="M128 61h0"></path><path d="M220 61h0"></path><rect height=22 width=92 x=128 y=50></rect><text x=174 y=65>hex digit</text></g><path d="M220 61h10"></path><path d="M128 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 91h9.5"></path><path d="M210.5 91h9.5"></path><text class=comment x=174 y=96>1-6 times</text></g><path d="M220 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M230 61h10"></path><g><path d="M240 61h0"></path><path d="M380 61h0"></path><path d="M240 61h20"></path><g><path d="M260 61h100"></path></g><path d="M360 61h20"></path><path d="M240 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M260 81h0"></path><path d="M360 81h0"></path><rect height=22 width=100 x=260 y=70></rect><text x=310 y=85>whitespace</text></g><path d="M360 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M380 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M 400 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.201 + 2.202 + <dt id=〈whitespace〉-diagram>〈whitespace〉</dt> 2.203 + <dd><svg class=railroad-diagram height=71 width=221><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M170 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M160 31h0"></path><rect height=22 width=100 x=60 y=20></rect><text x=110 y=35>whitespace</text></g><path d="M160 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 51h100"></path></g><path d="M160 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M170 31h10"></path><path d="M 180 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.204 + 2.205 + <dt id=〈ident〉-diagram>〈ident〉</dt> 2.206 <dd><svg class=railroad-diagram height=110 width=729><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 41h0"></path><path d="M108 41h0"></path><path d="M40 41h20"></path><g><path d="M60 41h28"></path></g><path d="M88 41h20"></path><path d="M40 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M88 61h0"></path><rect height=22 rx=10 ry=10 width=28 x=60 y=50></rect><text x=74 y=65>-</text></g><path d="M88 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M108 41h0"></path><path d="M344 41h0"></path><path d="M108 41h20"></path><g><path d="M128 41h0"></path><path d="M324 41h0"></path><rect height=22 width=196 x=128 y=30></rect><text x=226 y=45>a-z A-Z _ or non-ASCII</text></g><path d="M324 41h20"></path><path d="M108 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 71h64"></path><path d="M260 71h64"></path><rect height=22 width=68 x=192 y=60></rect><text x=226 y=75>escape</text></g><path d="M324 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M344 41h0"></path><path d="M688 41h0"></path><path d="M344 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M364 21h304"></path></g><path d="M668 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M344 41h20"></path><g><path d="M364 41h0"></path><path d="M668 41h0"></path><path d="M364 41h10"></path><g><path d="M374 41h0"></path><path d="M658 41h0"></path><path d="M374 41h20"></path><g><path d="M394 41h0"></path><path d="M638 41h0"></path><rect height=22 width=244 x=394 y=30></rect><text x=516 y=45>a-z A-Z 0-9 _ - or non-ASCII</text></g><path d="M638 41h20"></path><path d="M374 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M394 71h88"></path><path d="M550 71h88"></path><rect height=22 width=68 x=482 y=60></rect><text x=516 y=75>escape</text></g><path d="M638 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M658 41h10"></path><path d="M374 41a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M374 90h284"></path></g><path d="M658 90a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M668 41h20"></path></g><path d="M 688 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.207 2.208 - <dt id="<a data-link-type='token'>〈function〉</a>-diagram"><a data-link-type=token href=#tokendef-function>〈function〉</a></dt> 2.209 - <dd><svg class=railroad-diagram height=62 width=225><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M126 31h0"></path><rect height=22 width=76 x=50 y=20></rect><text x=88 y=35><a data-link-type=token>〈ident〉</a></text></g><path d="M126 31h10"></path><path d="M136 31h10"></path><g><path d="M146 31h0"></path><path d="M174 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=146 y=20></rect><text x=160 y=35>(</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.210 - 2.211 - <dt id="<a data-link-type='token'>〈at-keyword〉</a>-diagram"><a data-link-type=token href=#tokendef-at-keyword>〈at-keyword〉</a></dt> 2.212 - <dd><svg class=railroad-diagram height=62 width=225><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=50 y=20></rect><text x=64 y=35>@</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M174 31h0"></path><rect height=22 width=76 x=98 y=20></rect><text x=136 y=35><a data-link-type=token>〈ident〉</a></text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.213 - 2.214 - <dt id="<a data-link-type='token'>〈hash〉</a>-diagram"><a data-link-type=token href=#tokendef-hash>〈hash〉</a></dt> 2.215 + <dt id=〈function〉-diagram>〈function〉</dt> 2.216 + <dd><svg class=railroad-diagram height=62 width=225><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M126 31h0"></path><rect height=22 width=76 x=50 y=20></rect><text x=88 y=35>〈ident〉</text></g><path d="M126 31h10"></path><path d="M136 31h10"></path><g><path d="M146 31h0"></path><path d="M174 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=146 y=20></rect><text x=160 y=35>(</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.217 + 2.218 + <dt id=〈at-keyword〉-diagram>〈at-keyword〉</dt> 2.219 + <dd><svg class=railroad-diagram height=62 width=225><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=50 y=20></rect><text x=64 y=35>@</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M174 31h0"></path><rect height=22 width=76 x=98 y=20></rect><text x=136 y=35>〈ident〉</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.220 + 2.221 + <dt id=〈hash〉-diagram>〈hash〉</dt> 2.222 <dd><svg class=railroad-diagram height=100 width=453><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=50 y=20></rect><text x=64 y=35>#</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M402 31h0"></path><path d="M98 31h10"></path><g><path d="M108 31h0"></path><path d="M392 31h0"></path><path d="M108 31h20"></path><g><path d="M128 31h0"></path><path d="M372 31h0"></path><rect height=22 width=244 x=128 y=20></rect><text x=250 y=35>a-z A-Z 0-9 _ - or non-ASCII</text></g><path d="M372 31h20"></path><path d="M108 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 61h88"></path><path d="M284 61h88"></path><rect height=22 width=68 x=216 y=50></rect><text x=250 y=65>escape</text></g><path d="M372 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M392 31h10"></path><path d="M108 31a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M108 80h284"></path></g><path d="M392 80a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M402 31h10"></path><path d="M 412 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.223 2.224 - <dt id="<a data-link-type='token'>〈string〉</a>-diagram"><a data-link-type=token href=#tokendef-string>〈string〉</a></dt> 2.225 + <dt id=〈string〉-diagram>〈string〉</dt> 2.226 <dd><svg class=railroad-diagram height=248 width=481><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 41h0"></path><path d="M440 41h0"></path><path d="M40 41h20"></path><g><path d="M60 41h0"></path><path d="M420 41h0"></path><path d="M60 41h10"></path><g><path d="M70 41h0"></path><path d="M98 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=70 y=30></rect><text x=84 y=45>"</text></g><path d="M98 41h10"></path><g><path d="M108 41h0"></path><path d="M372 41h0"></path><path d="M108 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M128 21h224"></path></g><path d="M352 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M108 41h20"></path><g><path d="M128 41h0"></path><path d="M352 41h0"></path><path d="M128 41h10"></path><g><path d="M138 41h0"></path><path d="M342 41h0"></path><path d="M138 41h20"></path><g><path d="M158 41h0"></path><path d="M322 41h0"></path><rect height=22 width=164 x=158 y=30></rect><text x=240 y=45>not " \ or newline</text></g><path d="M322 41h20"></path><path d="M138 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M158 71h48"></path><path d="M274 71h48"></path><rect height=22 width=68 x=206 y=60></rect><text x=240 y=75>escape</text></g><path d="M322 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M138 41a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M158 101h10"></path><path d="M312 101h10"></path><path d="M168 101h10"></path><g><path d="M178 101h0"></path><path d="M206 101h0"></path><rect height=22 rx=10 ry=10 width=28 x=178 y=90></rect><text x=192 y=105>\</text></g><path d="M206 101h10"></path><path d="M216 101h10"></path><g><path d="M226 101h0"></path><path d="M302 101h0"></path><rect height=22 width=76 x=226 y=90></rect><text x=264 y=105>newline</text></g><path d="M302 101h10"></path></g><path d="M322 101a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M342 41h10"></path><path d="M138 41a10 10 0 0 0 -10 10v59a10 10 0 0 0 10 10"></path><g><path d="M138 120h204"></path></g><path d="M342 120a10 10 0 0 0 10 -10v-59a10 10 0 0 0 -10 -10"></path></g><path d="M352 41h20"></path></g><path d="M372 41h10"></path><g><path d="M382 41h0"></path><path d="M410 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=382 y=30></rect><text x=396 y=45>"</text></g><path d="M410 41h10"></path></g><path d="M420 41h20"></path><path d="M40 41a10 10 0 0 1 10 10v88a10 10 0 0 0 10 10"></path><g><path d="M60 149h0"></path><path d="M420 149h0"></path><path d="M60 149h10"></path><g><path d="M70 149h0"></path><path d="M98 149h0"></path><rect height=22 rx=10 ry=10 width=28 x=70 y=138></rect><text x=84 y=153>'</text></g><path d="M98 149h10"></path><g><path d="M108 149h0"></path><path d="M372 149h0"></path><path d="M108 149a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M128 129h224"></path></g><path d="M352 129a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M108 149h20"></path><g><path d="M128 149h0"></path><path d="M352 149h0"></path><path d="M128 149h10"></path><g><path d="M138 149h0"></path><path d="M342 149h0"></path><path d="M138 149h20"></path><g><path d="M158 149h0"></path><path d="M322 149h0"></path><rect height=22 width=164 x=158 y=138></rect><text x=240 y=153>not ' \ or newline</text></g><path d="M322 149h20"></path><path d="M138 149a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M158 179h48"></path><path d="M274 179h48"></path><rect height=22 width=68 x=206 y=168></rect><text x=240 y=183>escape</text></g><path d="M322 179a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M138 149a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M158 209h10"></path><path d="M312 209h10"></path><path d="M168 209h10"></path><g><path d="M178 209h0"></path><path d="M206 209h0"></path><rect height=22 rx=10 ry=10 width=28 x=178 y=198></rect><text x=192 y=213>\</text></g><path d="M206 209h10"></path><path d="M216 209h10"></path><g><path d="M226 209h0"></path><path d="M302 209h0"></path><rect height=22 width=76 x=226 y=198></rect><text x=264 y=213>newline</text></g><path d="M302 209h10"></path></g><path d="M322 209a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M342 149h10"></path><path d="M138 149a10 10 0 0 0 -10 10v59a10 10 0 0 0 10 10"></path><g><path d="M138 228h204"></path></g><path d="M342 228a10 10 0 0 0 10 -10v-59a10 10 0 0 0 -10 -10"></path></g><path d="M352 149h20"></path></g><path d="M372 149h10"></path><g><path d="M382 149h0"></path><path d="M410 149h0"></path><rect height=22 rx=10 ry=10 width=28 x=382 y=138></rect><text x=396 y=153>'</text></g><path d="M410 149h10"></path></g><path d="M420 149a10 10 0 0 0 10 -10v-88a10 10 0 0 1 10 -10"></path></g><path d="M 440 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.227 2.228 - <dt id="<a data-link-type='token'>〈url〉</a>-diagram"><a data-link-type=token href=#tokendef-url>〈url〉</a></dt> 2.229 - <dd><svg class=railroad-diagram height=102 width=829><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 41h10"></path><g><path d="M50 41h0"></path><path d="M174 41h0"></path><rect height=22 width=124 x=50 y=30></rect><text x=112 y=45><a data-link-type=token>〈ident "url"〉</a></text></g><path d="M174 41h10"></path><path d="M184 41h10"></path><g><path d="M194 41h0"></path><path d="M222 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=194 y=30></rect><text x=208 y=45>(</text></g><path d="M222 41h10"></path><g><path d="M232 41h0"></path><path d="M388 41h0"></path><path d="M232 41h20"></path><g><path d="M252 41h116"></path></g><path d="M368 41h20"></path><path d="M232 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M252 61h0"></path><path d="M368 61h0"></path><rect height=22 width=116 x=252 y=50></rect><text x=310 y=65><a data-link-type=token>〈whitespace〉</a></text></g><path d="M368 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M388 41h0"></path><path d="M740 41h0"></path><path d="M388 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M408 21h312"></path></g><path d="M720 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M388 41h20"></path><g><path d="M408 41h0"></path><path d="M720 41h0"></path><g><path d="M408 41h0"></path><path d="M564 41h0"></path><path d="M408 41h20"></path><g><path d="M428 41h0"></path><path d="M544 41h0"></path><rect height=22 width=116 x=428 y=30></rect><text x=486 y=45>url-unquoted</text></g><path d="M544 41h20"></path><path d="M408 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M428 71h24"></path><path d="M520 71h24"></path><rect height=22 width=68 x=452 y=60></rect><text x=486 y=75>STRING</text></g><path d="M544 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M564 41h0"></path><path d="M720 41h0"></path><path d="M564 41h20"></path><g><path d="M584 41h116"></path></g><path d="M700 41h20"></path><path d="M564 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M584 61h0"></path><path d="M700 61h0"></path><rect height=22 width=116 x=584 y=50></rect><text x=642 y=65><a data-link-type=token>〈whitespace〉</a></text></g><path d="M700 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M720 41h20"></path></g><path d="M740 41h10"></path><g><path d="M750 41h0"></path><path d="M778 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=750 y=30></rect><text x=764 y=45>)</text></g><path d="M778 41h10"></path><path d="M 788 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.230 + <dt id=〈url〉-diagram>〈url〉</dt> 2.231 + <dd><svg class=railroad-diagram height=102 width=829><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 41h10"></path><g><path d="M50 41h0"></path><path d="M174 41h0"></path><rect height=22 width=124 x=50 y=30></rect><text x=112 y=45>〈ident "url"〉</text></g><path d="M174 41h10"></path><path d="M184 41h10"></path><g><path d="M194 41h0"></path><path d="M222 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=194 y=30></rect><text x=208 y=45>(</text></g><path d="M222 41h10"></path><g><path d="M232 41h0"></path><path d="M388 41h0"></path><path d="M232 41h20"></path><g><path d="M252 41h116"></path></g><path d="M368 41h20"></path><path d="M232 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M252 61h0"></path><path d="M368 61h0"></path><rect height=22 width=116 x=252 y=50></rect><text x=310 y=65>〈whitespace〉</text></g><path d="M368 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M388 41h0"></path><path d="M740 41h0"></path><path d="M388 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M408 21h312"></path></g><path d="M720 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M388 41h20"></path><g><path d="M408 41h0"></path><path d="M720 41h0"></path><g><path d="M408 41h0"></path><path d="M564 41h0"></path><path d="M408 41h20"></path><g><path d="M428 41h0"></path><path d="M544 41h0"></path><rect height=22 width=116 x=428 y=30></rect><text x=486 y=45>url-unquoted</text></g><path d="M544 41h20"></path><path d="M408 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M428 71h24"></path><path d="M520 71h24"></path><rect height=22 width=68 x=452 y=60></rect><text x=486 y=75>STRING</text></g><path d="M544 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M564 41h0"></path><path d="M720 41h0"></path><path d="M564 41h20"></path><g><path d="M584 41h116"></path></g><path d="M700 41h20"></path><path d="M564 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M584 61h0"></path><path d="M700 61h0"></path><rect height=22 width=116 x=584 y=50></rect><text x=642 y=65>〈whitespace〉</text></g><path d="M700 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M720 41h20"></path></g><path d="M740 41h10"></path><g><path d="M750 41h0"></path><path d="M778 41h0"></path><rect height=22 rx=10 ry=10 width=28 x=750 y=30></rect><text x=764 y=45>)</text></g><path d="M778 41h10"></path><path d="M 788 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.232 2.233 <dt id=url-unquoted-diagram>url-unquoted</dt> 2.234 <dd><svg class=railroad-diagram height=100 width=509><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M458 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M448 31h0"></path><path d="M60 31h20"></path><g><path d="M80 31h0"></path><path d="M428 31h0"></path><rect height=22 width=348 x=80 y=20></rect><text x=254 y=35>not " ' ( ) \ whitespace or non-printable</text></g><path d="M428 31h20"></path><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M80 61h140"></path><path d="M288 61h140"></path><rect height=22 width=68 x=220 y=50></rect><text x=254 y=65>escape</text></g><path d="M428 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M448 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M60 80h388"></path></g><path d="M448 80a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M458 31h10"></path><path d="M 468 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.235 2.236 - <dt id="<a data-link-type='token'>〈number〉</a>-diagram"><a data-link-type=token href=#tokendef-number>〈number〉</a></dt> 2.237 + <dt id=〈number〉-diagram>〈number〉</dt> 2.238 <dd><svg class=railroad-diagram height=179 width=713><g transform="translate(.5 .5)"><path d="M 20 50 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 60h0"></path><path d="M108 60h0"></path><path d="M40 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M60 40h0"></path><path d="M88 40h0"></path><rect height=22 rx=10 ry=10 width=28 x=60 y=29></rect><text x=74 y=44>+</text></g><path d="M88 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M40 60h20"></path><g><path d="M60 60h28"></path></g><path d="M88 60h20"></path><path d="M40 60a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 80h0"></path><path d="M88 80h0"></path><rect height=22 rx=10 ry=10 width=28 x=60 y=69></rect><text x=74 y=84>-</text></g><path d="M88 80a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M108 60h0"></path><path d="M396 60h0"></path><path d="M108 60h20"></path><g><path d="M128 60h0"></path><path d="M376 60h0"></path><path d="M128 60h10"></path><g><path d="M138 60h0"></path><path d="M218 60h0"></path><path d="M138 60h10"></path><g><path d="M148 60h0"></path><path d="M208 60h0"></path><rect height=22 width=60 x=148 y=49></rect><text x=178 y=64>digit</text></g><path d="M208 60h10"></path><path d="M148 60a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M148 80h60"></path></g><path d="M208 80a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M218 60h10"></path><path d="M228 60h10"></path><g><path d="M238 60h0"></path><path d="M266 60h0"></path><rect height=22 rx=10 ry=10 width=28 x=238 y=49></rect><text x=252 y=64>.</text></g><path d="M266 60h10"></path><path d="M276 60h10"></path><g><path d="M286 60h0"></path><path d="M366 60h0"></path><path d="M286 60h10"></path><g><path d="M296 60h0"></path><path d="M356 60h0"></path><rect height=22 width=60 x=296 y=49></rect><text x=326 y=64>digit</text></g><path d="M356 60h10"></path><path d="M296 60a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M296 80h60"></path></g><path d="M356 80a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M366 60h10"></path></g><path d="M376 60h20"></path><path d="M108 60a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10"></path><g><path d="M128 99h84"></path><path d="M292 99h84"></path><path d="M212 99h10"></path><g><path d="M222 99h0"></path><path d="M282 99h0"></path><rect height=22 width=60 x=222 y=88></rect><text x=252 y=103>digit</text></g><path d="M282 99h10"></path><path d="M222 99a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M222 119h60"></path></g><path d="M282 119a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M376 99a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10"></path><path d="M108 60a10 10 0 0 1 10 10v58a10 10 0 0 0 10 10"></path><g><path d="M128 138h50"></path><path d="M326 138h50"></path><path d="M178 138h10"></path><g><path d="M188 138h0"></path><path d="M216 138h0"></path><rect height=22 rx=10 ry=10 width=28 x=188 y=127></rect><text x=202 y=142>.</text></g><path d="M216 138h10"></path><path d="M226 138h10"></path><g><path d="M236 138h0"></path><path d="M316 138h0"></path><path d="M236 138h10"></path><g><path d="M246 138h0"></path><path d="M306 138h0"></path><rect height=22 width=60 x=246 y=127></rect><text x=276 y=142>digit</text></g><path d="M306 138h10"></path><path d="M246 138a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M246 158h60"></path></g><path d="M306 158a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M316 138h10"></path></g><path d="M376 138a10 10 0 0 0 10 -10v-58a10 10 0 0 1 10 -10"></path></g><g><path d="M396 60h0"></path><path d="M672 60h0"></path><path d="M396 60h20"></path><g><path d="M416 60h236"></path></g><path d="M652 60h20"></path><path d="M396 60a10 10 0 0 1 10 10v28a10 10 0 0 0 10 10"></path><g><path d="M416 108h0"></path><path d="M652 108h0"></path><g><path d="M416 108h0"></path><path d="M484 108h0"></path><path d="M416 108h20"></path><g><path d="M436 108h0"></path><path d="M464 108h0"></path><rect height=22 rx=10 ry=10 width=28 x=436 y=97></rect><text x=450 y=112>e</text></g><path d="M464 108h20"></path><path d="M416 108a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M436 138h0"></path><path d="M464 138h0"></path><rect height=22 rx=10 ry=10 width=28 x=436 y=127></rect><text x=450 y=142>E</text></g><path d="M464 138a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M484 108h0"></path><path d="M552 108h0"></path><path d="M484 108a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M504 88h0"></path><path d="M532 88h0"></path><rect height=22 rx=10 ry=10 width=28 x=504 y=77></rect><text x=518 y=92>+</text></g><path d="M532 88a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M484 108h20"></path><g><path d="M504 108h28"></path></g><path d="M532 108h20"></path><path d="M484 108a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M504 128h0"></path><path d="M532 128h0"></path><rect height=22 rx=10 ry=10 width=28 x=504 y=117></rect><text x=518 y=132>-</text></g><path d="M532 128a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><path d="M552 108h10"></path><g><path d="M562 108h0"></path><path d="M642 108h0"></path><path d="M562 108h10"></path><g><path d="M572 108h0"></path><path d="M632 108h0"></path><rect height=22 width=60 x=572 y=97></rect><text x=602 y=112>digit</text></g><path d="M632 108h10"></path><path d="M572 108a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M572 128h60"></path></g><path d="M632 128a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M642 108h10"></path></g><path d="M652 108a10 10 0 0 0 10 -10v-28a10 10 0 0 1 10 -10"></path></g><path d="M 672 60 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.239 2.240 - <dt id="<a data-link-type='token'>〈dimension〉</a>-diagram"><a data-link-type=token href=#tokendef-dimension>〈dimension〉</a></dt> 2.241 - <dd><svg class=railroad-diagram height=62 width=281><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect height=22 width=84 x=50 y=20></rect><text x=92 y=35><a data-link-type=token>〈number〉</a></text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M230 31h0"></path><rect height=22 width=76 x=154 y=20></rect><text x=192 y=35><a data-link-type=token>〈ident〉</a></text></g><path d="M230 31h10"></path><path d="M 240 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.242 - 2.243 - <dt id="<a data-link-type='token'>〈percentage〉</a>-diagram"><a data-link-type=token href=#tokendef-percentage>〈percentage〉</a></dt> 2.244 - <dd><svg class=railroad-diagram height=62 width=233><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect height=22 width=84 x=50 y=20></rect><text x=92 y=35><a data-link-type=token>〈number〉</a></text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M182 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=154 y=20></rect><text x=168 y=35>%</text></g><path d="M182 31h10"></path><path d="M 192 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.245 - 2.246 - <dt id="<a data-link-type='token'>〈unicode-range〉</a>-diagram"><a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a></dt> 2.247 + <dt id=〈dimension〉-diagram>〈dimension〉</dt> 2.248 + <dd><svg class=railroad-diagram height=62 width=281><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect height=22 width=84 x=50 y=20></rect><text x=92 y=35>〈number〉</text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M230 31h0"></path><rect height=22 width=76 x=154 y=20></rect><text x=192 y=35>〈ident〉</text></g><path d="M230 31h10"></path><path d="M 240 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.249 + 2.250 + <dt id=〈percentage〉-diagram>〈percentage〉</dt> 2.251 + <dd><svg class=railroad-diagram height=62 width=233><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect height=22 width=84 x=50 y=20></rect><text x=92 y=35>〈number〉</text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M182 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=154 y=20></rect><text x=168 y=35>%</text></g><path d="M182 31h10"></path><path d="M 192 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.252 + 2.253 + <dt id=〈unicode-range〉-diagram>〈unicode-range〉</dt> 2.254 <dd><svg class=railroad-diagram height=222 width=600><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M108 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h0"></path><path d="M88 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=60 y=20></rect><text x=74 y=35>U</text></g><path d="M88 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M88 61h0"></path><rect height=22 rx=10 ry=10 width=28 x=60 y=50></rect><text x=74 y=65>u</text></g><path d="M88 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M108 31h10"></path><g><path d="M118 31h0"></path><path d="M146 31h0"></path><rect height=22 rx=10 ry=10 width=28 x=118 y=20></rect><text x=132 y=35>+</text></g><path d="M146 31h10"></path><g><path d="M156 31h0"></path><path d="M559 31h0"></path><path d="M156 31h20"></path><g><path d="M176 31h115.5"></path><path d="M423.5 31h115.5"></path><path d="M291.5 31h10"></path><g><path d="M301.5 31h0"></path><path d="M413.5 31h0"></path><path d="M301.5 31h10"></path><g><path d="M311.5 31h0"></path><path d="M403.5 31h0"></path><rect height=22 width=92 x=311.5 y=20></rect><text x=357.5 y=35>hex digit</text></g><path d="M403.5 31h10"></path><path d="M311.5 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M311.5 61h9.5"></path><path d="M394 61h9.5"></path><text class=comment x=357.5 y=66>1-6 times</text></g><path d="M403.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M413.5 31h10"></path></g><path d="M539 31h20"></path><path d="M156 31a10 10 0 0 1 10 10v50a10 10 0 0 0 10 10"></path><g><path d="M176 101h0"></path><path d="M539 101h0"></path><g><path d="M176 101h0"></path><path d="M328 101h0"></path><path d="M176 101a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M196 81h112"></path></g><path d="M308 81a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M176 101h20"></path><g><path d="M196 101h0"></path><path d="M308 101h0"></path><path d="M196 101h10"></path><g><path d="M206 101h0"></path><path d="M298 101h0"></path><rect height=22 width=92 x=206 y=90></rect><text x=252 y=105>hex digit</text></g><path d="M298 101h10"></path><path d="M206 101a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M206 131h9.5"></path><path d="M288.5 131h9.5"></path><text class=comment x=252 y=136>1-5 times</text></g><path d="M298 131a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M308 101h20"></path></g><path d="M328 101h10"></path><g><path d="M338 101h0"></path><path d="M529 101h0"></path><path d="M338 101h10"></path><g><path d="M348 101h71.5"></path><path d="M447.5 101h71.5"></path><rect height=22 rx=10 ry=10 width=28 x=419.5 y=90></rect><text x=433.5 y=105>?</text></g><path d="M519 101h10"></path><path d="M348 101a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M348 131h0"></path><path d="M519 131h0"></path><text class=comment x=433.5 y=136>1 to (6 - digits) times</text></g><path d="M519 131a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M529 101h10"></path></g><path d="M539 101a10 10 0 0 0 10 -10v-50a10 10 0 0 1 10 -10"></path><path d="M156 31a10 10 0 0 1 10 10v110a10 10 0 0 0 10 10"></path><g><path d="M176 161h25.5"></path><path d="M513.5 161h25.5"></path><path d="M201.5 161h10"></path><g><path d="M211.5 161h0"></path><path d="M323.5 161h0"></path><path d="M211.5 161h10"></path><g><path d="M221.5 161h0"></path><path d="M313.5 161h0"></path><rect height=22 width=92 x=221.5 y=150></rect><text x=267.5 y=165>hex digit</text></g><path d="M313.5 161h10"></path><path d="M221.5 161a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M221.5 191h9.5"></path><path d="M304 191h9.5"></path><text class=comment x=267.5 y=196>1-6 times</text></g><path d="M313.5 191a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M323.5 161h10"></path><path d="M333.5 161h10"></path><g><path d="M343.5 161h0"></path><path d="M371.5 161h0"></path><rect height=22 rx=10 ry=10 width=28 x=343.5 y=150></rect><text x=357.5 y=165>-</text></g><path d="M371.5 161h10"></path><path d="M381.5 161h10"></path><g><path d="M391.5 161h0"></path><path d="M503.5 161h0"></path><path d="M391.5 161h10"></path><g><path d="M401.5 161h0"></path><path d="M493.5 161h0"></path><rect height=22 width=92 x=401.5 y=150></rect><text x=447.5 y=165>hex digit</text></g><path d="M493.5 161h10"></path><path d="M401.5 161a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M401.5 191h9.5"></path><path d="M484 191h9.5"></path><text class=comment x=447.5 y=196>1-6 times</text></g><path d="M493.5 191a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M503.5 161h10"></path></g><path d="M539 161a10 10 0 0 0 10 -10v-110a10 10 0 0 1 10 -10"></path></g><path d="M 559 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.255 2.256 - <dt id="<a data-link-type='token'>〈include-match〉</a>-diagram"><a data-link-type=token href=#tokendef-include-match>〈include-match〉</a></dt> 2.257 + <dt id=〈include-match〉-diagram>〈include-match〉</dt> 2.258 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>~=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.259 2.260 - <dt id="<a data-link-type='token'>〈dash-match〉</a>-diagram"><a data-link-type=token href=#tokendef-dash-match>〈dash-match〉</a></dt> 2.261 + <dt id=〈dash-match〉-diagram>〈dash-match〉</dt> 2.262 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>|=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.263 2.264 - <dt id="<a data-link-type='token'>〈prefix-match〉</a>-diagram"><a data-link-type=token href=#tokendef-prefix-match>〈prefix-match〉</a></dt> 2.265 + <dt id=〈prefix-match〉-diagram>〈prefix-match〉</dt> 2.266 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>^=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.267 2.268 - <dt id="<a data-link-type='token'>〈suffix-match〉</a>-diagram"><a data-link-type=token href=#tokendef-suffix-match>〈suffix-match〉</a></dt> 2.269 + <dt id=〈suffix-match〉-diagram>〈suffix-match〉</dt> 2.270 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>$=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.271 2.272 - <dt id="<a data-link-type='token'>〈substring-match〉</a>-diagram"><a data-link-type=token href=#tokendef-substring-match>〈substring-match〉</a></dt> 2.273 + <dt id=〈substring-match〉-diagram>〈substring-match〉</dt> 2.274 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>*=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.275 2.276 - <dt id="<a data-link-type='token'>〈column〉</a>-diagram"><a data-link-type=token href=#tokendef-column>〈column〉</a></dt> 2.277 + <dt id=〈column〉-diagram>〈column〉</dt> 2.278 <dd><svg class=railroad-diagram height=62 width=137><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect height=22 rx=10 ry=10 width=36 x=50 y=20></rect><text x=68 y=35>||</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.279 2.280 - <dt id="<a data-link-type='token'>〈CDO〉</a>-diagram"><a data-link-type=token href=#tokendef-cdo>〈CDO〉</a></dt> 2.281 + <dt id=〈cdo〉-diagram>〈CDO〉</dt> 2.282 <dd><svg class=railroad-diagram height=62 width=153><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M102 31h0"></path><rect height=22 rx=10 ry=10 width=52 x=50 y=20></rect><text x=76 y=35><!--</text></g><path d="M102 31h10"></path><path d="M 112 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.283 2.284 - <dt id="<a data-link-type='token'>〈CDC〉</a>-diagram"><a data-link-type=token href=#tokendef-cdc>〈CDC〉</a></dt> 2.285 + <dt id=〈cdc〉-diagram>〈CDC〉</dt> 2.286 <dd><svg class=railroad-diagram height=62 width=145><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M94 31h0"></path><rect height=22 rx=10 ry=10 width=44 x=50 y=20></rect><text x=72 y=35>--></text></g><path d="M94 31h10"></path><path d="M 104 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 2.287 2.288 </dl> 2.289 2.290 + 2.291 + 2.292 <h3 data-level=4.2 id=definitions0><span class=secno>4.2 </span><span class=content> 2.293 Definitions</span><a class=section-link href=#definitions0>§</a></h3> 2.294 2.295 <p> This section defines several terms used during the tokenization phase. 2.296 2.297 <dl> 2.298 - <dt><dfn data-dfn-type=dfn id=next-input-character>next input character</dfn> 2.299 + <dt><dfn data-dfn-type=dfn id=code-point>code point</dfn> 2.300 <dd> 2.301 - The first character in the input stream that has not yet been consumed. 2.302 - 2.303 - <dt><dfn data-dfn-type=dfn id=current-input-character>current input character</dfn> 2.304 + A <a href=http://unicode.org/glossary/#code_point>Unicode code point</a>. 2.305 + Any value in the Unicode codespace; that is, the range of integers from 0 to (hexadecimal) 10FFFF. 2.306 + 2.307 + <dt><dfn data-dfn-type=dfn id=next-input-code-point>next input code point</dfn> 2.308 <dd> 2.309 - The last character to have been consumed. 2.310 - 2.311 - <dt><dfn data-dfn-type=dfn id=reconsume-the-current-input-character>reconsume the current input character</dfn> 2.312 + The first <a href=#code-point>code point</a> in the input stream that has not yet been consumed. 2.313 + 2.314 + <dt><dfn data-dfn-type=dfn id=current-input-code-point>current input code point</dfn> 2.315 <dd> 2.316 - Push the <a href=#current-input-character>current input character</a> back onto the front of the input stream, 2.317 - so that the next time you are instructed to consume the next input character, 2.318 - it will instead reconsume the <a href=#current-input-character>current input character</a>. 2.319 - 2.320 - <dt><dfn data-dfn-type=dfn id=eof-character>EOF character</dfn> 2.321 + The last <a href=#code-point>code point</a> to have been consumed. 2.322 + 2.323 + <dt><dfn data-dfn-type=dfn id=reconsume-the-current-input-code-point>reconsume the current input code point</dfn> 2.324 <dd> 2.325 - A conceptual character representing the end of the input stream. 2.326 + Push the <a href=#current-input-code-point>current input code point</a> back onto the front of the input stream, 2.327 + so that the next time you are instructed to consume the <a href=#next-input-code-point>next input code point</a>, 2.328 + it will instead reconsume the <a href=#current-input-code-point>current input code point</a>. 2.329 + 2.330 + <dt><dfn data-dfn-type=dfn id=eof-code-point>EOF code point</dfn> 2.331 + <dd> 2.332 + A conceptual <a href=#code-point>code point</a> representing the end of the input stream. 2.333 Whenever the input stream is empty, 2.334 - the <a href=#next-input-character>next input character</a> is always an EOF character. 2.335 + the <a href=#next-input-code-point>next input code point</a> is always an EOF code point. 2.336 2.337 <dt><dfn data-dfn-type=dfn id=digit>digit</dfn> 2.338 <dd> 2.339 - A character between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 2.340 + A <a href=#code-point>code point</a> between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 2.341 2.342 <dt><dfn data-dfn-type=dfn id=hex-digit>hex digit</dfn> 2.343 <dd> 2.344 A <a href=#digit>digit</a>, 2.345 - or a character between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), 2.346 - or a character between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). 2.347 + or a <a href=#code-point>code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), 2.348 + or a <a href=#code-point>code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). 2.349 2.350 <dt><dfn data-dfn-type=dfn id=uppercase-letter>uppercase letter</dfn> 2.351 <dd> 2.352 - A character between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 2.353 + A <a href=#code-point>code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 2.354 2.355 <dt><dfn data-dfn-type=dfn id=lowercase-letter>lowercase letter</dfn> 2.356 <dd> 2.357 - A character between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 2.358 + A <a href=#code-point>code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 2.359 2.360 <dt><dfn data-dfn-type=dfn id=letter>letter</dfn> 2.361 <dd> 2.362 An <a href=#uppercase-letter>uppercase letter</a> 2.363 or a <a href=#lowercase-letter>lowercase letter</a>. 2.364 2.365 - <dt><dfn data-dfn-type=dfn id=non-ascii-character>non-ASCII character</dfn> 2.366 + <dt><dfn data-dfn-type=dfn id=non-ascii-code-point>non-ASCII code point</dfn> 2.367 <dd> 2.368 - A character with a codepoint equal to or greater than U+0080 <control>. 2.369 - 2.370 - <dt><dfn data-dfn-type=dfn id=name-start-character>name-start character</dfn> 2.371 + A <a href=#code-point>code point</a> with a value equal to or greater than U+0080 <control>. 2.372 + 2.373 + <dt><dfn data-dfn-type=dfn id=name-start-code-point>name-start code point</dfn> 2.374 <dd> 2.375 A <a href=#letter>letter</a>, 2.376 - a <a href=#non-ascii-character>non-ASCII character</a>, 2.377 + a <a href=#non-ascii-code-point>non-ASCII code point</a>, 2.378 or U+005F LOW LINE (_). 2.379 2.380 - <dt><dfn data-dfn-type=dfn id=name-character>name character</dfn> 2.381 + <dt><dfn data-dfn-type=dfn id=name-code-point>name code point</dfn> 2.382 <dd> 2.383 - A <a href=#name-start-character>name-start character</a>, 2.384 + A <a href=#name-start-code-point>name-start code point</a>, 2.385 A <a href=#digit>digit</a>, 2.386 or U+002D HYPHEN-MINUS (-). 2.387 2.388 - <dt><dfn data-dfn-type=dfn id=non-printable-character>non-printable character</dfn> 2.389 + <dt><dfn data-dfn-type=dfn id=non-printable-code-point>non-printable code point</dfn> 2.390 <dd> 2.391 - A character between U+0000 NULL and U+0008 BACKSPACE, 2.392 + A <a href=#code-point>code point</a> between U+0000 NULL and U+0008 BACKSPACE, 2.393 or U+000B LINE TABULATION, 2.394 - or a character between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, 2.395 + or a <a href=#code-point>code point</a> between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, 2.396 or U+007F DELETE. 2.397 2.398 <dt><dfn data-dfn-type=dfn id=newline>newline</dfn> 2.399 @@ -719,23 +727,23 @@ 2.400 <dt><dfn data-dfn-type=dfn id=whitespace>whitespace</dfn> 2.401 <dd>A <a href=#newline>newline</a>, U+0009 CHARACTER TABULATION, or U+0020 SPACE. 2.402 2.403 - <dt><dfn data-dfn-type=dfn id=maximum-allowed-codepoint>maximum allowed codepoint</dfn> 2.404 - <dd>The greatest codepoint defined by Unicode. This is currently U+10FFFF. 2.405 + <dt><dfn data-dfn-type=dfn id=maximum-allowed-code-point>maximum allowed code point</dfn> 2.406 + <dd>The greatest <a href=#code-point>code point</a> defined by Unicode. This is currently U+10FFFF. 2.407 2.408 </dl> 2.409 2.410 <h3 data-level=4.3 id=tokenizer-algorithms><span class=secno>4.3 </span><span class=content> 2.411 Tokenizer Algorithms</span><a class=section-link href=#tokenizer-algorithms>§</a></h3> 2.412 2.413 -<p> The algorithms defined in this section transform a stream of characters into a stream of tokens. 2.414 +<p> The algorithms defined in this section transform a stream of <a href=#code-point>code points</a> into a stream of tokens. 2.415 2.416 <h4 data-level=4.3.1 id=consume-a-token><span class=secno>4.3.1 </span><span class=content> 2.417 <dfn data-dfn-type=dfn id=consume-a-token0>Consume a token</dfn></span><a class=section-link href=#consume-a-token>§</a></h4> 2.418 2.419 -<p> This section describes how to <a href=#consume-a-token0>consume a token</a> from a stream of characters. 2.420 +<p> This section describes how to <a href=#consume-a-token0>consume a token</a> from a stream of <a href=#code-point>code points</a>. 2.421 It will return a single token of any type. 2.422 2.423 -<p> Consume the <a href=#next-input-character>next input character</a>. 2.424 +<p> Consume the <a href=#next-input-code-point>next input code point</a>. 2.425 2.426 <dl> 2.427 <dt><a href=#whitespace>whitespace</a> 2.428 @@ -745,14 +753,14 @@ 2.429 2.430 <dt>U+0022 QUOTATION MARK (") 2.431 <dd> 2.432 - <a href=#consume-a-string-token0>Consume a string token</a> with the ending character U+0022 QUOTATION MARK (") 2.433 + <a href=#consume-a-string-token0>Consume a string token</a> with the ending <a href=#code-point>code point</a> U+0022 QUOTATION MARK (") 2.434 and return it. 2.435 2.436 <dt>U+0023 NUMBER SIGN (#) 2.437 <dd> 2.438 - If the <a href=#next-input-character>next input character</a> is a <a href=#name-character>name character</a> 2.439 - or the <a href=#next-input-character title="next input character">next two input characters</a> 2.440 - <a href=#check-if-two-characters-are-a-valid-escape0>are a valid escape</a>, 2.441 + If the <a href=#next-input-code-point>next input code point</a> is a <a href=#name-code-point>name code point</a> 2.442 + or the <a href=#next-input-code-point title="next input code point">next two input code points</a> 2.443 + <a href=#check-if-two-code-points-are-a-valid-escape0>are a valid escape</a>, 2.444 then: 2.445 2.446 <ol> 2.447 @@ -760,7 +768,7 @@ 2.448 Create a <a data-link-type=token href=#tokendef-hash>〈hash〉</a>. 2.449 2.450 <li> 2.451 - If the <a href=#next-input-character title="next input character">next 3 input characters</a> <a href=#check-if-three-characters-would-start-an-identifier0>would start an identifier</a>, 2.452 + If the <a href=#next-input-code-point title="next input code point">next 3 input code points</a> <a href=#check-if-three-code-points-would-start-an-identifier0>would start an identifier</a>, 2.453 set the <a data-link-type=token href=#tokendef-hash>〈hash〉</a>’s type flag to "id". 2.454 2.455 <li> 2.456 @@ -773,22 +781,22 @@ 2.457 2.458 <p> Otherwise, 2.459 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.460 - with its value set to the <a href=#current-input-character>current input character</a>. 2.461 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.462 2.463 <dt>U+0024 DOLLAR SIGN ($) 2.464 <dd> 2.465 - If the <a href=#next-input-character>next input character</a> is 2.466 + If the <a href=#next-input-code-point>next input code point</a> is 2.467 U+003D EQUALS SIGN (=), 2.468 consume it 2.469 and return a <a data-link-type=token href=#tokendef-suffix-match>〈suffix-match〉</a>. 2.470 2.471 <p> Otherwise, 2.472 emit a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.473 - with its value set to the <a href=#current-input-character>current input character</a>. 2.474 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.475 2.476 <dt>U+0027 APOSTROPHE (') 2.477 <dd> 2.478 - <a href=#consume-a-string-token0>Consume a string token</a> with the ending character U+0027 APOSTROPHE (') 2.479 + <a href=#consume-a-string-token0>Consume a string token</a> with the ending <a href=#code-point>code point</a> U+0027 APOSTROPHE (') 2.480 and return it. 2.481 2.482 <dt>U+0028 LEFT PARENTHESIS (() 2.483 @@ -801,25 +809,25 @@ 2.484 2.485 <dt>U+002A ASTERISK (*) 2.486 <dd> 2.487 - If the <a href=#next-input-character>next input character</a> is 2.488 + If the <a href=#next-input-code-point>next input code point</a> is 2.489 U+003D EQUALS SIGN (=), 2.490 consume it 2.491 and return a <a data-link-type=token href=#tokendef-substring-match>〈substring-match〉</a>. 2.492 2.493 <p> Otherwise, 2.494 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.495 - with its value set to the <a href=#current-input-character>current input character</a>. 2.496 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.497 2.498 <dt>U+002B PLUS SIGN (+) 2.499 <dd> 2.500 - If the input stream <a href=#check-if-three-characters-would-start-a-number0>starts with a number</a>, 2.501 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.502 + If the input stream <a href=#check-if-three-code-points-would-start-a-number0>starts with a number</a>, 2.503 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.504 <a href=#consume-a-numeric-token0>consume a numeric token</a> 2.505 and return it. 2.506 2.507 <p> Otherwise, 2.508 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.509 - with its value set to the <a href=#current-input-character>current input character</a>. 2.510 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.511 2.512 <dt>U+002C COMMA (,) 2.513 <dd> 2.514 @@ -827,19 +835,19 @@ 2.515 2.516 <dt>U+002D HYPHEN-MINUS (-) 2.517 <dd> 2.518 - If the input stream <a href=#check-if-three-characters-would-start-a-number0>starts with a number</a>, 2.519 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.520 + If the input stream <a href=#check-if-three-code-points-would-start-a-number0>starts with a number</a>, 2.521 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.522 <a href=#consume-a-numeric-token0>consume a numeric token</a>, 2.523 and return it. 2.524 2.525 <p> Otherwise, 2.526 - if the input stream <a href=#check-if-three-characters-would-start-an-identifier0>starts with an identifier</a>, 2.527 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.528 + if the input stream <a href=#check-if-three-code-points-would-start-an-identifier0>starts with an identifier</a>, 2.529 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.530 <a href=#consume-an-ident-like-token0>consume an ident-like token</a>, 2.531 and return it. 2.532 2.533 <p> Otherwise, 2.534 - if the <a href=#next-input-character title="next input character">next 2 input characters</a> are 2.535 + if the <a href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.536 U+002D HYPHEN-MINUS 2.537 U+003E GREATER-THAN SIGN 2.538 (->), 2.539 @@ -848,32 +856,32 @@ 2.540 2.541 <p> Otherwise, 2.542 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.543 - with its value set to the <a href=#current-input-character>current input character</a>. 2.544 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.545 2.546 <dt>U+002E FULL STOP (.) 2.547 <dd> 2.548 - If the input stream <a href=#check-if-three-characters-would-start-a-number0>starts with a number</a>, 2.549 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.550 + If the input stream <a href=#check-if-three-code-points-would-start-a-number0>starts with a number</a>, 2.551 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.552 <a href=#consume-a-numeric-token0>consume a numeric token</a>, 2.553 and return it. 2.554 2.555 <p> Otherwise, 2.556 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.557 - with its value set to the <a href=#current-input-character>current input character</a>. 2.558 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.559 2.560 <dt>U+002F SOLIDUS (/) 2.561 <dd> 2.562 - If the <a href=#next-input-character>next input character</a> is U+002A ASTERISK (*), 2.563 + If the <a href=#next-input-code-point>next input code point</a> is U+002A ASTERISK (*), 2.564 consume it 2.565 - and all following characters up to and including 2.566 + and all following <a href=#code-point>code points</a> up to and including 2.567 the first U+002A ASTERISK (*) followed by a U+002F SOLIDUS (/), 2.568 - or up to an EOF character. 2.569 + or up to an EOF code point. 2.570 Then <a href=#consume-a-token0>consume a token</a> 2.571 and return it. 2.572 2.573 <p> Otherwise, 2.574 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.575 - with its value set to the <a href=#current-input-character>current input character</a>. 2.576 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.577 2.578 <dt>U+003A COLON (:) 2.579 <dd> 2.580 @@ -885,7 +893,7 @@ 2.581 2.582 <dt>U+003C LESS-THAN SIGN (<) 2.583 <dd> 2.584 - If the <a href=#next-input-character title="next input character">next 3 input characters</a> are 2.585 + If the <a href=#next-input-code-point title="next input code point">next 3 input code points</a> are 2.586 U+0021 EXCLAMATION MARK 2.587 U+002D HYPHEN-MINUS 2.588 U+002D HYPHEN-MINUS 2.589 @@ -895,19 +903,19 @@ 2.590 2.591 <p> Otherwise, 2.592 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.593 - with its value set to the <a href=#current-input-character>current input character</a>. 2.594 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.595 2.596 <dt>U+0040 COMMERCIAL AT (@) 2.597 <dd> 2.598 - If the <a href=#next-input-character title="next input character">next 3 input characters</a> 2.599 - <a href=#check-if-three-characters-would-start-an-identifier0>would start an identifier</a>, 2.600 + If the <a href=#next-input-code-point title="next input code point">next 3 input code points</a> 2.601 + <a href=#check-if-three-code-points-would-start-an-identifier0>would start an identifier</a>, 2.602 <a href=#consume-a-name0>consume a name</a>, 2.603 create an <a data-link-type=token href=#tokendef-at-keyword>〈at-keyword〉</a> with its value set to the returned value, 2.604 and return it. 2.605 2.606 <p> Otherwise, 2.607 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.608 - with its value set to the <a href=#current-input-character>current input character</a>. 2.609 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.610 2.611 <dt>U+005B LEFT SQUARE BRACKET ([) 2.612 <dd> 2.613 @@ -915,15 +923,15 @@ 2.614 2.615 <dt>U+005C REVERSE SOLIDUS (\) 2.616 <dd> 2.617 - If the input stream <a href=#check-if-two-characters-are-a-valid-escape0>starts with a valid escape</a>, 2.618 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.619 + If the input stream <a href=#check-if-two-code-points-are-a-valid-escape0>starts with a valid escape</a>, 2.620 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.621 <a href=#consume-an-ident-like-token0>consume an ident-like token</a>, 2.622 and return it. 2.623 2.624 <p> Otherwise, 2.625 this is a <a href=#parse-errors>parse error</a>. 2.626 Return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.627 - with its value set to the <a href=#current-input-character>current input character</a>. 2.628 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.629 2.630 <dt>U+005D RIGHT SQUARE BRACKET (]) 2.631 <dd> 2.632 @@ -931,14 +939,14 @@ 2.633 2.634 <dt>U+005E CIRCUMFLEX ACCENT (^) 2.635 <dd> 2.636 - If the <a href=#next-input-character>next input character</a> is 2.637 + If the <a href=#next-input-code-point>next input code point</a> is 2.638 U+003D EQUALS SIGN (=), 2.639 consume it 2.640 and return a <a data-link-type=token href=#tokendef-prefix-match>〈prefix-match〉</a>. 2.641 2.642 <p> Otherwise, 2.643 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.644 - with its value set to the <a href=#current-input-character>current input character</a>. 2.645 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.646 2.647 <dt>U+007B LEFT CURLY BRACKET ({) 2.648 <dd> 2.649 @@ -956,53 +964,53 @@ 2.650 <dt>U+0055 LATIN CAPITAL LETTER U (U) 2.651 <dt>U+0075 LATIN SMALL LETTER U (u) 2.652 <dd> 2.653 - If the <a href=#next-input-character title="next input character">next 2 input character</a> are 2.654 + If the <a href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.655 U+002B PLUS SIGN (+) 2.656 followed by a <a href=#hex-digit>hex digit</a> 2.657 or U+003F QUESTION MARK (?), 2.658 - consume the <a href=#next-input-character>next input character</a>. 2.659 + consume the <a href=#next-input-code-point>next input code point</a>. 2.660 <span class=note>Note: don't consume both of them.</span> 2.661 <a href=#consume-a-unicode-range-token0>Consume a unicode-range token</a> 2.662 and return it. 2.663 2.664 <p> Otherwise, 2.665 - <a href=#reconsume-the-current-input-character>reconsume the current input character</a>, 2.666 + <a href=#reconsume-the-current-input-code-point>reconsume the current input code point</a>, 2.667 <a href=#consume-an-ident-like-token0>consume an ident-like token</a>, 2.668 and return it. 2.669 2.670 - <dt><a href=#name-start-character>name-start character</a> 2.671 + <dt><a href=#name-start-code-point>name-start code point</a> 2.672 <dd> 2.673 - <a href=#reconsume-the-current-input-character>Reconsume the current input character</a>, 2.674 + <a href=#reconsume-the-current-input-code-point>Reconsume the current input code point</a>, 2.675 <a href=#consume-an-ident-like-token0>consume an ident-like token</a>, 2.676 and return it. 2.677 2.678 <dt>U+007C VERTICAL LINE (|) 2.679 <dd> 2.680 - If the <a href=#next-input-character>next input character</a> is 2.681 + If the <a href=#next-input-code-point>next input code point</a> is 2.682 U+003D EQUALS SIGN (=), 2.683 consume it 2.684 and return a <a data-link-type=token href=#tokendef-dash-match>〈dash-match〉</a>. 2.685 2.686 <p> Otherwise, 2.687 - if the <a href=#next-input-character>next input character</a> is 2.688 + if the <a href=#next-input-code-point>next input code point</a> is 2.689 U+0073 VERTICAL LINE (|), 2.690 consume it 2.691 and return a <a data-link-type=token href=#tokendef-column>〈column〉</a>. 2.692 2.693 <p> Otherwise, 2.694 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.695 - with its value set to the <a href=#current-input-character>current input character</a>. 2.696 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.697 2.698 <dt>U+007E TILDE (~) 2.699 <dd> 2.700 - If the <a href=#next-input-character>next input character</a> is 2.701 + If the <a href=#next-input-code-point>next input code point</a> is 2.702 U+003D EQUALS SIGN (=), 2.703 consume it 2.704 and return an <a data-link-type=token href=#tokendef-include-match>〈include-match〉</a>. 2.705 2.706 <p> Otherwise, 2.707 return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.708 - with its value set to the <a href=#current-input-character>current input character</a>. 2.709 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.710 2.711 <dt>EOF 2.712 <dd> 2.713 @@ -1011,7 +1019,7 @@ 2.714 <dt>anything else 2.715 <dd> 2.716 Return a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> 2.717 - with its value set to the <a href=#current-input-character>current input character</a>. 2.718 + with its value set to the <a href=#current-input-code-point>current input code point</a>. 2.719 </dl> 2.720 2.721 2.722 @@ -1020,12 +1028,12 @@ 2.723 <h4 data-level=4.3.2 id=consume-a-numeric-token><span class=secno>4.3.2 </span><span class=content> 2.724 <dfn data-dfn-type=dfn id=consume-a-numeric-token0>Consume a numeric token</dfn></span><a class=section-link href=#consume-a-numeric-token>§</a></h4> 2.725 2.726 -<p> This section describes how to <a href=#consume-a-numeric-token0>consume a numeric token</a> from a stream of characters. 2.727 +<p> This section describes how to <a href=#consume-a-numeric-token0>consume a numeric token</a> from a stream of <a href=#code-point>code points</a>. 2.728 It returns either a <a data-link-type=token href=#tokendef-number>〈number〉</a>, <a data-link-type=token href=#tokendef-percentage>〈percentage〉</a>, or <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a>. 2.729 2.730 <p> <a href=#consume-a-number0>Consume a number</a>. 2.731 2.732 -<p> If the <a href=#next-input-character title="next input character">next 3 input characters</a> <a href=#check-if-three-characters-would-start-an-identifier0>would start an identifier</a>, 2.733 +<p> If the <a href=#next-input-code-point title="next input code point">next 3 input code points</a> <a href=#check-if-three-code-points-would-start-an-identifier0>would start an identifier</a>, 2.734 then: 2.735 2.736 <ol> 2.737 @@ -1039,7 +1047,7 @@ 2.738 </ol> 2.739 2.740 <p> Otherwise, 2.741 - if the <a href=#next-input-character>next input character</a> is U+0025 PERCENTAGE SIGN (%), 2.742 + if the <a href=#next-input-code-point>next input code point</a> is U+0025 PERCENTAGE SIGN (%), 2.743 consume it. 2.744 Create a <a data-link-type=token href=#tokendef-percentage>〈percentage〉</a> with the same representation and value as the returned number, 2.745 and return it. 2.746 @@ -1052,19 +1060,19 @@ 2.747 <h4 data-level=4.3.3 id=consume-an-ident-like-token><span class=secno>4.3.3 </span><span class=content> 2.748 <dfn data-dfn-type=dfn id=consume-an-ident-like-token0>Consume an ident-like token</dfn></span><a class=section-link href=#consume-an-ident-like-token>§</a></h4> 2.749 2.750 -<p> This section describes how to <a href=#consume-an-ident-like-token0>consume an ident-like token</a> from a stream of characters. 2.751 +<p> This section describes how to <a href=#consume-an-ident-like-token0>consume an ident-like token</a> from a stream of <a href=#code-point>code points</a>. 2.752 It returns an <a data-link-type=token href=#tokendef-ident>〈ident〉</a>, <a data-link-type=token href=#tokendef-function>〈function〉</a>, <a data-link-type=token href=#tokendef-url>〈url〉</a>, or <a data-link-type=token href=#tokendef-bad-url>〈bad-url〉</a>. 2.753 2.754 <p> <a href=#consume-a-name0>Consume a name</a>. 2.755 2.756 <p> If the returned string's value is an <a href=#ascii-case-insensitive>ASCII case-insensitive</a> match for "url", 2.757 - and the <a href=#next-input-character>next input character</a> is U+0028 LEFT PARENTHESIS ((), 2.758 + and the <a href=#next-input-code-point>next input code point</a> is U+0028 LEFT PARENTHESIS ((), 2.759 consume it. 2.760 <a href=#consume-a-url-token0>Consume a url token</a>, 2.761 and return it. 2.762 2.763 <p> Otherwise, 2.764 - if the <a href=#next-input-character>next input character</a> is U+0028 LEFT PARENTHESIS ((), 2.765 + if the <a href=#next-input-code-point>next input code point</a> is U+0028 LEFT PARENTHESIS ((), 2.766 consume it. 2.767 Create a <a data-link-type=token href=#tokendef-function>〈function〉</a> token 2.768 with its value set to the returned string 2.769 @@ -1079,18 +1087,18 @@ 2.770 <h4 data-level=4.3.4 id=consume-a-string-token><span class=secno>4.3.4 </span><span class=content> 2.771 <dfn data-dfn-type=dfn id=consume-a-string-token0>Consume a string token</dfn></span><a class=section-link href=#consume-a-string-token>§</a></h4> 2.772 2.773 -<p> This section describes how to <a href=#consume-a-string-token0>consume a string token</a> from a stream of characters. 2.774 +<p> This section describes how to <a href=#consume-a-string-token0>consume a string token</a> from a stream of <a href=#code-point>code points</a>. 2.775 It returns either a <a data-link-type=token href=#tokendef-string>〈string〉</a> or <a data-link-type=token href=#tokendef-bad-string>〈bad-string〉</a>. 2.776 2.777 -<p> This algorithm must be called with an <var>ending character</var>, 2.778 - which denotes the character that ends the string. 2.779 +<p> This algorithm must be called with an <var>ending code point</var>, 2.780 + which denotes the <a href=#code-point>code point</a> that ends the string. 2.781 2.782 <p> Initially create a <a data-link-type=token href=#tokendef-string>〈string〉</a> with its value set to the empty string. 2.783 2.784 -<p> Repeatedly consume the <a href=#next-input-character>next input character</a> from the stream: 2.785 +<p> Repeatedly consume the <a href=#next-input-code-point>next input code point</a> from the stream: 2.786 2.787 <dl> 2.788 - <dt><var>ending character</var> 2.789 + <dt><var>ending code point</var> 2.790 <dt>EOF 2.791 <dd> 2.792 Return the <a data-link-type=token href=#tokendef-string>〈string〉</a>. 2.793 @@ -1098,33 +1106,33 @@ 2.794 <dt><a href=#newline>newline</a> 2.795 <dd> 2.796 This is a <a href=#parse-errors>parse error</a>. 2.797 - <a href=#reconsume-the-current-input-character>Reconsume the current input character</a>, 2.798 + <a href=#reconsume-the-current-input-code-point>Reconsume the current input code point</a>, 2.799 create a <a data-link-type=token href=#tokendef-bad-string>〈bad-string〉</a>, and return it. 2.800 2.801 <dt>U+005C REVERSE SOLIDUS (\) 2.802 <dd> 2.803 - If the <a href=#next-input-character>next input character</a> is EOF, 2.804 + If the <a href=#next-input-code-point>next input code point</a> is EOF, 2.805 do nothing. 2.806 2.807 <p> Otherwise, 2.808 - if the <a href=#next-input-character>next input character</a> is a newline, 2.809 + if the <a href=#next-input-code-point>next input code point</a> is a newline, 2.810 consume it. 2.811 2.812 <p> Otherwise, 2.813 - if the stream <a href=#check-if-two-characters-are-a-valid-escape0>starts with a valid escape</a>, 2.814 - <a href=#consume-an-escaped-character0>consume an escaped character</a> 2.815 - and append the returned character to the <a data-link-type=token href=#tokendef-string>〈string〉</a>’s value. 2.816 + if the stream <a href=#check-if-two-code-points-are-a-valid-escape0>starts with a valid escape</a>, 2.817 + <a href=#consume-an-escaped-code-point0>consume an escaped code point</a> 2.818 + and append the returned <a href=#code-point>code point</a> to the <a data-link-type=token href=#tokendef-string>〈string〉</a>’s value. 2.819 2.820 <dt>anything else 2.821 <dd> 2.822 - Append the <a href=#current-input-character>current input character</a> to the <a data-link-type=token href=#tokendef-string>〈string〉</a>’s value. 2.823 + Append the <a href=#current-input-code-point>current input code point</a> to the <a data-link-type=token href=#tokendef-string>〈string〉</a>’s value. 2.824 </dl> 2.825 2.826 2.827 <h4 data-level=4.3.5 id=consume-a-url-token><span class=secno>4.3.5 </span><span class=content> 2.828 <dfn data-dfn-type=dfn id=consume-a-url-token0>Consume a url token</dfn></span><a class=section-link href=#consume-a-url-token>§</a></h4> 2.829 2.830 -<p> This section describes how to <a href=#consume-a-url-token0>consume a url token</a> from a stream of characters. 2.831 +<p> This section describes how to <a href=#consume-a-url-token0>consume a url token</a> from a stream of <a href=#code-point>code points</a>. 2.832 It returns either a <a data-link-type=token href=#tokendef-url>〈url〉</a> or a <a data-link-type=token href=#tokendef-bad-url>〈bad-url〉</a>. 2.833 2.834 <p class=note> Note: This algorithm assumes that the initial "url(" has already been consumed. 2.835 @@ -1139,16 +1147,16 @@ 2.836 Consume as much <a href=#whitespace>whitespace</a> as possible. 2.837 2.838 <li> 2.839 - If the <a href=#next-input-character>next input character</a> is EOF, 2.840 + If the <a href=#next-input-code-point>next input code point</a> is EOF, 2.841 return the <a data-link-type=token href=#tokendef-url>〈url〉</a>. 2.842 2.843 <li> 2.844 - If the <a href=#next-input-character>next input character</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 2.845 + If the <a href=#next-input-code-point>next input code point</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 2.846 then: 2.847 2.848 <ol> 2.849 <li> 2.850 - <a href=#consume-a-string-token0>Consume a string token</a> with the <a href=#current-input-character>current input character</a> as the ending character. 2.851 + <a href=#consume-a-string-token0>Consume a string token</a> with the <a href=#current-input-code-point>current input code point</a> as the ending code point. 2.852 2.853 <li> 2.854 If a <a data-link-type=token href=#tokendef-bad-string>〈bad-string〉</a> was returned, 2.855 @@ -1163,7 +1171,7 @@ 2.856 Consume as much <a href=#whitespace>whitespace</a> as possible. 2.857 2.858 <li> 2.859 - If the <a href=#next-input-character>next input character</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.860 + If the <a href=#next-input-code-point>next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.861 consume it and return the <a data-link-type=token href=#tokendef-url>〈url〉</a>; 2.862 otherwise, 2.863 <a href=#consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url</a>, 2.864 @@ -1172,7 +1180,7 @@ 2.865 </ol> 2.866 2.867 <li> 2.868 - Repeatedly consume the <a href=#next-input-character>next input character</a> from the stream: 2.869 + Repeatedly consume the <a href=#next-input-code-point>next input code point</a> from the stream: 2.870 2.871 <dl> 2.872 <dt>U+0029 RIGHT PARENTHESIS ()) 2.873 @@ -1183,7 +1191,7 @@ 2.874 <dt><a href=#whitespace>whitespace</a> 2.875 <dd> 2.876 Consume as much <a href=#whitespace>whitespace</a> as possible. 2.877 - If the <a href=#next-input-character>next input character</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.878 + If the <a href=#next-input-code-point>next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 2.879 consume it and return the <a data-link-type=token href=#tokendef-url>〈url〉</a>; 2.880 otherwise, 2.881 <a href=#consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url</a>, 2.882 @@ -1193,7 +1201,7 @@ 2.883 <dt>U+0022 QUOTATION MARK (") 2.884 <dt>U+0027 APOSTROPHE (') 2.885 <dt>U+0028 LEFT PARENTHESIS (() 2.886 - <dt><a href=#non-printable-character>non-printable character</a> 2.887 + <dt><a href=#non-printable-code-point>non-printable code point</a> 2.888 <dd> 2.889 This is a <a href=#parse-errors>parse error</a>. 2.890 <a href=#consume-the-remnants-of-a-bad-url0>Consume the remnants of a bad url</a>, 2.891 @@ -1202,9 +1210,9 @@ 2.892 2.893 <dt>U+005C REVERSE SOLIDUS 2.894 <dd> 2.895 - If the stream <a href=#check-if-two-characters-are-a-valid-escape0>starts with a valid escape</a>, 2.896 - <a href=#consume-an-escaped-character0>consume an escaped character</a> 2.897 - and append the returned character to the <a data-link-type=token href=#tokendef-url>〈url〉</a>’s value. 2.898 + If the stream <a href=#check-if-two-code-points-are-a-valid-escape0>starts with a valid escape</a>, 2.899 + <a href=#consume-an-escaped-code-point0>consume an escaped code point</a> 2.900 + and append the returned <a href=#code-point>code point</a> to the <a data-link-type=token href=#tokendef-url>〈url〉</a>’s value. 2.901 2.902 <p> Otherwise, 2.903 this is a <a href=#parse-errors>parse error</a>. 2.904 @@ -1214,7 +1222,7 @@ 2.905 2.906 <dt>anything else 2.907 <dd> 2.908 - Append the <a href=#current-input-character>current input character</a> 2.909 + Append the <a href=#current-input-code-point>current input code point</a> 2.910 to the <a data-link-type=token href=#tokendef-url>〈url〉</a>’s value. 2.911 </dl> 2.912 </ol> 2.913 @@ -1227,7 +1235,7 @@ 2.914 It returns a <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a> token. 2.915 2.916 <p class=note> Note: This algorithm assumes that the initial "u+" has been consumed, 2.917 - and the next character verified to be a <a href=#hex-digit>hex digit</a> or a "?". 2.918 + and the next <a href=#code-point>code point</a> verified to be a <a href=#hex-digit>hex digit</a> or a "?". 2.919 2.920 <p> Execute the following steps in order: 2.921 2.922 @@ -1239,21 +1247,21 @@ 2.923 <li> 2.924 Consume as many <a href=#hex-digit>hex digits</a> as possible, but no more than 6. 2.925 If less than 6 <a href=#hex-digit>hex digits</a> were consumed, 2.926 - consume as many U+003F QUESTION MARK (?) characters as possible, 2.927 - but no more than enough to make the total of <a href=#hex-digit>hex digits</a> and U+003F QUESTION MARK (?) characters equal to 6. 2.928 - 2.929 -<p> If any U+003F QUESTION MARK (?) characters were consumed, 2.930 + consume as many U+003F QUESTION MARK (?) <a href=#code-point>code points</a> as possible, 2.931 + but no more than enough to make the total of <a href=#hex-digit>hex digits</a> and U+003F QUESTION MARK (?) <a href=#code-point>code points</a> equal to 6. 2.932 + 2.933 +<p> If any U+003F QUESTION MARK (?) <a href=#code-point>code points</a> were consumed, 2.934 then: 2.935 2.936 <ol> 2.937 <li> 2.938 - Interpret the consumed characters as a hexadecimal number, 2.939 - with the U+003F QUESTION MARK (?) characters replaced by U+0030 DIGIT ZERO (0) characters. 2.940 + Interpret the consumed <a href=#code-point>code points</a> as a hexadecimal number, 2.941 + with the U+003F QUESTION MARK (?) <a href=#code-point>code points</a> replaced by U+0030 DIGIT ZERO (0) <a href=#code-point>code points</a>. 2.942 This is the <a href=#start-of-the-range>start of the range</a>. 2.943 2.944 <li> 2.945 - Interpret the consumed characters as a hexadecimal number again, 2.946 - with the U+003F QUESTION MARK (?) character replaced by U+0046 LATIN CAPITAL LETTER F (F) characters. 2.947 + Interpret the consumed <a href=#code-point>code points</a> as a hexadecimal number again, 2.948 + with the U+003F QUESTION MARK (?) <a href=#code-point>code point</a> replaced by U+0046 LATIN CAPITAL LETTER F (F) <a href=#code-point>code points</a>. 2.949 This is the <a href=#end-of-the-range>end of the range</a>. 2.950 2.951 <li> 2.952 @@ -1265,12 +1273,12 @@ 2.953 This is the <a href=#start-of-the-range>start of the range</a>. 2.954 2.955 <li> 2.956 - If the <a href=#next-input-character title="next input character">next 2 input character</a> are 2.957 + If the <a href=#next-input-code-point title="next input code point">next 2 input code point</a> are 2.958 U+002D HYPHEN-MINUS (-) followed by a <a href=#hex-digit>hex digit</a>, 2.959 then: 2.960 2.961 <ol> 2.962 - <li>Consume the <a href=#next-input-character>next input character</a>. 2.963 + <li>Consume the <a href=#next-input-code-point>next input code point</a>. 2.964 2.965 <li> 2.966 Consume as many <a href=#hex-digit>hex digits</a> as possible, but no more than 6. 2.967 @@ -1285,130 +1293,130 @@ 2.968 </ol> 2.969 2.970 2.971 -<h4 data-level=4.3.7 id=consume-an-escaped-character><span class=secno>4.3.7 </span><span class=content> 2.972 -<dfn data-dfn-type=dfn id=consume-an-escaped-character0>Consume an escaped character</dfn></span><a class=section-link href=#consume-an-escaped-character>§</a></h4> 2.973 - 2.974 -<p> This section describes how to <a href=#consume-an-escaped-character0>consume an escaped character</a>. 2.975 +<h4 data-level=4.3.7 id=consume-an-escaped-code-point><span class=secno>4.3.7 </span><span class=content> 2.976 +<dfn data-dfn-type=dfn id=consume-an-escaped-code-point0>consume an escaped code point</dfn></span><a class=section-link href=#consume-an-escaped-code-point>§</a></h4> 2.977 + 2.978 +<p> This section describes how to <a href=#consume-an-escaped-code-point0>consume an escaped code point</a>. 2.979 It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed 2.980 - and that the next input character has already been verified 2.981 + and that the next input code point has already been verified 2.982 to not be a <a href=#newline>newline</a> or EOF. 2.983 - It will return a character. 2.984 - 2.985 -<p> Consume the <a href=#next-input-character>next input character</a>. 2.986 + It will return a <a href=#code-point>code point</a>. 2.987 + 2.988 +<p> Consume the <a href=#next-input-code-point>next input code point</a>. 2.989 2.990 <dl> 2.991 <dt><a href=#hex-digit>hex digit</a> 2.992 <dd> 2.993 Consume as many <a href=#hex-digit>hex digits</a> as possible, but no more than 5. 2.994 <span class=note>Note that this means 1-6 hex digits have been consumed in total.</span> 2.995 - If the <a href=#next-input-character>next input character</a> is 2.996 + If the <a href=#next-input-code-point>next input code point</a> is 2.997 <a href=#whitespace>whitespace</a>, 2.998 consume it as well. 2.999 Interpret the <a href=#hex-digit>hex digits</a> as a hexadecimal number. 2.1000 If this number is zero, 2.1001 or is between U+D800 and U+DFFF inclusive, 2.1002 - or is greater than the <a href=#maximum-allowed-codepoint>maximum allowed codepoint</a>, 2.1003 + or is greater than the <a href=#maximum-allowed-code-point>maximum allowed code point</a>, 2.1004 return U+FFFD REPLACEMENT CHARACTER (�). 2.1005 - Otherwise, return the character with that codepoint. 2.1006 + Otherwise, return the <a href=#code-point>code point</a> with that value. 2.1007 2.1008 <p class=note> 2.1009 U+D800 to U+DFFF are the 2.1010 <a href=http://www.unicode.org/glossary/#surrogate_code_point>surrogate code points</a>. 2.1011 2.1012 - <dt>EOF character 2.1013 + <dt>EOF code point 2.1014 <dd> 2.1015 Return U+FFFD REPLACEMENT CHARACTER (�). 2.1016 2.1017 <dt>anything else 2.1018 <dd> 2.1019 - Return the <a href=#current-input-character>current input character</a>. 2.1020 + Return the <a href=#current-input-code-point>current input code point</a>. 2.1021 </dl> 2.1022 2.1023 2.1024 -<h4 data-level=4.3.8 id=check-if-two-characters-are-a-valid-escape><span class=secno>4.3.8 </span><span class=content> 2.1025 -<dfn data-dfn-type=dfn id=check-if-two-characters-are-a-valid-escape0 title="check if two characters are a valid escape|are a valid escape|starts with a valid escape">Check if two characters are a valid escape</dfn></span><a class=section-link href=#check-if-two-characters-are-a-valid-escape>§</a></h4> 2.1026 - 2.1027 -<p> This section describes how to <a href=#check-if-two-characters-are-a-valid-escape0>check if two characters are a valid escape</a>. 2.1028 - The algorithm described here can be called explicitly with two characters, 2.1029 +<h4 data-level=4.3.8 id=check-if-two-code-points-are-a-valid-escape><span class=secno>4.3.8 </span><span class=content> 2.1030 +<dfn data-dfn-type=dfn id=check-if-two-code-points-are-a-valid-escape0 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</dfn></span><a class=section-link href=#check-if-two-code-points-are-a-valid-escape>§</a></h4> 2.1031 + 2.1032 +<p> This section describes how to <a href=#check-if-two-code-points-are-a-valid-escape0>check if two code points are a valid escape</a>. 2.1033 + The algorithm described here can be called explicitly with two <a href=#code-point>code points</a>, 2.1034 or can be called with the input stream itself. 2.1035 - In the latter case, the two characters in question are 2.1036 - the <a href=#current-input-character>current input character</a> 2.1037 - and the <a href=#next-input-character>next input character</a>, 2.1038 + In the latter case, the two <a href=#code-point>code points</a> in question are 2.1039 + the <a href=#current-input-code-point>current input code point</a> 2.1040 + and the <a href=#next-input-code-point>next input code point</a>, 2.1041 in that order. 2.1042 2.1043 -<p class=note> Note: This algorithm will not consume any additional characters. 2.1044 - 2.1045 -<p> If the first character is not U+005D REVERSE SOLIDUS (\), 2.1046 +<p class=note> Note: This algorithm will not consume any additional <a href=#code-point>code point</a>. 2.1047 + 2.1048 +<p> If the first <a href=#code-point>code point</a> is not U+005D REVERSE SOLIDUS (\), 2.1049 return false. 2.1050 2.1051 <p> Otherwise, 2.1052 - if the second character is a <a href=#newline>newline</a>, 2.1053 + if the second <a href=#code-point>code point</a> is a <a href=#newline>newline</a>, 2.1054 return false. 2.1055 2.1056 <p> Otherwise, return true. 2.1057 2.1058 2.1059 -<h4 data-level=4.3.9 id=check-if-three-characters-would-start-an-identifier><span class=secno>4.3.9 </span><span class=content> 2.1060 -<dfn data-dfn-type=dfn id=check-if-three-characters-would-start-an-identifier0 title="check if three characters would start an identifier|starts with an identifier|start with an identifier|would start an identifier">Check if three characters would start an identifier</dfn></span><a class=section-link href=#check-if-three-characters-would-start-an-identifier>§</a></h4> 2.1061 - 2.1062 -<p> This section describes how to <a href=#check-if-three-characters-would-start-an-identifier0>check if three characters would start an identifier</a>. 2.1063 - The algorithm described here can be called explicitly with three characters, 2.1064 +<h4 data-level=4.3.9 id=check-if-three-code-points-would-start-an-identifier><span class=secno>4.3.9 </span><span class=content> 2.1065 +<dfn data-dfn-type=dfn id=check-if-three-code-points-would-start-an-identifier0 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 identifier</dfn></span><a class=section-link href=#check-if-three-code-points-would-start-an-identifier>§</a></h4> 2.1066 + 2.1067 +<p> This section describes how to <a href=#check-if-three-code-points-would-start-an-identifier0>check if three code points would start an identifier</a>. 2.1068 + The algorithm described here can be called explicitly with three <a href=#code-point>code points</a>, 2.1069 or can be called with the input stream itself. 2.1070 - In the latter case, the three characters in question are 2.1071 - the <a href=#current-input-character>current input character</a> 2.1072 - and the <a href=#next-input-character title="next input character">next two input characters</a>, 2.1073 + In the latter case, the three <a href=#code-point>code points</a> in question are 2.1074 + the <a href=#current-input-code-point>current input code point</a> 2.1075 + and the <a href=#next-input-code-point title="next input code point">next two input code points</a>, 2.1076 in that order. 2.1077 2.1078 -<p class=note> Note: This algorithm will not consume any additional characters. 2.1079 - 2.1080 -<p> Look at the first character: 2.1081 +<p class=note> Note: This algorithm will not consume any additional <a href=#code-point>code point</a>. 2.1082 + 2.1083 +<p> Look at the first <a href=#code-point>code point</a>: 2.1084 2.1085 <dl> 2.1086 <dt>U+002D HYPHEN-MINUS 2.1087 <dd> 2.1088 - If the second character is a <a href=#name-start-character>name-start character</a> 2.1089 - or the second and third characters <a href=#check-if-two-characters-are-a-valid-escape0>are a valid escape</a>, 2.1090 + If the second <a href=#code-point>code point</a> is a <a href=#name-start-code-point>name-start code point</a> 2.1091 + or the second and third <a href=#code-point>code points</a> <a href=#check-if-two-code-points-are-a-valid-escape0>are a valid escape</a>, 2.1092 return true. 2.1093 Otherwise, return false. 2.1094 2.1095 - <dt><a href=#name-start-character>name-start character</a> 2.1096 + <dt><a href=#name-start-code-point>name-start code point</a> 2.1097 <dd> 2.1098 Return true. 2.1099 2.1100 <dt>U+005C REVERSE SOLIDUS (\) 2.1101 <dd> 2.1102 - If the first and second characters <a href=#check-if-two-characters-are-a-valid-escape0>are a valid escape</a>, 2.1103 + If the first and second <a href=#code-point>code points</a> <a href=#check-if-two-code-points-are-a-valid-escape0>are a valid escape</a>, 2.1104 return true. 2.1105 Otherwise, return false. 2.1106 </dl> 2.1107 2.1108 -<h4 data-level=4.3.10 id=check-if-three-characters-would-start-a-number><span class=secno>4.3.10 </span><span class=content> 2.1109 -<dfn data-dfn-type=dfn id=check-if-three-characters-would-start-a-number0 title="check if three characters would start a number|starts with a number|start with a number|would start a number">Check if three characters would start a number</dfn></span><a class=section-link href=#check-if-three-characters-would-start-a-number>§</a></h4> 2.1110 - 2.1111 -<p> This section describes how to <a href=#check-if-three-characters-would-start-a-number0>check if three characters would start a number</a>. 2.1112 - The algorithm described here can be called explicitly with three characters, 2.1113 +<h4 data-level=4.3.10 id=check-if-three-code-points-would-start-a-number><span class=secno>4.3.10 </span><span class=content> 2.1114 +<dfn data-dfn-type=dfn id=check-if-three-code-points-would-start-a-number0 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</dfn></span><a class=section-link href=#check-if-three-code-points-would-start-a-number>§</a></h4> 2.1115 + 2.1116 +<p> This section describes how to <a href=#check-if-three-code-points-would-start-a-number0>check if three code points would start a number</a>. 2.1117 + The algorithm described here can be called explicitly with three <a href=#code-point>code points</a>, 2.1118 or can be called with the input stream itself. 2.1119 - In the latter case, the three characters in question are 2.1120 - the <a href=#current-input-character>current input character</a> 2.1121 - and the <a href=#next-input-character title="next input character">next two input characters</a>, 2.1122 + In the latter case, the three <a href=#code-point>code points</a> in question are 2.1123 + the <a href=#current-input-code-point>current input code point</a> 2.1124 + and the <a href=#next-input-code-point title="next input code point">next two input code points</a>, 2.1125 in that order. 2.1126 2.1127 -<p class=note> Note: This algorithm will not consume any additional characters. 2.1128 - 2.1129 -<p> Look at the first character: 2.1130 +<p class=note> Note: This algorithm will not consume any additional <a href=#code-point>code points</a>. 2.1131 + 2.1132 +<p> Look at the first <a href=#code-point>code point</a>: 2.1133 2.1134 <dl> 2.1135 <dt>U+002B PLUS SIGN (+) 2.1136 <dt>U+002D HYPHEN-MINUS (-) 2.1137 <dd> 2.1138 - If the second character 2.1139 + If the second <a href=#code-point>code point</a> 2.1140 is a <a href=#digit>digit</a>, 2.1141 return true. 2.1142 2.1143 <p> Otherwise, 2.1144 - if the second character 2.1145 + if the second <a href=#code-point>code point</a> 2.1146 is a U+002E FULL STOP (.) 2.1147 - and the third character 2.1148 + and the third <a href=#code-point>code point</a> 2.1149 is a <a href=#digit>digit</a>, 2.1150 return true. 2.1151 2.1152 @@ -1416,7 +1424,7 @@ 2.1153 2.1154 <dt>U+002E FULL STOP (.) 2.1155 <dd> 2.1156 - If the second character 2.1157 + If the second <a href=#code-point>code point</a> 2.1158 is a <a href=#digit>digit</a>, 2.1159 return true. 2.1160 Otherwise, return false. 2.1161 @@ -1434,29 +1442,29 @@ 2.1162 <h4 data-level=4.3.11 id=consume-a-name><span class=secno>4.3.11 </span><span class=content> 2.1163 <dfn data-dfn-type=dfn id=consume-a-name0>Consume a name</dfn></span><a class=section-link href=#consume-a-name>§</a></h4> 2.1164 2.1165 -<p> This section describes how to <a href=#consume-a-name0>consume a name</a> from a stream of characters. 2.1166 +<p> This section describes how to <a href=#consume-a-name0>consume a name</a> from a stream of <a href=#code-point>code points</a>. 2.1167 It returns a string containing 2.1168 - the largest name that can be formed from adjacent characters in the stream, starting from the first. 2.1169 - 2.1170 -<p class=note> Note: This algorithm does not do the verification of the first few characters 2.1171 - that are necessary to ensure the returned characters would constitute an <a data-link-type=token href=#tokendef-ident>〈ident〉</a>. 2.1172 + the largest name that can be formed from adjacent <a href=#code-point>code points</a> in the stream, starting from the first. 2.1173 + 2.1174 +<p class=note> Note: This algorithm does not do the verification of the first few <a href=#code-point>code points</a> 2.1175 + that are necessary to ensure the returned <a href=#code-point>code points</a> would constitute an <a data-link-type=token href=#tokendef-ident>〈ident〉</a>. 2.1176 If that is the intended use, 2.1177 - ensure that the stream <a href=#check-if-three-characters-would-start-an-identifier0>starts with an identifier</a> 2.1178 + ensure that the stream <a href=#check-if-three-code-points-would-start-an-identifier0>starts with an identifier</a> 2.1179 before calling this algorithm. 2.1180 2.1181 <p> Let <var>result</var> initially be an empty string. 2.1182 2.1183 -<p> Repeatedly consume the <a href=#next-input-character>next input character</a> from the stream: 2.1184 +<p> Repeatedly consume the <a href=#next-input-code-point>next input code point</a> from the stream: 2.1185 2.1186 <dl> 2.1187 - <dt><a href=#name-character>name character</a> 2.1188 + <dt><a href=#name-code-point>name code point</a> 2.1189 <dd> 2.1190 - Append the character to <var>result</var>. 2.1191 - 2.1192 - <dt>the stream <a href=#check-if-two-characters-are-a-valid-escape0>starts with a valid escape</a> 2.1193 + Append the <a href=#code-point>code point</a> to <var>result</var>. 2.1194 + 2.1195 + <dt>the stream <a href=#check-if-two-code-points-are-a-valid-escape0>starts with a valid escape</a> 2.1196 <dd> 2.1197 - <a href=#consume-an-escaped-character0>Consume an escaped character</a>. 2.1198 - Append the returned character to <var>result</var>. 2.1199 + <a href=#consume-an-escaped-code-point0>consume an escaped code point</a>. 2.1200 + Append the returned <a href=#code-point>code point</a> to <var>result</var>. 2.1201 2.1202 <dt>anything else 2.1203 <dd> 2.1204 @@ -1467,15 +1475,15 @@ 2.1205 <h4 data-level=4.3.12 id=consume-a-number><span class=secno>4.3.12 </span><span class=content> 2.1206 <dfn data-dfn-type=dfn id=consume-a-number0>Consume a number</dfn></span><a class=section-link href=#consume-a-number>§</a></h4> 2.1207 2.1208 -<p> This section describes how to <a href=#consume-a-number0>consume a number</a> from a stream of characters. 2.1209 +<p> This section describes how to <a href=#consume-a-number0>consume a number</a> from a stream of <a href=#code-point>code points</a>. 2.1210 It returns a 3-tuple of 2.1211 a string representation, 2.1212 a numeric value, 2.1213 and a type flag which is either "integer" or "number". 2.1214 2.1215 -<p class=note> Note: This algorithm does not do the verification of the first few characters 2.1216 +<p class=note> Note: This algorithm does not do the verification of the first few <a href=#code-point>code points</a> 2.1217 that are necessary to ensure a number can be obtained from the stream. 2.1218 - Ensure that the stream <a href=#check-if-three-characters-would-start-a-number0>starts with a number</a> 2.1219 + Ensure that the stream <a href=#check-if-three-code-points-would-start-a-number0>starts with a number</a> 2.1220 before calling this algorithm. 2.1221 2.1222 <p> Execute the following steps in order: 2.1223 @@ -1486,15 +1494,15 @@ 2.1224 and <var>type</var> to "integer". 2.1225 2.1226 <li> 2.1227 - If the <a href=#next-input-character>next input character</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 2.1228 + If the <a href=#next-input-code-point>next input code point</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 2.1229 consume it and append it to <var>repr</var>. 2.1230 2.1231 <li> 2.1232 - While the <a href=#next-input-character>next input character</a> is a <a href=#digit>digit</a>, 2.1233 + While the <a href=#next-input-code-point>next input code point</a> is a <a href=#digit>digit</a>, 2.1234 consume it and append it to <var>repr</var>. 2.1235 2.1236 <li> 2.1237 - If the <a href=#next-input-character title="next input character">next 2 input characters</a> are 2.1238 + If the <a href=#next-input-code-point title="next input code point">next 2 input code points</a> are 2.1239 U+002E FULL STOP (.) followed by a <a href=#digit>digit</a>, 2.1240 then: 2.1241 2.1242 @@ -1502,11 +1510,11 @@ 2.1243 <li>Consume them. 2.1244 <li>Append them to <var>repr</var>. 2.1245 <li>Set <var>type</var> to "number". 2.1246 - <li>While the <a href=#next-input-character>next input character</a> is a <a href=#digit>digit</a>, consume it and append it to <var>repr</var>. 2.1247 + <li>While the <a href=#next-input-code-point>next input code point</a> is a <a href=#digit>digit</a>, consume it and append it to <var>repr</var>. 2.1248 </ol> 2.1249 2.1250 <li> 2.1251 - If the <a href=#next-input-character title="next input character">next 2 or 3 input characters</a> are 2.1252 + If the <a href=#next-input-code-point title="next input code point">next 2 or 3 input code points</a> are 2.1253 U+0045 LATIN CAPITAL LETTER E (E) or U+0065 LATIN SMALL LETTER E (e), 2.1254 optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+), 2.1255 followed by a <a href=#digit>digit</a>, 2.1256 @@ -1516,7 +1524,7 @@ 2.1257 <li>Consume them. 2.1258 <li>Append them to <var>repr</var>. 2.1259 <li>Set <var>type</var> to "number". 2.1260 - <li>While the <a href=#next-input-character>next input character</a> is a <a href=#digit>digit</a>, consume it and append it to <var>repr</var>. 2.1261 + <li>While the <a href=#next-input-code-point>next input code point</a> is a <a href=#digit>digit</a>, consume it and append it to <var>repr</var>. 2.1262 </ol> 2.1263 2.1264 <li> 2.1265 @@ -1588,13 +1596,13 @@ 2.1266 <h4 data-level=4.3.14 id=consume-the-remnants-of-a-bad-url><span class=secno>4.3.14 </span><span class=content> 2.1267 <dfn data-dfn-type=dfn id=consume-the-remnants-of-a-bad-url0>Consume the remnants of a bad url</dfn></span><a class=section-link href=#consume-the-remnants-of-a-bad-url>§</a></h4> 2.1268 2.1269 -<p> This section describes how to <a href=#consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url</a> from a stream of characters, 2.1270 +<p> This section describes how to <a href=#consume-the-remnants-of-a-bad-url0>consume the remnants of a bad url</a> from a stream of <a href=#code-point>code points</a>, 2.1271 "cleaning up" after the tokenizer realizes that it's in the middle of a <a data-link-type=token href=#tokendef-bad-url>〈bad-url〉</a> rather than a <a data-link-type=token href=#tokendef-url>〈url〉</a>. 2.1272 It returns nothing; 2.1273 its sole use is to consume enough of the input stream to reach a recovery point 2.1274 where normal tokenizing can resume. 2.1275 2.1276 -<p> Repeatedly consume the <a href=#next-input-character>next input character</a> from the stream: 2.1277 +<p> Repeatedly consume the <a href=#next-input-code-point>next input code point</a> from the stream: 2.1278 2.1279 <dl> 2.1280 <dt>U+0029 RIGHT PARENTHESIS ()) 2.1281 @@ -1602,9 +1610,9 @@ 2.1282 <dd> 2.1283 Return. 2.1284 2.1285 - <dt>the input stream <a href=#check-if-two-characters-are-a-valid-escape0>starts with a valid escape</a> 2.1286 + <dt>the input stream <a href=#check-if-two-code-points-are-a-valid-escape0>starts with a valid escape</a> 2.1287 <dd> 2.1288 - <a href=#consume-an-escaped-character0>Consume an escaped character</a>. 2.1289 + <a href=#consume-an-escaped-code-point0>consume an escaped code point</a>. 2.1290 <span class=note>This allows an escaped right parenthesis ("\)") to be encountered without ending the <a data-link-type=token href=#tokendef-bad-url>〈bad-url〉</a>. 2.1291 This is otherwise identical to the "anything else" clause.</span> 2.1292 2.1293 @@ -1618,14 +1626,14 @@ 2.1294 2.1295 <p> This section describes how to set a <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a>’s range 2.1296 so that the range it describes 2.1297 - is within the supported range of unicode characters. 2.1298 + is within the supported range of unicode <a href=#code-point>code points</a>. 2.1299 2.1300 <p> It assumes that the <dfn data-dfn-type=dfn id=start-of-the-range>start of the range</dfn> has been defined, 2.1301 the <dfn data-dfn-type=dfn id=end-of-the-range>end of the range</dfn> might be defined, 2.1302 and both are non-negative integers. 2.1303 2.1304 <p> If the <a href=#start-of-the-range>start of the range</a> is greater than 2.1305 - the <a href=#maximum-allowed-codepoint>maximum allowed codepoint</a>, 2.1306 + the <a href=#maximum-allowed-code-point>maximum allowed code point</a>, 2.1307 the <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a>’s range is empty. 2.1308 2.1309 <p> If the <a href=#end-of-the-range>end of the range</a> is defined, 2.1310 @@ -1634,16 +1642,16 @@ 2.1311 2.1312 <p> If the <a href=#end-of-the-range>end of the range</a> is not defined, 2.1313 the <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a>’s range 2.1314 - is the single character whose codepoint is the <a href=#start-of-the-range>start of the range</a>. 2.1315 + is the single <a href=#code-point>code point</a> whose value is the <a href=#start-of-the-range>start of the range</a>. 2.1316 2.1317 <p> Otherwise, 2.1318 if the <a href=#end-of-the-range>end of the range</a> is greater than 2.1319 - the <a href=#maximum-allowed-codepoint>maximum allowed codepoint</a>, 2.1320 - change it to the <a href=#maximum-allowed-codepoint>maximum allowed codepoint</a>. 2.1321 + the <a href=#maximum-allowed-code-point>maximum allowed code point</a>, 2.1322 + change it to the <a href=#maximum-allowed-code-point>maximum allowed code point</a>. 2.1323 The <a data-link-type=token href=#tokendef-unicode-range>〈unicode-range〉</a>’s range 2.1324 - is all characters between 2.1325 - the character whose codepoint is the <a href=#start-of-the-range>start of the range</a> 2.1326 - and the character whose codepoint is the <a href=#end-of-the-range>end of the range</a>. 2.1327 + is all <a href=#code-point>code points</a> between 2.1328 + the <a href=#code-point>code point</a> whose value is the <a href=#start-of-the-range>start of the range</a> 2.1329 + and the <a href=#code-point>code point</a> whose value is the <a href=#end-of-the-range>end of the range</a>. 2.1330 2.1331 2.1332 <!-- 2.1333 @@ -1857,11 +1865,11 @@ 2.1334 <dd> 2.1335 When two strings are to be matched ASCII case-insensitively, 2.1336 temporarily convert both of them to ASCII lower-case form 2.1337 - by adding 32 (0x20) to the value of each codepoint between 2.1338 + by adding 32 (0x20) to the value of each <a href=#code-point>code point</a> between 2.1339 U+0041 LATIN CAPITAL LETTER A (A) 2.1340 and U+005A LATIN CAPITAL LETTER Z (Z), 2.1341 inclusive, 2.1342 - and then compare them on a codepoint-by-codepoint basis. 2.1343 + and check if this results in identical sequences of <a href=#code-point>code point</a>. 2.1344 </dl> 2.1345 2.1346 2.1347 @@ -1875,7 +1883,7 @@ 2.1348 but they may also be invoked on a string; 2.1349 if so, 2.1350 first perform <a href=#preprocessing-the-input-stream>input preprocessing</a> 2.1351 - to produce a character stream, 2.1352 + to produce a <a href=#code-point>code point</a> stream, 2.1353 then perform <a href=#tokenization>tokenization</a> 2.1354 to produce a token stream. 2.1355 2.1356 @@ -2092,7 +2100,7 @@ 2.1357 2.1358 <p> These algorithms may be called with a list of either tokens or of component values. 2.1359 (The difference being that some tokens are replaced by <a href=#function>functions</a> and <a href=#simple-block>simple blocks</a> in a list of component values.) 2.1360 - Similar to how the input stream returned EOF characters to represent when it was empty during the tokenization stage, 2.1361 + Similar to how the input stream returned EOF code points to represent when it was empty during the tokenization stage, 2.1362 the lists in this stage must return an <a data-link-type=token href=#tokendef-eof>〈EOF〉</a> when the next token is requested but they are empty. 2.1363 2.1364 <p> An algorithm may be invoked with a specific list, 2.1365 @@ -2561,13 +2569,13 @@ 2.1366 <dd> 2.1367 <var>A</var> is the dimension's value or 1, respectively. 2.1368 <var>B</var> is the dimension's unit or ident's value, respectively, 2.1369 - with the first character removed and the remainder interpreted as a base-10 number. 2.1370 + with the first <a href=#code-point>code point</a> removed and the remainder interpreted as a base-10 number. 2.1371 <span class=note>B is negative.</span> 2.1372 2.1373 <dt><code><var><dashndashdigit-ident></var></code> 2.1374 <dd> 2.1375 <var>A</var> is -1. 2.1376 - <var>B</var> is the ident's value, with the first two characters removed and the remainder interpreted as a base-10 number. 2.1377 + <var>B</var> is the ident's value, with the first two <a href=#code-point>code points</a> removed and the remainder interpreted as a base-10 number. 2.1378 <span class=note>B is negative.</span> 2.1379 2.1380 <dt><code><var><n-dimension></var> <var><signed-integer></var></code> 2.1381 @@ -2625,7 +2633,7 @@ 2.1382 and does not match corresponding grammar definitions. 2.1383 2.1384 <a data-link-type=token href=#tokendef-delim>〈delim〉</a>s are written with their value enclosed in single quotes. 2.1385 - For example, a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> containing the "+" character is written as <code>'+'</code>. 2.1386 + For example, a <a data-link-type=token href=#tokendef-delim>〈delim〉</a> containing the "+" <a href=#code-point>code point</a> is written as <code>'+'</code>. 2.1387 Similarly, the <a data-link-type=token href=#tokendef-open-square>〈[〉</a> and <a data-link-type=token href=#tokendef-close-square>〈]〉</a>s must be written in single quotes, 2.1388 as they're used by the syntax of the grammar itself to group clauses. 2.1389 <a data-link-type=token href=#tokendef-whitespace>〈whitespace〉</a> is never indicated in the grammar; 2.1390 @@ -2931,22 +2939,22 @@ 2.1391 2.1392 <p> <ul> 2.1393 <li> 2.1394 - Any U+0000 NULL character in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 2.1395 + Any U+0000 NULL <a href=#code-point>code point</a> in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 2.1396 2.1397 <li> 2.1398 Any hexadecimal escape sequence such as <span class=css data-link-type=maybe>\0</span> that evaluate to zero 2.1399 - produce U+FFFD REPLACEMENT CHARACTER rather than U+0000 NULL. 2.1400 + produce U+FFFD REPLACEMENT r rather than U+0000 NULL. 2.1401 <!-- 2.1402 This covers a security issue: 2.1403 https://bugzilla.mozilla.org/show_bug.cgi?id=228856 2.1404 --> 2.1405 2.1406 <li> 2.1407 - The definition of <a href=#non-ascii-character>non-ASCII character</a> was changed 2.1408 + The definition of <a href=#non-ascii-code-point>non-ASCII code point</a> was changed 2.1409 to be consistent with every definition of ASCII. 2.1410 - This affects characters U+0080 to U+009F, 2.1411 - which are now <a href=#name-character>name characters</a> rather than <a data-link-type=token href=#tokendef-delim>〈delim〉</a>s, 2.1412 - like the rest of <a href=#non-ascii-character>non-ASCII characters</a>. 2.1413 + This affects <a href=#code-point>code points</a> U+0080 to U+009F, 2.1414 + which are now <a href=#name-code-point>name code points</a> rather than <a data-link-type=token href=#tokendef-delim>〈delim〉</a>s, 2.1415 + like the rest of <a href=#non-ascii-code-point>non-ASCII code points</a>. 2.1416 2.1417 <li> 2.1418 Tokenization does not emit COMMENT or BAD_COMMENT tokens anymore. 2.1419 @@ -3040,7 +3048,7 @@ 2.1420 2.1421 <p> <ul> 2.1422 <li> 2.1423 - In some cases, "-" characters or digits can be escaped 2.1424 + In some cases, minus signs or digits can be escaped 2.1425 (when they appear as part of the unit of a <a data-link-type=token href=#tokendef-dimension>〈dimension〉</a> or <a data-link-type=token href=#tokendef-ident>〈ident〉</a>). 2.1426 </ul> 2.1427 </ul> 2.1428 @@ -3197,7 +3205,7 @@ 2.1429 <li>A, <a href=#a title="section 6">6</a> 2.1430 <li>An+B, <a href=#anb0 title="section 6">6</a> 2.1431 <li><an+b>, <a href=#anb-production title="section 6.2">6.2</a> 2.1432 -<li>are a valid escape, <a href=#check-if-two-characters-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1433 +<li>are a valid escape, <a href=#check-if-two-code-points-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1434 <li>ASCII case-insensitive, <a href=#ascii-case-insensitive title="section 5.2">5.2</a> 2.1435 <li><at-charset-rule>, <a href=#typedef-at-charset-rule title="section 8.2">8.2</a> 2.1436 <li>〈at-keyword〉, <a href=#tokendef-at-keyword title="section 4">4</a> 2.1437 @@ -3208,9 +3216,10 @@ 2.1438 <li>〈CDC〉, <a href=#tokendef-cdc title="section 4">4</a> 2.1439 <li>〈CDO〉, <a href=#tokendef-cdo title="section 4">4</a> 2.1440 <li>@charset, <a href=#at-ruledef-charset title="section 8.2">8.2</a> 2.1441 -<li>check if three characters would start an identifier, <a href=#check-if-three-characters-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1442 -<li>check if three characters would start a number, <a href=#check-if-three-characters-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1443 -<li>check if two characters are a valid escape, <a href=#check-if-two-characters-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1444 +<li>check if three code points would start an identifier, <a href=#check-if-three-code-points-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1445 +<li>check if three code points would start a number, <a href=#check-if-three-code-points-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1446 +<li>check if two code points are a valid escape, <a href=#check-if-two-code-points-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1447 +<li>code point, <a href=#code-point title="section 4.2">4.2</a> 2.1448 <li>〈colon〉, <a href=#tokendef-colon title="section 4">4</a> 2.1449 <li>〈column〉, <a href=#tokendef-column title="section 4">4</a> 2.1450 <li>〈comma〉, <a href=#tokendef-comma title="section 4">4</a> 2.1451 @@ -3222,7 +3231,7 @@ 2.1452 <li>Consume a list of rules, <a href=#consume-a-list-of-rules0 title="section 5.4.1">5.4.1</a> 2.1453 <li>Consume a name, <a href=#consume-a-name0 title="section 4.3.11">4.3.11</a> 2.1454 <li>Consume an at-rule, <a href=#consume-an-at-rule0 title="section 5.4.2">5.4.2</a> 2.1455 -<li>Consume an escaped character, <a href=#consume-an-escaped-character0 title="section 4.3.7">4.3.7</a> 2.1456 +<li>consume an escaped code point, <a href=#consume-an-escaped-code-point0 title="section 4.3.7">4.3.7</a> 2.1457 <li>Consume an ident-like token, <a href=#consume-an-ident-like-token0 title="section 4.3.3">4.3.3</a> 2.1458 <li>Consume a number, <a href=#consume-a-number0 title="section 4.3.12">4.3.12</a> 2.1459 <li>Consume a numeric token, <a href=#consume-a-numeric-token0 title="section 4.3.2">4.3.2</a> 2.1460 @@ -3235,7 +3244,7 @@ 2.1461 <li>consume the next input token, <a href=#consume-the-next-input-token title="section 5.2">5.2</a> 2.1462 <li>Consume the remnants of a bad url, <a href=#consume-the-remnants-of-a-bad-url0 title="section 4.3.14">4.3.14</a> 2.1463 <li>Convert a string to a number, <a href=#convert-a-string-to-a-number0 title="section 4.3.13">4.3.13</a> 2.1464 -<li>current input character, <a href=#current-input-character title="section 4.2">4.2</a> 2.1465 +<li>current input code point, <a href=#current-input-code-point title="section 4.2">4.2</a> 2.1466 <li>current input token, <a href=#current-input-token title="section 5.2">5.2</a> 2.1467 <li>〈dash-match〉, <a href=#tokendef-dash-match title="section 4">4</a> 2.1468 <li><dashndashdigit-ident>, <a href=#typedef-dashndashdigit-ident title="section 6.2">6.2</a> 2.1469 @@ -3250,7 +3259,7 @@ 2.1470 <li>ending token, <a href=#ending-token title="section 5.4.7">5.4.7</a> 2.1471 <li>end of the range, <a href=#end-of-the-range title="section 4.3.15">4.3.15</a> 2.1472 <li>〈EOF〉, <a href=#tokendef-eof title="section 5.2">5.2</a> 2.1473 -<li>EOF character, <a href=#eof-character title="section 4.2">4.2</a> 2.1474 +<li>EOF code point, <a href=#eof-code-point title="section 4.2">4.2</a> 2.1475 <li>escaping, <a href=#escaping0 title="section 2.1">2.1</a> 2.1476 <li>〈function〉, <a href=#tokendef-function title="section 4">4</a> 2.1477 <li>function, <a href=#function title="section 5">5</a> 2.1478 @@ -3262,18 +3271,18 @@ 2.1479 <li><integer>, <a href=#typedef-integer title="section 6.2">6.2</a> 2.1480 <li>letter, <a href=#letter title="section 4.2">4.2</a> 2.1481 <li>lowercase letter, <a href=#lowercase-letter title="section 4.2">4.2</a> 2.1482 -<li>maximum allowed codepoint, <a href=#maximum-allowed-codepoint title="section 4.2">4.2</a> 2.1483 -<li>name character, <a href=#name-character title="section 4.2">4.2</a> 2.1484 -<li>name-start character, <a href=#name-start-character title="section 4.2">4.2</a> 2.1485 +<li>maximum allowed code point, <a href=#maximum-allowed-code-point title="section 4.2">4.2</a> 2.1486 +<li>name code point, <a href=#name-code-point title="section 4.2">4.2</a> 2.1487 +<li>name-start code point, <a href=#name-start-code-point title="section 4.2">4.2</a> 2.1488 <li><ndashdigit-dimension>, <a href=#typedef-ndashdigit-dimension title="section 6.2">6.2</a> 2.1489 <li><ndashdigit-ident>, <a href=#typedef-ndashdigit-ident title="section 6.2">6.2</a> 2.1490 <li><ndash-dimension>, <a href=#typedef-ndash-dimension title="section 6.2">6.2</a> 2.1491 <li><n-dimension>, <a href=#typedef-n-dimension title="section 6.2">6.2</a> 2.1492 <li>newline, <a href=#newline title="section 4.2">4.2</a> 2.1493 -<li>next input character, <a href=#next-input-character title="section 4.2">4.2</a> 2.1494 +<li>next input code point, <a href=#next-input-code-point title="section 4.2">4.2</a> 2.1495 <li>next input token, <a href=#next-input-token title="section 5.2">5.2</a> 2.1496 -<li>non-ASCII character, <a href=#non-ascii-character title="section 4.2">4.2</a> 2.1497 -<li>non-printable character, <a href=#non-printable-character title="section 4.2">4.2</a> 2.1498 +<li>non-ASCII code point, <a href=#non-ascii-code-point title="section 4.2">4.2</a> 2.1499 +<li>non-printable code point, <a href=#non-printable-code-point title="section 4.2">4.2</a> 2.1500 <li>〈number〉, <a href=#tokendef-number title="section 4">4</a> 2.1501 <li>Parse a component value, <a href=#parse-a-component-value0 title="section 5.3.6">5.3.6</a> 2.1502 <li>Parse a declaration, <a href=#parse-a-declaration0 title="section 5.3.4">5.3.4</a> 2.1503 @@ -3287,7 +3296,7 @@ 2.1504 <li>〈prefix-match〉, <a href=#tokendef-prefix-match title="section 4">4</a> 2.1505 <li>preserved tokens, <a href=#preserved-tokens title="section 5">5</a> 2.1506 <li>qualified rule, <a href=#qualified-rule title="section 5">5</a> 2.1507 -<li>reconsume the current input character, <a href=#reconsume-the-current-input-character title="section 4.2">4.2</a> 2.1508 +<li>reconsume the current input code point, <a href=#reconsume-the-current-input-code-point title="section 4.2">4.2</a> 2.1509 <li>reconsume the current input token, <a href=#reconsume-the-current-input-token title="section 5.2">5.2</a> 2.1510 <li><rule-list>, <a href=#typedef-rule-list title="section 7.1">7.1</a> 2.1511 <li>〈semicolon〉, <a href=#tokendef-semicolon title="section 4">4</a> 2.1512 @@ -3296,11 +3305,11 @@ 2.1513 <li><signless-integer>, <a href=#typedef-signless-integer title="section 6.2">6.2</a> 2.1514 <li>simple block, <a href=#simple-block title="section 5">5</a> 2.1515 <li>start of the range, <a href=#start-of-the-range title="section 4.3.15">4.3.15</a> 2.1516 -<li>starts with an identifier, <a href=#check-if-three-characters-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1517 -<li>starts with a number, <a href=#check-if-three-characters-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1518 -<li>starts with a valid escape, <a href=#check-if-two-characters-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1519 -<li>start with an identifier, <a href=#check-if-three-characters-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1520 -<li>start with a number, <a href=#check-if-three-characters-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1521 +<li>starts with an identifier, <a href=#check-if-three-code-points-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1522 +<li>starts with a number, <a href=#check-if-three-code-points-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1523 +<li>starts with a valid escape, <a href=#check-if-two-code-points-are-a-valid-escape0 title="section 4.3.8">4.3.8</a> 2.1524 +<li>start with an identifier, <a href=#check-if-three-code-points-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1525 +<li>start with a number, <a href=#check-if-three-code-points-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1526 <li>〈string〉, <a href=#tokendef-string title="section 4">4</a> 2.1527 <li>style rule, <a href=#style-rule title="section 8.1">8.1</a> 2.1528 <li><stylesheet>, <a href=#typedef-stylesheet title="section 7.1">7.1</a> 2.1529 @@ -3312,8 +3321,8 @@ 2.1530 <li>〈url〉, <a href=#tokendef-url title="section 4">4</a> 2.1531 <li>〈whitespace〉, <a href=#tokendef-whitespace title="section 4">4</a> 2.1532 <li>whitespace, <a href=#whitespace title="section 4.2">4.2</a> 2.1533 -<li>would start an identifier, <a href=#check-if-three-characters-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1534 -<li>would start a number, <a href=#check-if-three-characters-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1535 +<li>would start an identifier, <a href=#check-if-three-code-points-would-start-an-identifier0 title="section 4.3.9">4.3.9</a> 2.1536 +<li>would start a number, <a href=#check-if-three-code-points-would-start-a-number0 title="section 4.3.10">4.3.10</a> 2.1537 </ul></div> 2.1538 2.1539 <h2 class="no-num no-ref" id=property-index><span class=content>
3.1 --- a/css-syntax/Overview.src.html Wed Aug 14 11:35:33 2013 +0200 3.2 +++ b/css-syntax/Overview.src.html Wed Aug 14 18:26:25 2013 +0100 3.3 @@ -22,7 +22,7 @@ 3.4 and other things which use CSS syntax 3.5 (such as the HTML <code>style</code> attribute). 3.6 3.7 - It defines algorithms for converting a stream of codepoints 3.8 + It defines algorithms for converting a stream of Unicode <a>code points</a> 3.9 (in other words, text) 3.10 into a stream of CSS tokens, 3.11 and then further into CSS objects 3.12 @@ -74,7 +74,7 @@ 3.13 </div> 3.14 3.15 At-rules are all different, but they have a basic structure in common. 3.16 - They start with an "@" character followed by their name. 3.17 + They start with an "@" <a>code point</a> followed by their name. 3.18 Some <a>at-rules</a> are simple statements, 3.19 with their name followed by more CSS values to specify their behavior, 3.20 and finally ended by a semicolon. 3.21 @@ -123,7 +123,7 @@ 3.22 Property names and <a>at-rule</a> names are always <b>identifiers</b>, 3.23 which have to start with a letter or a hyphen followed by a letter, 3.24 and then can contain letters, numbers, hyphens, or underscores. 3.25 - You can include any character at all, 3.26 + You can include any <a>code point</a> at all, 3.27 even ones that CSS uses in its syntax, 3.28 by <a>escaping</a> it. 3.29 3.30 @@ -136,18 +136,18 @@ 3.31 3.32 <em>This section is not normative.</em> 3.33 3.34 - Any Unicode character can be included in an identifier or quoted string 3.35 + Any Unicode <a>code point</a> can be included in an identifier or quoted string 3.36 by <dfn>escaping</dfn> it. 3.37 CSS escape sequences start with a backslash (\), and continue with: 3.38 3.39 <ul> 3.40 <li> 3.41 - Any Unicode character that is not a <a>hex digits</a> or a <a>newline</a>. 3.42 - The escape sequence is replaced by that character. 3.43 + Any Unicode <a>code point</a> that is not a <a>hex digits</a> or a <a>newline</a>. 3.44 + The escape sequence is replaced by that <a>code point</a>. 3.45 <li> 3.46 Or one to six <a>hex digits</a>, followed by an optional <a>whitespace</a>. 3.47 - The escape sequence is replaced by the Unicode character 3.48 - whose codepoint number is given by the hexadecimal digits. 3.49 + The escape sequence is replaced by the Unicode <a>code point</a> 3.50 + whose value is given by the hexadecimal digits. 3.51 This optional whitespace allow hexadecimal escape sequences 3.52 to be followed by "real" hex digits. 3.53 3.54 @@ -244,7 +244,7 @@ 3.55 <h3> 3.56 Overview of the Parsing Model</h3> 3.57 3.58 - The input to the CSS parsing process consists of a stream of Unicode code points, 3.59 + The input to the CSS parsing process consists of a stream of Unicode <a>code points</a>, 3.60 which is passed through a tokenization stage followed by a tree construction stage. 3.61 The output is a CSSStyleSheet object. 3.62 3.63 @@ -255,12 +255,13 @@ 3.64 The input byte stream</h3> 3.65 3.66 When parsing a stylesheet, 3.67 - the stream of Unicode code points that comprises the input to the tokenization stage may be initially seen by the user agent as a stream of bytes 3.68 + the stream of Unicode <a>code points</a> that comprises the input to the tokenization stage 3.69 + may be initially seen by the user agent as a stream of bytes 3.70 (typically coming over the network or from the local file system). 3.71 - The bytes encode the actual characters according to a particular character encoding, 3.72 - which the user agent must use to decode the bytes into characters. 3.73 - 3.74 - To decode the stream of bytes into a stream of characters, 3.75 + The bytes encode the <a>code points</a> according to a particular character encoding, 3.76 + which the user agent must use to decode the bytes into <a>code points</a>. 3.77 + 3.78 + To decode the stream of bytes into a stream of <a>code points</a>, 3.79 UAs must follow these steps. 3.80 3.81 The algorithms to <a href="http://encoding.spec.whatwg.org/#concept-encoding-get"><dfn>get an encoding</dfn></a> 3.82 @@ -329,21 +330,21 @@ 3.83 <h3> 3.84 Preprocessing the input stream</h3> 3.85 3.86 - The input stream consists of the characters (individual unicode code-points) 3.87 + The input stream consists of the <a>code points</a> 3.88 pushed into it as the input byte stream is decoded. 3.89 3.90 Before sending the input stream to the tokenizer, 3.91 - implementations must make the following character substitutions: 3.92 + implementations must make the following <a>code point</a> substitutions: 3.93 3.94 <ul> 3.95 <li> 3.96 - Replace any U+000D CARRIAGE RETURN (CR) characters, 3.97 - U+000C FORM FEED (FF) characters, 3.98 + Replace any U+000D CARRIAGE RETURN (CR) <a>code point</a>, 3.99 + U+000C FORM FEED (FF) <a>code point</a>, 3.100 or pairs of U+000D CARRIAGE RETURN (CR) followed by U+000A LINE FEED (LF) 3.101 - by a single U+000A LINE FEED (LF) character. 3.102 + by a single U+000A LINE FEED (LF) <a>code point</a>. 3.103 3.104 <li> 3.105 - Replace any U+0000 NULL characters with U+FFFD REPLACEMENT CHARACTER (�). 3.106 + Replace any U+0000 NULL <a>code point</a> with U+FFFD REPLACEMENT CHARACTER (�). 3.107 </ul> 3.108 3.109 3.110 @@ -351,13 +352,13 @@ 3.111 Tokenization</h2> 3.112 3.113 Implementations must act as if they used the following algorithms to tokenize CSS. 3.114 - To transform a stream of characters into a stream of tokens, 3.115 + To transform a stream of <a>code points</a> into a stream of tokens, 3.116 repeatedly <a>consume a token</a> 3.117 until an <<<EOF>>> is reached, 3.118 collecting the returned tokens into a stream. 3.119 Each call to the <a>consume a token</a> algorithm 3.120 returns a single token, 3.121 - so it can also be used "on-demand" to tokenize a stream of characters <em>during</em> parsing, 3.122 + so it can also be used "on-demand" to tokenize a stream of <a>code points</a> <em>during</em> parsing, 3.123 if so desired. 3.124 3.125 The output of the tokenization step is a stream of zero or more of the following tokens: 3.126 @@ -395,26 +396,26 @@ 3.127 3.128 <ul> 3.129 <li> 3.130 - <<<ident>>>, <<<function>>>, <<<at-keyword>>>, <<<hash>>>, <<<string>>>, and <<<url>>> tokens have a value composed of zero or more characters. 3.131 + <<<ident>>>, <<<function>>>, <<<at-keyword>>>, <<<hash>>>, <<<string>>>, and <<<url>>> tokens have a value composed of zero or more <a>code points</a>. 3.132 Additionally, hash tokens have a type flag set to either "id" or "unrestricted". The type flag defaults to "unrestricted" if not otherwise set. 3.133 3.134 <li> 3.135 - <<<delim>>> tokens have a value composed of a single character. 3.136 + <<<delim>>> tokens have a value composed of a single <a>code point</a>. 3.137 3.138 <li> 3.139 - <<<number>>>, <<<percentage>>>, and <<<dimension>>> tokens have a representation composed of one or more character, and a numeric value. 3.140 + <<<number>>>, <<<percentage>>>, and <<<dimension>>> tokens have a representation composed of one or more <a>code points</a>, and a numeric value. 3.141 <<<number>>> and <<<dimension>>> tokens additionally have a type flag set to either "integer" or "number". The type flag defaults to "integer" if not otherwise set. 3.142 - <<<dimension>>> tokens additionally have a unit composed of one or more characters. 3.143 + <<<dimension>>> tokens additionally have a unit composed of one or more <a>code points</a>. 3.144 3.145 <li> 3.146 - <<<unicode-range>>> tokens have a range of characters. 3.147 + <<<unicode-range>>> tokens have a range of <a>code points</a>. 3.148 </ul> 3.149 3.150 Note: The type flag of hash tokens is used in the Selectors syntax [[SELECT]]. 3.151 Only hash tokens with the "id" type are valid <a href="http://www.w3.org/TR/selectors/#id-selectors">ID selectors</a>. 3.152 3.153 Note: As a technical note, 3.154 - the tokenizer defined here requires only three characters of look-ahead. 3.155 + the tokenizer defined here requires only three <a>code points</a> of look-ahead. 3.156 The tokens it produces are designed to allow Selectors to be parsed with one token of look-ahead, 3.157 and additional tokens may be added in the future to maintain this invariant. 3.158 3.159 @@ -450,144 +451,151 @@ 3.160 <dt id="newline-diagram">newline</dt> 3.161 <dd><svg class="railroad-diagram" width="173" height="152"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M132 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h8"></path><path d="M104 31h8"></path><rect x="68" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="86" y="35">\n</text></g><path d="M112 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M112 61h0"></path><rect x="60" y="50" width="52" height="22" rx="10" ry="10"></rect><text x="86" y="65">\r\n</text></g><path d="M112 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M60 91h8"></path><path d="M104 91h8"></path><rect x="68" y="80" width="36" height="22" rx="10" ry="10"></rect><text x="86" y="95">\r</text></g><path d="M112 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v70a10 10 0 0 0 10 10"></path><g><path d="M60 121h8"></path><path d="M104 121h8"></path><rect x="68" y="110" width="36" height="22" rx="10" ry="10"></rect><text x="86" y="125">\f</text></g><path d="M112 121a10 10 0 0 0 10 -10v-70a10 10 0 0 1 10 -10"></path></g><path d="M 132 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.162 3.163 - <dt id="whitespace-character-diagram">whitespace character</dt> 3.164 + <dt id="whitespace-diagram">whitespace</dt> 3.165 <dd><svg class="railroad-diagram" width="197" height="122"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M156 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h8"></path><path d="M128 31h8"></path><rect x="68" y="20" width="60" height="22" rx="10" ry="10"></rect><text x="98" y="35">space</text></g><path d="M136 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h20"></path><path d="M116 61h20"></path><rect x="80" y="50" width="36" height="22" rx="10" ry="10"></rect><text x="98" y="65">\t</text></g><path d="M136 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M40 31a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M60 91h0"></path><path d="M136 91h0"></path><rect x="60" y="80" width="76" height="22"></rect><text x="98" y="95">newline</text></g><path d="M136 91a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M 156 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.166 3.167 <dt id="escape-diagram">escape</dt> 3.168 - <dd><svg class="railroad-diagram" width="521" height="122"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect x="50" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="64" y="35">\</text></g><path d="M78 31h10"></path><g><path d="M88 31h0"></path><path d="M480 31h0"></path><path d="M88 31h20"></path><g><path d="M108 31h70"></path><path d="M390 31h70"></path><rect x="178" y="20" width="212" height="22"></rect><text x="284" y="35">not newline or hex digit</text></g><path d="M460 31h20"></path><path d="M88 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M108 61h0"></path><path d="M460 61h0"></path><path d="M108 61h10"></path><g><path d="M118 61h0"></path><path d="M230 61h0"></path><path d="M118 61h10"></path><g><path d="M128 61h0"></path><path d="M220 61h0"></path><rect x="128" y="50" width="92" height="22"></rect><text x="174" y="65">hex digit</text></g><path d="M220 61h10"></path><path d="M128 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 91h9.5"></path><path d="M210.5 91h9.5"></path><text x="174" y="96" class="comment">1-6 times</text></g><path d="M220 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M230 61h10"></path><g><path d="M240 61h0"></path><path d="M460 61h0"></path><path d="M240 61h20"></path><g><path d="M260 61h180"></path></g><path d="M440 61h20"></path><path d="M240 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M260 81h0"></path><path d="M440 81h0"></path><rect x="260" y="70" width="180" height="22"></rect><text x="350" y="85">whitespace character</text></g><path d="M440 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M460 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M 480 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.169 - 3.170 - <dt id="<<<whitespace>>>-diagram"><<<whitespace>>></dt> 3.171 - <dd><svg class="railroad-diagram" width="301" height="71"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M250 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M240 31h0"></path><rect x="60" y="20" width="180" height="22"></rect><text x="150" y="35">whitespace character</text></g><path d="M240 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 51h180"></path></g><path d="M240 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M250 31h10"></path><path d="M 260 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.172 - 3.173 - <dt id="<<<ident>>>-diagram"><<<ident>>></dt> 3.174 + <dd><svg class="railroad-diagram" width="441" height="122"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect x="50" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="64" y="35">\</text></g><path d="M78 31h10"></path><g><path d="M88 31h0"></path><path d="M400 31h0"></path><path d="M88 31h20"></path><g><path d="M108 31h30"></path><path d="M350 31h30"></path><rect x="138" y="20" width="212" height="22"></rect><text x="244" y="35">not newline or hex digit</text></g><path d="M380 31h20"></path><path d="M88 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M108 61h0"></path><path d="M380 61h0"></path><path d="M108 61h10"></path><g><path d="M118 61h0"></path><path d="M230 61h0"></path><path d="M118 61h10"></path><g><path d="M128 61h0"></path><path d="M220 61h0"></path><rect x="128" y="50" width="92" height="22"></rect><text x="174" y="65">hex digit</text></g><path d="M220 61h10"></path><path d="M128 61a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 91h9.5"></path><path d="M210.5 91h9.5"></path><text x="174" y="96" class="comment">1-6 times</text></g><path d="M220 91a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M230 61h10"></path><g><path d="M240 61h0"></path><path d="M380 61h0"></path><path d="M240 61h20"></path><g><path d="M260 61h100"></path></g><path d="M360 61h20"></path><path d="M240 61a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M260 81h0"></path><path d="M360 81h0"></path><rect x="260" y="70" width="100" height="22"></rect><text x="310" y="85">whitespace</text></g><path d="M360 81a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M380 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M 400 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.175 + 3.176 + <dt id="〈whitespace〉-diagram">〈whitespace〉</dt> 3.177 + <dd><svg class="railroad-diagram" width="221" height="71"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M170 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M160 31h0"></path><rect x="60" y="20" width="100" height="22"></rect><text x="110" y="35">whitespace</text></g><path d="M160 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 51h100"></path></g><path d="M160 51a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M170 31h10"></path><path d="M 180 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.178 + 3.179 + <dt id="〈ident〉-diagram">〈ident〉</dt> 3.180 <dd><svg class="railroad-diagram" width="729" height="110"><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 41h0"></path><path d="M108 41h0"></path><path d="M40 41h20"></path><g><path d="M60 41h28"></path></g><path d="M88 41h20"></path><path d="M40 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M88 61h0"></path><rect x="60" y="50" width="28" height="22" rx="10" ry="10"></rect><text x="74" y="65">-</text></g><path d="M88 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M108 41h0"></path><path d="M344 41h0"></path><path d="M108 41h20"></path><g><path d="M128 41h0"></path><path d="M324 41h0"></path><rect x="128" y="30" width="196" height="22"></rect><text x="226" y="45">a-z A-Z _ or non-ASCII</text></g><path d="M324 41h20"></path><path d="M108 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 71h64"></path><path d="M260 71h64"></path><rect x="192" y="60" width="68" height="22"></rect><text x="226" y="75">escape</text></g><path d="M324 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M344 41h0"></path><path d="M688 41h0"></path><path d="M344 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M364 21h304"></path></g><path d="M668 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M344 41h20"></path><g><path d="M364 41h0"></path><path d="M668 41h0"></path><path d="M364 41h10"></path><g><path d="M374 41h0"></path><path d="M658 41h0"></path><path d="M374 41h20"></path><g><path d="M394 41h0"></path><path d="M638 41h0"></path><rect x="394" y="30" width="244" height="22"></rect><text x="516" y="45">a-z A-Z 0-9 _ - or non-ASCII</text></g><path d="M638 41h20"></path><path d="M374 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M394 71h88"></path><path d="M550 71h88"></path><rect x="482" y="60" width="68" height="22"></rect><text x="516" y="75">escape</text></g><path d="M638 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M658 41h10"></path><path d="M374 41a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M374 90h284"></path></g><path d="M658 90a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M668 41h20"></path></g><path d="M 688 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.181 3.182 - <dt id="<<<function>>>-diagram"><<<function>>></dt> 3.183 - <dd><svg class="railroad-diagram" width="225" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M126 31h0"></path><rect x="50" y="20" width="76" height="22"></rect><text x="88" y="35"><<<ident>>></text></g><path d="M126 31h10"></path><path d="M136 31h10"></path><g><path d="M146 31h0"></path><path d="M174 31h0"></path><rect x="146" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="160" y="35">(</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.184 - 3.185 - <dt id="<<<at-keyword>>>-diagram"><<<at-keyword>>></dt> 3.186 - <dd><svg class="railroad-diagram" width="225" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect x="50" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="64" y="35">@</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M174 31h0"></path><rect x="98" y="20" width="76" height="22"></rect><text x="136" y="35"><<<ident>>></text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.187 - 3.188 - <dt id="<<<hash>>>-diagram"><<<hash>>></dt> 3.189 + <dt id="〈function〉-diagram">〈function〉</dt> 3.190 + <dd><svg class="railroad-diagram" width="225" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M126 31h0"></path><rect x="50" y="20" width="76" height="22"></rect><text x="88" y="35">〈ident〉</text></g><path d="M126 31h10"></path><path d="M136 31h10"></path><g><path d="M146 31h0"></path><path d="M174 31h0"></path><rect x="146" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="160" y="35">(</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.191 + 3.192 + <dt id="〈at-keyword〉-diagram">〈at-keyword〉</dt> 3.193 + <dd><svg class="railroad-diagram" width="225" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect x="50" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="64" y="35">@</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M174 31h0"></path><rect x="98" y="20" width="76" height="22"></rect><text x="136" y="35">〈ident〉</text></g><path d="M174 31h10"></path><path d="M 184 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.194 + 3.195 + <dt id="〈hash〉-diagram">〈hash〉</dt> 3.196 <dd><svg class="railroad-diagram" width="453" height="100"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M78 31h0"></path><rect x="50" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="64" y="35">#</text></g><path d="M78 31h10"></path><path d="M88 31h10"></path><g><path d="M98 31h0"></path><path d="M402 31h0"></path><path d="M98 31h10"></path><g><path d="M108 31h0"></path><path d="M392 31h0"></path><path d="M108 31h20"></path><g><path d="M128 31h0"></path><path d="M372 31h0"></path><rect x="128" y="20" width="244" height="22"></rect><text x="250" y="35">a-z A-Z 0-9 _ - or non-ASCII</text></g><path d="M372 31h20"></path><path d="M108 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M128 61h88"></path><path d="M284 61h88"></path><rect x="216" y="50" width="68" height="22"></rect><text x="250" y="65">escape</text></g><path d="M372 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M392 31h10"></path><path d="M108 31a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M108 80h284"></path></g><path d="M392 80a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M402 31h10"></path><path d="M 412 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.197 3.198 - <dt id="<<<string>>>-diagram"><<<string>>></dt> 3.199 + <dt id="〈string〉-diagram">〈string〉</dt> 3.200 <dd><svg class="railroad-diagram" width="481" height="248"><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 41h0"></path><path d="M440 41h0"></path><path d="M40 41h20"></path><g><path d="M60 41h0"></path><path d="M420 41h0"></path><path d="M60 41h10"></path><g><path d="M70 41h0"></path><path d="M98 41h0"></path><rect x="70" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="84" y="45">"</text></g><path d="M98 41h10"></path><g><path d="M108 41h0"></path><path d="M372 41h0"></path><path d="M108 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M128 21h224"></path></g><path d="M352 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M108 41h20"></path><g><path d="M128 41h0"></path><path d="M352 41h0"></path><path d="M128 41h10"></path><g><path d="M138 41h0"></path><path d="M342 41h0"></path><path d="M138 41h20"></path><g><path d="M158 41h0"></path><path d="M322 41h0"></path><rect x="158" y="30" width="164" height="22"></rect><text x="240" y="45">not " \ or newline</text></g><path d="M322 41h20"></path><path d="M138 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M158 71h48"></path><path d="M274 71h48"></path><rect x="206" y="60" width="68" height="22"></rect><text x="240" y="75">escape</text></g><path d="M322 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M138 41a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M158 101h10"></path><path d="M312 101h10"></path><path d="M168 101h10"></path><g><path d="M178 101h0"></path><path d="M206 101h0"></path><rect x="178" y="90" width="28" height="22" rx="10" ry="10"></rect><text x="192" y="105">\</text></g><path d="M206 101h10"></path><path d="M216 101h10"></path><g><path d="M226 101h0"></path><path d="M302 101h0"></path><rect x="226" y="90" width="76" height="22"></rect><text x="264" y="105">newline</text></g><path d="M302 101h10"></path></g><path d="M322 101a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M342 41h10"></path><path d="M138 41a10 10 0 0 0 -10 10v59a10 10 0 0 0 10 10"></path><g><path d="M138 120h204"></path></g><path d="M342 120a10 10 0 0 0 10 -10v-59a10 10 0 0 0 -10 -10"></path></g><path d="M352 41h20"></path></g><path d="M372 41h10"></path><g><path d="M382 41h0"></path><path d="M410 41h0"></path><rect x="382" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="396" y="45">"</text></g><path d="M410 41h10"></path></g><path d="M420 41h20"></path><path d="M40 41a10 10 0 0 1 10 10v88a10 10 0 0 0 10 10"></path><g><path d="M60 149h0"></path><path d="M420 149h0"></path><path d="M60 149h10"></path><g><path d="M70 149h0"></path><path d="M98 149h0"></path><rect x="70" y="138" width="28" height="22" rx="10" ry="10"></rect><text x="84" y="153">'</text></g><path d="M98 149h10"></path><g><path d="M108 149h0"></path><path d="M372 149h0"></path><path d="M108 149a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M128 129h224"></path></g><path d="M352 129a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M108 149h20"></path><g><path d="M128 149h0"></path><path d="M352 149h0"></path><path d="M128 149h10"></path><g><path d="M138 149h0"></path><path d="M342 149h0"></path><path d="M138 149h20"></path><g><path d="M158 149h0"></path><path d="M322 149h0"></path><rect x="158" y="138" width="164" height="22"></rect><text x="240" y="153">not ' \ or newline</text></g><path d="M322 149h20"></path><path d="M138 149a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M158 179h48"></path><path d="M274 179h48"></path><rect x="206" y="168" width="68" height="22"></rect><text x="240" y="183">escape</text></g><path d="M322 179a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path><path d="M138 149a10 10 0 0 1 10 10v40a10 10 0 0 0 10 10"></path><g><path d="M158 209h10"></path><path d="M312 209h10"></path><path d="M168 209h10"></path><g><path d="M178 209h0"></path><path d="M206 209h0"></path><rect x="178" y="198" width="28" height="22" rx="10" ry="10"></rect><text x="192" y="213">\</text></g><path d="M206 209h10"></path><path d="M216 209h10"></path><g><path d="M226 209h0"></path><path d="M302 209h0"></path><rect x="226" y="198" width="76" height="22"></rect><text x="264" y="213">newline</text></g><path d="M302 209h10"></path></g><path d="M322 209a10 10 0 0 0 10 -10v-40a10 10 0 0 1 10 -10"></path></g><path d="M342 149h10"></path><path d="M138 149a10 10 0 0 0 -10 10v59a10 10 0 0 0 10 10"></path><g><path d="M138 228h204"></path></g><path d="M342 228a10 10 0 0 0 10 -10v-59a10 10 0 0 0 -10 -10"></path></g><path d="M352 149h20"></path></g><path d="M372 149h10"></path><g><path d="M382 149h0"></path><path d="M410 149h0"></path><rect x="382" y="138" width="28" height="22" rx="10" ry="10"></rect><text x="396" y="153">'</text></g><path d="M410 149h10"></path></g><path d="M420 149a10 10 0 0 0 10 -10v-88a10 10 0 0 1 10 -10"></path></g><path d="M 440 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.201 3.202 - <dt id="<<<url>>>-diagram"><<<url>>></dt> 3.203 - <dd><svg class="railroad-diagram" width="829" height="102"><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 41h10"></path><g><path d="M50 41h0"></path><path d="M174 41h0"></path><rect x="50" y="30" width="124" height="22"></rect><text x="112" y="45"><<<ident "url">>></text></g><path d="M174 41h10"></path><path d="M184 41h10"></path><g><path d="M194 41h0"></path><path d="M222 41h0"></path><rect x="194" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="208" y="45">(</text></g><path d="M222 41h10"></path><g><path d="M232 41h0"></path><path d="M388 41h0"></path><path d="M232 41h20"></path><g><path d="M252 41h116"></path></g><path d="M368 41h20"></path><path d="M232 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M252 61h0"></path><path d="M368 61h0"></path><rect x="252" y="50" width="116" height="22"></rect><text x="310" y="65"><<<whitespace>>></text></g><path d="M368 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M388 41h0"></path><path d="M740 41h0"></path><path d="M388 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M408 21h312"></path></g><path d="M720 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M388 41h20"></path><g><path d="M408 41h0"></path><path d="M720 41h0"></path><g><path d="M408 41h0"></path><path d="M564 41h0"></path><path d="M408 41h20"></path><g><path d="M428 41h0"></path><path d="M544 41h0"></path><rect x="428" y="30" width="116" height="22"></rect><text x="486" y="45">url-unquoted</text></g><path d="M544 41h20"></path><path d="M408 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M428 71h24"></path><path d="M520 71h24"></path><rect x="452" y="60" width="68" height="22"></rect><text x="486" y="75">STRING</text></g><path d="M544 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M564 41h0"></path><path d="M720 41h0"></path><path d="M564 41h20"></path><g><path d="M584 41h116"></path></g><path d="M700 41h20"></path><path d="M564 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M584 61h0"></path><path d="M700 61h0"></path><rect x="584" y="50" width="116" height="22"></rect><text x="642" y="65"><<<whitespace>>></text></g><path d="M700 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M720 41h20"></path></g><path d="M740 41h10"></path><g><path d="M750 41h0"></path><path d="M778 41h0"></path><rect x="750" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="764" y="45">)</text></g><path d="M778 41h10"></path><path d="M 788 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.204 + <dt id="〈url〉-diagram">〈url〉</dt> 3.205 + <dd><svg class="railroad-diagram" width="829" height="102"><g transform="translate(.5 .5)"><path d="M 20 31 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 41h10"></path><g><path d="M50 41h0"></path><path d="M174 41h0"></path><rect x="50" y="30" width="124" height="22"></rect><text x="112" y="45">〈ident "url"〉</text></g><path d="M174 41h10"></path><path d="M184 41h10"></path><g><path d="M194 41h0"></path><path d="M222 41h0"></path><rect x="194" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="208" y="45">(</text></g><path d="M222 41h10"></path><g><path d="M232 41h0"></path><path d="M388 41h0"></path><path d="M232 41h20"></path><g><path d="M252 41h116"></path></g><path d="M368 41h20"></path><path d="M232 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M252 61h0"></path><path d="M368 61h0"></path><rect x="252" y="50" width="116" height="22"></rect><text x="310" y="65">〈whitespace〉</text></g><path d="M368 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M388 41h0"></path><path d="M740 41h0"></path><path d="M388 41a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M408 21h312"></path></g><path d="M720 21a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M388 41h20"></path><g><path d="M408 41h0"></path><path d="M720 41h0"></path><g><path d="M408 41h0"></path><path d="M564 41h0"></path><path d="M408 41h20"></path><g><path d="M428 41h0"></path><path d="M544 41h0"></path><rect x="428" y="30" width="116" height="22"></rect><text x="486" y="45">url-unquoted</text></g><path d="M544 41h20"></path><path d="M408 41a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M428 71h24"></path><path d="M520 71h24"></path><rect x="452" y="60" width="68" height="22"></rect><text x="486" y="75">STRING</text></g><path d="M544 71a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M564 41h0"></path><path d="M720 41h0"></path><path d="M564 41h20"></path><g><path d="M584 41h116"></path></g><path d="M700 41h20"></path><path d="M564 41a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M584 61h0"></path><path d="M700 61h0"></path><rect x="584" y="50" width="116" height="22"></rect><text x="642" y="65">〈whitespace〉</text></g><path d="M700 61a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g></g><path d="M720 41h20"></path></g><path d="M740 41h10"></path><g><path d="M750 41h0"></path><path d="M778 41h0"></path><rect x="750" y="30" width="28" height="22" rx="10" ry="10"></rect><text x="764" y="45">)</text></g><path d="M778 41h10"></path><path d="M 788 41 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.206 3.207 <dt id="url-unquoted-diagram">url-unquoted</dt> 3.208 <dd><svg class="railroad-diagram" width="509" height="100"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M458 31h0"></path><path d="M50 31h10"></path><g><path d="M60 31h0"></path><path d="M448 31h0"></path><path d="M60 31h20"></path><g><path d="M80 31h0"></path><path d="M428 31h0"></path><rect x="80" y="20" width="348" height="22"></rect><text x="254" y="35">not " ' ( ) \ whitespace or non-printable</text></g><path d="M428 31h20"></path><path d="M60 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M80 61h140"></path><path d="M288 61h140"></path><rect x="220" y="50" width="68" height="22"></rect><text x="254" y="65">escape</text></g><path d="M428 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M448 31h10"></path><path d="M60 31a10 10 0 0 0 -10 10v29a10 10 0 0 0 10 10"></path><g><path d="M60 80h388"></path></g><path d="M448 80a10 10 0 0 0 10 -10v-29a10 10 0 0 0 -10 -10"></path></g><path d="M458 31h10"></path><path d="M 468 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.209 3.210 - <dt id="<<<number>>>-diagram"><<<number>>></dt> 3.211 + <dt id="〈number〉-diagram">〈number〉</dt> 3.212 <dd><svg class="railroad-diagram" width="713" height="179"><g transform="translate(.5 .5)"><path d="M 20 50 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 60h0"></path><path d="M108 60h0"></path><path d="M40 60a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M60 40h0"></path><path d="M88 40h0"></path><rect x="60" y="29" width="28" height="22" rx="10" ry="10"></rect><text x="74" y="44">+</text></g><path d="M88 40a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M40 60h20"></path><g><path d="M60 60h28"></path></g><path d="M88 60h20"></path><path d="M40 60a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M60 80h0"></path><path d="M88 80h0"></path><rect x="60" y="69" width="28" height="22" rx="10" ry="10"></rect><text x="74" y="84">-</text></g><path d="M88 80a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><g><path d="M108 60h0"></path><path d="M396 60h0"></path><path d="M108 60h20"></path><g><path d="M128 60h0"></path><path d="M376 60h0"></path><path d="M128 60h10"></path><g><path d="M138 60h0"></path><path d="M218 60h0"></path><path d="M138 60h10"></path><g><path d="M148 60h0"></path><path d="M208 60h0"></path><rect x="148" y="49" width="60" height="22"></rect><text x="178" y="64">digit</text></g><path d="M208 60h10"></path><path d="M148 60a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M148 80h60"></path></g><path d="M208 80a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M218 60h10"></path><path d="M228 60h10"></path><g><path d="M238 60h0"></path><path d="M266 60h0"></path><rect x="238" y="49" width="28" height="22" rx="10" ry="10"></rect><text x="252" y="64">.</text></g><path d="M266 60h10"></path><path d="M276 60h10"></path><g><path d="M286 60h0"></path><path d="M366 60h0"></path><path d="M286 60h10"></path><g><path d="M296 60h0"></path><path d="M356 60h0"></path><rect x="296" y="49" width="60" height="22"></rect><text x="326" y="64">digit</text></g><path d="M356 60h10"></path><path d="M296 60a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M296 80h60"></path></g><path d="M356 80a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M366 60h10"></path></g><path d="M376 60h20"></path><path d="M108 60a10 10 0 0 1 10 10v19a10 10 0 0 0 10 10"></path><g><path d="M128 99h84"></path><path d="M292 99h84"></path><path d="M212 99h10"></path><g><path d="M222 99h0"></path><path d="M282 99h0"></path><rect x="222" y="88" width="60" height="22"></rect><text x="252" y="103">digit</text></g><path d="M282 99h10"></path><path d="M222 99a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M222 119h60"></path></g><path d="M282 119a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M376 99a10 10 0 0 0 10 -10v-19a10 10 0 0 1 10 -10"></path><path d="M108 60a10 10 0 0 1 10 10v58a10 10 0 0 0 10 10"></path><g><path d="M128 138h50"></path><path d="M326 138h50"></path><path d="M178 138h10"></path><g><path d="M188 138h0"></path><path d="M216 138h0"></path><rect x="188" y="127" width="28" height="22" rx="10" ry="10"></rect><text x="202" y="142">.</text></g><path d="M216 138h10"></path><path d="M226 138h10"></path><g><path d="M236 138h0"></path><path d="M316 138h0"></path><path d="M236 138h10"></path><g><path d="M246 138h0"></path><path d="M306 138h0"></path><rect x="246" y="127" width="60" height="22"></rect><text x="276" y="142">digit</text></g><path d="M306 138h10"></path><path d="M246 138a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M246 158h60"></path></g><path d="M306 158a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M316 138h10"></path></g><path d="M376 138a10 10 0 0 0 10 -10v-58a10 10 0 0 1 10 -10"></path></g><g><path d="M396 60h0"></path><path d="M672 60h0"></path><path d="M396 60h20"></path><g><path d="M416 60h236"></path></g><path d="M652 60h20"></path><path d="M396 60a10 10 0 0 1 10 10v28a10 10 0 0 0 10 10"></path><g><path d="M416 108h0"></path><path d="M652 108h0"></path><g><path d="M416 108h0"></path><path d="M484 108h0"></path><path d="M416 108h20"></path><g><path d="M436 108h0"></path><path d="M464 108h0"></path><rect x="436" y="97" width="28" height="22" rx="10" ry="10"></rect><text x="450" y="112">e</text></g><path d="M464 108h20"></path><path d="M416 108a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M436 138h0"></path><path d="M464 138h0"></path><rect x="436" y="127" width="28" height="22" rx="10" ry="10"></rect><text x="450" y="142">E</text></g><path d="M464 138a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><g><path d="M484 108h0"></path><path d="M552 108h0"></path><path d="M484 108a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M504 88h0"></path><path d="M532 88h0"></path><rect x="504" y="77" width="28" height="22" rx="10" ry="10"></rect><text x="518" y="92">+</text></g><path d="M532 88a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M484 108h20"></path><g><path d="M504 108h28"></path></g><path d="M532 108h20"></path><path d="M484 108a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><g><path d="M504 128h0"></path><path d="M532 128h0"></path><rect x="504" y="117" width="28" height="22" rx="10" ry="10"></rect><text x="518" y="132">-</text></g><path d="M532 128a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path></g><path d="M552 108h10"></path><g><path d="M562 108h0"></path><path d="M642 108h0"></path><path d="M562 108h10"></path><g><path d="M572 108h0"></path><path d="M632 108h0"></path><rect x="572" y="97" width="60" height="22"></rect><text x="602" y="112">digit</text></g><path d="M632 108h10"></path><path d="M572 108a10 10 0 0 0 -10 10v0a10 10 0 0 0 10 10"></path><g><path d="M572 128h60"></path></g><path d="M632 128a10 10 0 0 0 10 -10v0a10 10 0 0 0 -10 -10"></path></g><path d="M642 108h10"></path></g><path d="M652 108a10 10 0 0 0 10 -10v-28a10 10 0 0 1 10 -10"></path></g><path d="M 672 60 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.213 3.214 - <dt id="<<<dimension>>>-diagram"><<<dimension>>></dt> 3.215 - <dd><svg class="railroad-diagram" width="281" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect x="50" y="20" width="84" height="22"></rect><text x="92" y="35"><<<number>>></text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M230 31h0"></path><rect x="154" y="20" width="76" height="22"></rect><text x="192" y="35"><<<ident>>></text></g><path d="M230 31h10"></path><path d="M 240 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.216 - 3.217 - <dt id="<<<percentage>>>-diagram"><<<percentage>>></dt> 3.218 - <dd><svg class="railroad-diagram" width="233" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect x="50" y="20" width="84" height="22"></rect><text x="92" y="35"><<<number>>></text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M182 31h0"></path><rect x="154" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="168" y="35">%</text></g><path d="M182 31h10"></path><path d="M 192 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.219 - 3.220 - <dt id="<<<unicode-range>>>-diagram"><<<unicode-range>>></dt> 3.221 + <dt id="〈dimension〉-diagram">〈dimension〉</dt> 3.222 + <dd><svg class="railroad-diagram" width="281" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect x="50" y="20" width="84" height="22"></rect><text x="92" y="35">〈number〉</text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M230 31h0"></path><rect x="154" y="20" width="76" height="22"></rect><text x="192" y="35">〈ident〉</text></g><path d="M230 31h10"></path><path d="M 240 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.223 + 3.224 + <dt id="〈percentage〉-diagram">〈percentage〉</dt> 3.225 + <dd><svg class="railroad-diagram" width="233" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M134 31h0"></path><rect x="50" y="20" width="84" height="22"></rect><text x="92" y="35">〈number〉</text></g><path d="M134 31h10"></path><path d="M144 31h10"></path><g><path d="M154 31h0"></path><path d="M182 31h0"></path><rect x="154" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="168" y="35">%</text></g><path d="M182 31h10"></path><path d="M 192 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.226 + 3.227 + <dt id="〈unicode-range〉-diagram">〈unicode-range〉</dt> 3.228 <dd><svg class="railroad-diagram" width="600" height="222"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><g><path d="M40 31h0"></path><path d="M108 31h0"></path><path d="M40 31h20"></path><g><path d="M60 31h0"></path><path d="M88 31h0"></path><rect x="60" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="74" y="35">U</text></g><path d="M88 31h20"></path><path d="M40 31a10 10 0 0 1 10 10v10a10 10 0 0 0 10 10"></path><g><path d="M60 61h0"></path><path d="M88 61h0"></path><rect x="60" y="50" width="28" height="22" rx="10" ry="10"></rect><text x="74" y="65">u</text></g><path d="M88 61a10 10 0 0 0 10 -10v-10a10 10 0 0 1 10 -10"></path></g><path d="M108 31h10"></path><g><path d="M118 31h0"></path><path d="M146 31h0"></path><rect x="118" y="20" width="28" height="22" rx="10" ry="10"></rect><text x="132" y="35">+</text></g><path d="M146 31h10"></path><g><path d="M156 31h0"></path><path d="M559 31h0"></path><path d="M156 31h20"></path><g><path d="M176 31h115.5"></path><path d="M423.5 31h115.5"></path><path d="M291.5 31h10"></path><g><path d="M301.5 31h0"></path><path d="M413.5 31h0"></path><path d="M301.5 31h10"></path><g><path d="M311.5 31h0"></path><path d="M403.5 31h0"></path><rect x="311.5" y="20" width="92" height="22"></rect><text x="357.5" y="35">hex digit</text></g><path d="M403.5 31h10"></path><path d="M311.5 31a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M311.5 61h9.5"></path><path d="M394 61h9.5"></path><text x="357.5" y="66" class="comment">1-6 times</text></g><path d="M403.5 61a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M413.5 31h10"></path></g><path d="M539 31h20"></path><path d="M156 31a10 10 0 0 1 10 10v50a10 10 0 0 0 10 10"></path><g><path d="M176 101h0"></path><path d="M539 101h0"></path><g><path d="M176 101h0"></path><path d="M328 101h0"></path><path d="M176 101a10 10 0 0 0 10 -10v0a10 10 0 0 1 10 -10"></path><g><path d="M196 81h112"></path></g><path d="M308 81a10 10 0 0 1 10 10v0a10 10 0 0 0 10 10"></path><path d="M176 101h20"></path><g><path d="M196 101h0"></path><path d="M308 101h0"></path><path d="M196 101h10"></path><g><path d="M206 101h0"></path><path d="M298 101h0"></path><rect x="206" y="90" width="92" height="22"></rect><text x="252" y="105">hex digit</text></g><path d="M298 101h10"></path><path d="M206 101a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M206 131h9.5"></path><path d="M288.5 131h9.5"></path><text x="252" y="136" class="comment">1-5 times</text></g><path d="M298 131a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M308 101h20"></path></g><path d="M328 101h10"></path><g><path d="M338 101h0"></path><path d="M529 101h0"></path><path d="M338 101h10"></path><g><path d="M348 101h71.5"></path><path d="M447.5 101h71.5"></path><rect x="419.5" y="90" width="28" height="22" rx="10" ry="10"></rect><text x="433.5" y="105">?</text></g><path d="M519 101h10"></path><path d="M348 101a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M348 131h0"></path><path d="M519 131h0"></path><text x="433.5" y="136" class="comment">1 to (6 - digits) times</text></g><path d="M519 131a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M529 101h10"></path></g><path d="M539 101a10 10 0 0 0 10 -10v-50a10 10 0 0 1 10 -10"></path><path d="M156 31a10 10 0 0 1 10 10v110a10 10 0 0 0 10 10"></path><g><path d="M176 161h25.5"></path><path d="M513.5 161h25.5"></path><path d="M201.5 161h10"></path><g><path d="M211.5 161h0"></path><path d="M323.5 161h0"></path><path d="M211.5 161h10"></path><g><path d="M221.5 161h0"></path><path d="M313.5 161h0"></path><rect x="221.5" y="150" width="92" height="22"></rect><text x="267.5" y="165">hex digit</text></g><path d="M313.5 161h10"></path><path d="M221.5 161a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M221.5 191h9.5"></path><path d="M304 191h9.5"></path><text x="267.5" y="196" class="comment">1-6 times</text></g><path d="M313.5 191a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M323.5 161h10"></path><path d="M333.5 161h10"></path><g><path d="M343.5 161h0"></path><path d="M371.5 161h0"></path><rect x="343.5" y="150" width="28" height="22" rx="10" ry="10"></rect><text x="357.5" y="165">-</text></g><path d="M371.5 161h10"></path><path d="M381.5 161h10"></path><g><path d="M391.5 161h0"></path><path d="M503.5 161h0"></path><path d="M391.5 161h10"></path><g><path d="M401.5 161h0"></path><path d="M493.5 161h0"></path><rect x="401.5" y="150" width="92" height="22"></rect><text x="447.5" y="165">hex digit</text></g><path d="M493.5 161h10"></path><path d="M401.5 161a10 10 0 0 0 -10 10v10a10 10 0 0 0 10 10"></path><g><path d="M401.5 191h9.5"></path><path d="M484 191h9.5"></path><text x="447.5" y="196" class="comment">1-6 times</text></g><path d="M493.5 191a10 10 0 0 0 10 -10v-10a10 10 0 0 0 -10 -10"></path></g><path d="M503.5 161h10"></path></g><path d="M539 161a10 10 0 0 0 10 -10v-110a10 10 0 0 1 10 -10"></path></g><path d="M 559 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.229 3.230 - <dt id="<<<include-match>>>-diagram"><<<include-match>>></dt> 3.231 + <dt id="〈include-match〉-diagram">〈include-match〉</dt> 3.232 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">~=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.233 3.234 - <dt id="<<<dash-match>>>-diagram"><<<dash-match>>></dt> 3.235 + <dt id="〈dash-match〉-diagram">〈dash-match〉</dt> 3.236 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">|=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.237 3.238 - <dt id="<<<prefix-match>>>-diagram"><<<prefix-match>>></dt> 3.239 + <dt id="〈prefix-match〉-diagram">〈prefix-match〉</dt> 3.240 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">^=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.241 3.242 - <dt id="<<<suffix-match>>>-diagram"><<<suffix-match>>></dt> 3.243 + <dt id="〈suffix-match〉-diagram">〈suffix-match〉</dt> 3.244 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">$=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.245 3.246 - <dt id="<<<substring-match>>>-diagram"><<<substring-match>>></dt> 3.247 + <dt id="〈substring-match〉-diagram">〈substring-match〉</dt> 3.248 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">*=</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.249 3.250 - <dt id="<<<column>>>-diagram"><<<column>>></dt> 3.251 + <dt id="〈column〉-diagram">〈column〉</dt> 3.252 <dd><svg class="railroad-diagram" width="137" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M86 31h0"></path><rect x="50" y="20" width="36" height="22" rx="10" ry="10"></rect><text x="68" y="35">||</text></g><path d="M86 31h10"></path><path d="M 96 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.253 3.254 - <dt id="<<<CDO>>>-diagram"><<<CDO>>></dt> 3.255 + <dt id="〈cdo〉-diagram">〈CDO〉</dt> 3.256 <dd><svg class="railroad-diagram" width="153" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M102 31h0"></path><rect x="50" y="20" width="52" height="22" rx="10" ry="10"></rect><text x="76" y="35"><!--</text></g><path d="M102 31h10"></path><path d="M 112 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.257 3.258 - <dt id="<<<CDC>>>-diagram"><<<CDC>>></dt> 3.259 + <dt id="〈cdc〉-diagram">〈CDC〉</dt> 3.260 <dd><svg class="railroad-diagram" width="145" height="62"><g transform="translate(.5 .5)"><path d="M 20 21 v 20 m 10 -20 v 20 m -10 -10 h 20.5"></path><path d="M40 31h10"></path><g><path d="M50 31h0"></path><path d="M94 31h0"></path><rect x="50" y="20" width="44" height="22" rx="10" ry="10"></rect><text x="72" y="35">--></text></g><path d="M94 31h10"></path><path d="M 104 31 h 20 m -10 -10 v 20 m 10 -20 v 20"></path></g></svg></dd> 3.261 3.262 </dl> 3.263 3.264 + </dl> 3.265 + 3.266 <h3> 3.267 Definitions</h3> 3.268 3.269 This section defines several terms used during the tokenization phase. 3.270 3.271 <dl> 3.272 - <dt><dfn>next input character</dfn> 3.273 + <dt><dfn>code point</dfn> 3.274 <dd> 3.275 - The first character in the input stream that has not yet been consumed. 3.276 - 3.277 - <dt><dfn>current input character</dfn> 3.278 + A <a href="http://unicode.org/glossary/#code_point">Unicode code point</a>. 3.279 + Any value in the Unicode codespace; that is, the range of integers from 0 to (hexadecimal) 10FFFF. 3.280 + 3.281 + <dt><dfn>next input code point</dfn> 3.282 <dd> 3.283 - The last character to have been consumed. 3.284 - 3.285 - <dt><dfn>reconsume the current input character</dfn> 3.286 + The first <a>code point</a> in the input stream that has not yet been consumed. 3.287 + 3.288 + <dt><dfn>current input code point</dfn> 3.289 <dd> 3.290 - Push the <a>current input character</a> back onto the front of the input stream, 3.291 - so that the next time you are instructed to consume the next input character, 3.292 - it will instead reconsume the <a>current input character</a>. 3.293 - 3.294 - <dt><dfn>EOF character</dfn> 3.295 + The last <a>code point</a> to have been consumed. 3.296 + 3.297 + <dt><dfn>reconsume the current input code point</dfn> 3.298 <dd> 3.299 - A conceptual character representing the end of the input stream. 3.300 + Push the <a>current input code point</a> back onto the front of the input stream, 3.301 + so that the next time you are instructed to consume the <a>next input code point</a>, 3.302 + it will instead reconsume the <a>current input code point</a>. 3.303 + 3.304 + <dt><dfn>EOF code point</dfn> 3.305 + <dd> 3.306 + A conceptual <a>code point</a> representing the end of the input stream. 3.307 Whenever the input stream is empty, 3.308 - the <a>next input character</a> is always an EOF character. 3.309 + the <a>next input code point</a> is always an EOF code point. 3.310 3.311 <dt><dfn>digit</dfn> 3.312 <dd> 3.313 - A character between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 3.314 + A <a>code point</a> between U+0030 DIGIT ZERO (0) and U+0039 DIGIT NINE (9). 3.315 3.316 <dt><dfn>hex digit</dfn> 3.317 <dd> 3.318 A <a>digit</a>, 3.319 - or a character between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), 3.320 - or a character between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). 3.321 + or a <a>code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+0046 LATIN CAPITAL LETTER F (F), 3.322 + or a <a>code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+0066 LATIN SMALL LETTER F (f). 3.323 3.324 <dt><dfn>uppercase letter</dfn> 3.325 <dd> 3.326 - A character between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 3.327 + A <a>code point</a> between U+0041 LATIN CAPITAL LETTER A (A) and U+005A LATIN CAPITAL LETTER Z (Z). 3.328 3.329 <dt><dfn>lowercase letter</dfn> 3.330 <dd> 3.331 - A character between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 3.332 + A <a>code point</a> between U+0061 LATIN SMALL LETTER A (a) and U+007A LATIN SMALL LETTER Z (z). 3.333 3.334 <dt><dfn>letter</dfn> 3.335 <dd> 3.336 An <a>uppercase letter</a> 3.337 or a <a>lowercase letter</a>. 3.338 3.339 - <dt><dfn>non-ASCII character</dfn> 3.340 + <dt><dfn>non-ASCII code point</dfn> 3.341 <dd> 3.342 - A character with a codepoint equal to or greater than U+0080 <control>. 3.343 - 3.344 - <dt><dfn>name-start character</dfn> 3.345 + A <a>code point</a> with a value equal to or greater than U+0080 <control>. 3.346 + 3.347 + <dt><dfn>name-start code point</dfn> 3.348 <dd> 3.349 A <a>letter</a>, 3.350 - a <a>non-ASCII character</a>, 3.351 + a <a>non-ASCII code point</a>, 3.352 or U+005F LOW LINE (_). 3.353 3.354 - <dt><dfn>name character</dfn> 3.355 + <dt><dfn>name code point</dfn> 3.356 <dd> 3.357 - A <a>name-start character</a>, 3.358 + A <a>name-start code point</a>, 3.359 A <a>digit</a>, 3.360 or U+002D HYPHEN-MINUS (-). 3.361 3.362 - <dt><dfn>non-printable character</dfn> 3.363 + <dt><dfn>non-printable code point</dfn> 3.364 <dd> 3.365 - A character between U+0000 NULL and U+0008 BACKSPACE, 3.366 + A <a>code point</a> between U+0000 NULL and U+0008 BACKSPACE, 3.367 or U+000B LINE TABULATION, 3.368 - or a character between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, 3.369 + or a <a>code point</a> between U+000E SHIFT OUT and U+001F INFORMATION SEPARATOR ONE, 3.370 or U+007F DELETE. 3.371 3.372 <dt><dfn>newline</dfn> 3.373 @@ -601,23 +609,23 @@ 3.374 <dt><dfn>whitespace</dfn> 3.375 <dd>A <a>newline</a>, U+0009 CHARACTER TABULATION, or U+0020 SPACE. 3.376 3.377 - <dt><dfn>maximum allowed codepoint</dfn> 3.378 - <dd>The greatest codepoint defined by Unicode. This is currently U+10FFFF. 3.379 + <dt><dfn>maximum allowed code point</dfn> 3.380 + <dd>The greatest <a>code point</a> defined by Unicode. This is currently U+10FFFF. 3.381 3.382 </dl> 3.383 3.384 <h3> 3.385 Tokenizer Algorithms</h3> 3.386 3.387 - The algorithms defined in this section transform a stream of characters into a stream of tokens. 3.388 + The algorithms defined in this section transform a stream of <a>code points</a> into a stream of tokens. 3.389 3.390 <h4> 3.391 <dfn>Consume a token</dfn></h4> 3.392 3.393 - This section describes how to <a>consume a token</a> from a stream of characters. 3.394 + This section describes how to <a>consume a token</a> from a stream of <a>code points</a>. 3.395 It will return a single token of any type. 3.396 3.397 - Consume the <a>next input character</a>. 3.398 + Consume the <a>next input code point</a>. 3.399 3.400 <dl> 3.401 <dt><a>whitespace</a> 3.402 @@ -627,13 +635,13 @@ 3.403 3.404 <dt>U+0022 QUOTATION MARK (") 3.405 <dd> 3.406 - <a>Consume a string token</a> with the ending character U+0022 QUOTATION MARK (") 3.407 + <a>Consume a string token</a> with the ending <a>code point</a> U+0022 QUOTATION MARK (") 3.408 and return it. 3.409 3.410 <dt>U+0023 NUMBER SIGN (#) 3.411 <dd> 3.412 - If the <a>next input character</a> is a <a>name character</a> 3.413 - or the <a title="next input character">next two input characters</a> 3.414 + If the <a>next input code point</a> is a <a>name code point</a> 3.415 + or the <a title="next input code point">next two input code points</a> 3.416 <a>are a valid escape</a>, 3.417 then: 3.418 3.419 @@ -642,7 +650,7 @@ 3.420 Create a <<<hash>>>. 3.421 3.422 <li> 3.423 - If the <a title="next input character">next 3 input characters</a> <a>would start an identifier</a>, 3.424 + If the <a title="next input code point">next 3 input code points</a> <a>would start an identifier</a>, 3.425 set the <<<hash>>>’s type flag to "id". 3.426 3.427 <li> 3.428 @@ -655,22 +663,22 @@ 3.429 3.430 Otherwise, 3.431 return a <<<delim>>> 3.432 - with its value set to the <a>current input character</a>. 3.433 + with its value set to the <a>current input code point</a>. 3.434 3.435 <dt>U+0024 DOLLAR SIGN ($) 3.436 <dd> 3.437 - If the <a>next input character</a> is 3.438 + If the <a>next input code point</a> is 3.439 U+003D EQUALS SIGN (=), 3.440 consume it 3.441 and return a <<<suffix-match>>>. 3.442 3.443 Otherwise, 3.444 emit a <<<delim>>> 3.445 - with its value set to the <a>current input character</a>. 3.446 + with its value set to the <a>current input code point</a>. 3.447 3.448 <dt>U+0027 APOSTROPHE (') 3.449 <dd> 3.450 - <a>Consume a string token</a> with the ending character U+0027 APOSTROPHE (') 3.451 + <a>Consume a string token</a> with the ending <a>code point</a> U+0027 APOSTROPHE (') 3.452 and return it. 3.453 3.454 <dt>U+0028 LEFT PARENTHESIS (() 3.455 @@ -683,25 +691,25 @@ 3.456 3.457 <dt>U+002A ASTERISK (*) 3.458 <dd> 3.459 - If the <a>next input character</a> is 3.460 + If the <a>next input code point</a> is 3.461 U+003D EQUALS SIGN (=), 3.462 consume it 3.463 and return a <<<substring-match>>>. 3.464 3.465 Otherwise, 3.466 return a <<<delim>>> 3.467 - with its value set to the <a>current input character</a>. 3.468 + with its value set to the <a>current input code point</a>. 3.469 3.470 <dt>U+002B PLUS SIGN (+) 3.471 <dd> 3.472 If the input stream <a>starts with a number</a>, 3.473 - <a>reconsume the current input character</a>, 3.474 + <a>reconsume the current input code point</a>, 3.475 <a>consume a numeric token</a> 3.476 and return it. 3.477 3.478 Otherwise, 3.479 return a <<<delim>>> 3.480 - with its value set to the <a>current input character</a>. 3.481 + with its value set to the <a>current input code point</a>. 3.482 3.483 <dt>U+002C COMMA (,) 3.484 <dd> 3.485 @@ -710,18 +718,18 @@ 3.486 <dt>U+002D HYPHEN-MINUS (-) 3.487 <dd> 3.488 If the input stream <a>starts with a number</a>, 3.489 - <a>reconsume the current input character</a>, 3.490 + <a>reconsume the current input code point</a>, 3.491 <a>consume a numeric token</a>, 3.492 and return it. 3.493 3.494 Otherwise, 3.495 if the input stream <a>starts with an identifier</a>, 3.496 - <a>reconsume the current input character</a>, 3.497 + <a>reconsume the current input code point</a>, 3.498 <a>consume an ident-like token</a>, 3.499 and return it. 3.500 3.501 Otherwise, 3.502 - if the <a title="next input character">next 2 input characters</a> are 3.503 + if the <a title="next input code point">next 2 input code points</a> are 3.504 U+002D HYPHEN-MINUS 3.505 U+003E GREATER-THAN SIGN 3.506 (->), 3.507 @@ -730,32 +738,32 @@ 3.508 3.509 Otherwise, 3.510 return a <<<delim>>> 3.511 - with its value set to the <a>current input character</a>. 3.512 + with its value set to the <a>current input code point</a>. 3.513 3.514 <dt>U+002E FULL STOP (.) 3.515 <dd> 3.516 If the input stream <a>starts with a number</a>, 3.517 - <a>reconsume the current input character</a>, 3.518 + <a>reconsume the current input code point</a>, 3.519 <a>consume a numeric token</a>, 3.520 and return it. 3.521 3.522 Otherwise, 3.523 return a <<<delim>>> 3.524 - with its value set to the <a>current input character</a>. 3.525 + with its value set to the <a>current input code point</a>. 3.526 3.527 <dt>U+002F SOLIDUS (/) 3.528 <dd> 3.529 - If the <a>next input character</a> is U+002A ASTERISK (*), 3.530 + If the <a>next input code point</a> is U+002A ASTERISK (*), 3.531 consume it 3.532 - and all following characters up to and including 3.533 + and all following <a>code points</a> up to and including 3.534 the first U+002A ASTERISK (*) followed by a U+002F SOLIDUS (/), 3.535 - or up to an EOF character. 3.536 + or up to an EOF code point. 3.537 Then <a>consume a token</a> 3.538 and return it. 3.539 3.540 Otherwise, 3.541 return a <<<delim>>> 3.542 - with its value set to the <a>current input character</a>. 3.543 + with its value set to the <a>current input code point</a>. 3.544 3.545 <dt>U+003A COLON (:) 3.546 <dd> 3.547 @@ -767,7 +775,7 @@ 3.548 3.549 <dt>U+003C LESS-THAN SIGN (<) 3.550 <dd> 3.551 - If the <a title="next input character">next 3 input characters</a> are 3.552 + If the <a title="next input code point">next 3 input code points</a> are 3.553 U+0021 EXCLAMATION MARK 3.554 U+002D HYPHEN-MINUS 3.555 U+002D HYPHEN-MINUS 3.556 @@ -777,11 +785,11 @@ 3.557 3.558 Otherwise, 3.559 return a <<<delim>>> 3.560 - with its value set to the <a>current input character</a>. 3.561 + with its value set to the <a>current input code point</a>. 3.562 3.563 <dt>U+0040 COMMERCIAL AT (@) 3.564 <dd> 3.565 - If the <a title="next input character">next 3 input characters</a> 3.566 + If the <a title="next input code point">next 3 input code points</a> 3.567 <a>would start an identifier</a>, 3.568 <a>consume a name</a>, 3.569 create an <<<at-keyword>>> with its value set to the returned value, 3.570 @@ -789,7 +797,7 @@ 3.571 3.572 Otherwise, 3.573 return a <<<delim>>> 3.574 - with its value set to the <a>current input character</a>. 3.575 + with its value set to the <a>current input code point</a>. 3.576 3.577 <dt>U+005B LEFT SQUARE BRACKET ([) 3.578 <dd> 3.579 @@ -798,14 +806,14 @@ 3.580 <dt>U+005C REVERSE SOLIDUS (\) 3.581 <dd> 3.582 If the input stream <a>starts with a valid escape</a>, 3.583 - <a>reconsume the current input character</a>, 3.584 + <a>reconsume the current input code point</a>, 3.585 <a>consume an ident-like token</a>, 3.586 and return it. 3.587 3.588 Otherwise, 3.589 this is a <a>parse error</a>. 3.590 Return a <<<delim>>> 3.591 - with its value set to the <a>current input character</a>. 3.592 + with its value set to the <a>current input code point</a>. 3.593 3.594 <dt>U+005D RIGHT SQUARE BRACKET (]) 3.595 <dd> 3.596 @@ -813,14 +821,14 @@ 3.597 3.598 <dt>U+005E CIRCUMFLEX ACCENT (^) 3.599 <dd> 3.600 - If the <a>next input character</a> is 3.601 + If the <a>next input code point</a> is 3.602 U+003D EQUALS SIGN (=), 3.603 consume it 3.604 and return a <<<prefix-match>>>. 3.605 3.606 Otherwise, 3.607 return a <<<delim>>> 3.608 - with its value set to the <a>current input character</a>. 3.609 + with its value set to the <a>current input code point</a>. 3.610 3.611 <dt>U+007B LEFT CURLY BRACKET ({) 3.612 <dd> 3.613 @@ -838,53 +846,53 @@ 3.614 <dt>U+0055 LATIN CAPITAL LETTER U (U) 3.615 <dt>U+0075 LATIN SMALL LETTER U (u) 3.616 <dd> 3.617 - If the <a title="next input character">next 2 input character</a> are 3.618 + If the <a title="next input code point">next 2 input code points</a> are 3.619 U+002B PLUS SIGN (+) 3.620 followed by a <a>hex digit</a> 3.621 or U+003F QUESTION MARK (?), 3.622 - consume the <a>next input character</a>. 3.623 + consume the <a>next input code point</a>. 3.624 <span class='note'>Note: don't consume both of them.</span> 3.625 <a>Consume a unicode-range token</a> 3.626 and return it. 3.627 3.628 Otherwise, 3.629 - <a>reconsume the current input character</a>, 3.630 + <a>reconsume the current input code point</a>, 3.631 <a>consume an ident-like token</a>, 3.632 and return it. 3.633 3.634 - <dt><a>name-start character</a> 3.635 + <dt><a>name-start code point</a> 3.636 <dd> 3.637 - <a>Reconsume the current input character</a>, 3.638 + <a>Reconsume the current input code point</a>, 3.639 <a>consume an ident-like token</a>, 3.640 and return it. 3.641 3.642 <dt>U+007C VERTICAL LINE (|) 3.643 <dd> 3.644 - If the <a>next input character</a> is 3.645 + If the <a>next input code point</a> is 3.646 U+003D EQUALS SIGN (=), 3.647 consume it 3.648 and return a <<<dash-match>>>. 3.649 3.650 Otherwise, 3.651 - if the <a>next input character</a> is 3.652 + if the <a>next input code point</a> is 3.653 U+0073 VERTICAL LINE (|), 3.654 consume it 3.655 and return a <<<column>>>. 3.656 3.657 Otherwise, 3.658 return a <<<delim>>> 3.659 - with its value set to the <a>current input character</a>. 3.660 + with its value set to the <a>current input code point</a>. 3.661 3.662 <dt>U+007E TILDE (~) 3.663 <dd> 3.664 - If the <a>next input character</a> is 3.665 + If the <a>next input code point</a> is 3.666 U+003D EQUALS SIGN (=), 3.667 consume it 3.668 and return an <<<include-match>>>. 3.669 3.670 Otherwise, 3.671 return a <<<delim>>> 3.672 - with its value set to the <a>current input character</a>. 3.673 + with its value set to the <a>current input code point</a>. 3.674 3.675 <dt>EOF 3.676 <dd> 3.677 @@ -893,7 +901,7 @@ 3.678 <dt>anything else 3.679 <dd> 3.680 Return a <<<delim>>> 3.681 - with its value set to the <a>current input character</a>. 3.682 + with its value set to the <a>current input code point</a>. 3.683 </dl> 3.684 3.685 3.686 @@ -902,12 +910,12 @@ 3.687 <h4> 3.688 <dfn>Consume a numeric token</dfn></h4> 3.689 3.690 - This section describes how to <a>consume a numeric token</a> from a stream of characters. 3.691 + This section describes how to <a>consume a numeric token</a> from a stream of <a>code points</a>. 3.692 It returns either a <<<number>>>, <<<percentage>>>, or <<<dimension>>>. 3.693 3.694 <a>Consume a number</a>. 3.695 3.696 - If the <a title="next input character">next 3 input characters</a> <a>would start an identifier</a>, 3.697 + If the <a title="next input code point">next 3 input code points</a> <a>would start an identifier</a>, 3.698 then: 3.699 3.700 <ol> 3.701 @@ -921,7 +929,7 @@ 3.702 </ol> 3.703 3.704 Otherwise, 3.705 - if the <a>next input character</a> is U+0025 PERCENTAGE SIGN (%), 3.706 + if the <a>next input code point</a> is U+0025 PERCENTAGE SIGN (%), 3.707 consume it. 3.708 Create a <<<percentage>>> with the same representation and value as the returned number, 3.709 and return it. 3.710 @@ -934,19 +942,19 @@ 3.711 <h4> 3.712 <dfn>Consume an ident-like token</dfn></h4> 3.713 3.714 - This section describes how to <a>consume an ident-like token</a> from a stream of characters. 3.715 + This section describes how to <a>consume an ident-like token</a> from a stream of <a>code points</a>. 3.716 It returns an <<<ident>>>, <<<function>>>, <<<url>>>, or <<<bad-url>>>. 3.717 3.718 <a>Consume a name</a>. 3.719 3.720 If the returned string's value is an <a>ASCII case-insensitive</a> match for "url", 3.721 - and the <a>next input character</a> is U+0028 LEFT PARENTHESIS ((), 3.722 + and the <a>next input code point</a> is U+0028 LEFT PARENTHESIS ((), 3.723 consume it. 3.724 <a>Consume a url token</a>, 3.725 and return it. 3.726 3.727 Otherwise, 3.728 - if the <a>next input character</a> is U+0028 LEFT PARENTHESIS ((), 3.729 + if the <a>next input code point</a> is U+0028 LEFT PARENTHESIS ((), 3.730 consume it. 3.731 Create a <<<function>>> token 3.732 with its value set to the returned string 3.733 @@ -961,18 +969,18 @@ 3.734 <h4> 3.735 <dfn>Consume a string token</dfn></h4> 3.736 3.737 - This section describes how to <a>consume a string token</a> from a stream of characters. 3.738 + This section describes how to <a>consume a string token</a> from a stream of <a>code points</a>. 3.739 It returns either a <<<string>>> or <<<bad-string>>>. 3.740 3.741 - This algorithm must be called with an <var>ending character</var>, 3.742 - which denotes the character that ends the string. 3.743 + This algorithm must be called with an <var>ending code point</var>, 3.744 + which denotes the <a>code point</a> that ends the string. 3.745 3.746 Initially create a <<<string>>> with its value set to the empty string. 3.747 3.748 - Repeatedly consume the <a>next input character</a> from the stream: 3.749 + Repeatedly consume the <a>next input code point</a> from the stream: 3.750 3.751 <dl> 3.752 - <dt><var>ending character</var> 3.753 + <dt><var>ending code point</var> 3.754 <dt>EOF 3.755 <dd> 3.756 Return the <<<string>>>. 3.757 @@ -980,33 +988,33 @@ 3.758 <dt><a>newline</a> 3.759 <dd> 3.760 This is a <a>parse error</a>. 3.761 - <a>Reconsume the current input character</a>, 3.762 + <a>Reconsume the current input code point</a>, 3.763 create a <<<bad-string>>>, and return it. 3.764 3.765 <dt>U+005C REVERSE SOLIDUS (\) 3.766 <dd> 3.767 - If the <a>next input character</a> is EOF, 3.768 + If the <a>next input code point</a> is EOF, 3.769 do nothing. 3.770 3.771 Otherwise, 3.772 - if the <a>next input character</a> is a newline, 3.773 + if the <a>next input code point</a> is a newline, 3.774 consume it. 3.775 3.776 Otherwise, 3.777 if the stream <a>starts with a valid escape</a>, 3.778 - <a>consume an escaped character</a> 3.779 - and append the returned character to the <<<string>>>’s value. 3.780 + <a>consume an escaped code point</a> 3.781 + and append the returned <a>code point</a> to the <<<string>>>’s value. 3.782 3.783 <dt>anything else 3.784 <dd> 3.785 - Append the <a>current input character</a> to the <<<string>>>’s value. 3.786 + Append the <a>current input code point</a> to the <<<string>>>’s value. 3.787 </dl> 3.788 3.789 3.790 <h4> 3.791 <dfn>Consume a url token</dfn></h4> 3.792 3.793 - This section describes how to <a>consume a url token</a> from a stream of characters. 3.794 + This section describes how to <a>consume a url token</a> from a stream of <a>code points</a>. 3.795 It returns either a <<<url>>> or a <<<bad-url>>>. 3.796 3.797 Note: This algorithm assumes that the initial "url(" has already been consumed. 3.798 @@ -1021,16 +1029,16 @@ 3.799 Consume as much <a>whitespace</a> as possible. 3.800 3.801 <li> 3.802 - If the <a>next input character</a> is EOF, 3.803 + If the <a>next input code point</a> is EOF, 3.804 return the <<<url>>>. 3.805 3.806 <li> 3.807 - If the <a>next input character</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 3.808 + If the <a>next input code point</a> is a U+0022 QUOTATION MARK (") or U+0027 APOSTROPHE ('), 3.809 then: 3.810 3.811 <ol> 3.812 <li> 3.813 - <a>Consume a string token</a> with the <a>current input character</a> as the ending character. 3.814 + <a>Consume a string token</a> with the <a>current input code point</a> as the ending code point. 3.815 3.816 <li> 3.817 If a <<<bad-string>>> was returned, 3.818 @@ -1045,7 +1053,7 @@ 3.819 Consume as much <a>whitespace</a> as possible. 3.820 3.821 <li> 3.822 - If the <a>next input character</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 3.823 + If the <a>next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 3.824 consume it and return the <<<url>>>; 3.825 otherwise, 3.826 <a>consume the remnants of a bad url</a>, 3.827 @@ -1054,7 +1062,7 @@ 3.828 </ol> 3.829 3.830 <li> 3.831 - Repeatedly consume the <a>next input character</a> from the stream: 3.832 + Repeatedly consume the <a>next input code point</a> from the stream: 3.833 3.834 <dl> 3.835 <dt>U+0029 RIGHT PARENTHESIS ()) 3.836 @@ -1065,7 +1073,7 @@ 3.837 <dt><a>whitespace</a> 3.838 <dd> 3.839 Consume as much <a>whitespace</a> as possible. 3.840 - If the <a>next input character</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 3.841 + If the <a>next input code point</a> is U+0029 RIGHT PARENTHESIS ()) or EOF, 3.842 consume it and return the <<<url>>>; 3.843 otherwise, 3.844 <a>consume the remnants of a bad url</a>, 3.845 @@ -1075,7 +1083,7 @@ 3.846 <dt>U+0022 QUOTATION MARK (") 3.847 <dt>U+0027 APOSTROPHE (') 3.848 <dt>U+0028 LEFT PARENTHESIS (() 3.849 - <dt><a>non-printable character</a> 3.850 + <dt><a>non-printable code point</a> 3.851 <dd> 3.852 This is a <a>parse error</a>. 3.853 <a>Consume the remnants of a bad url</a>, 3.854 @@ -1085,8 +1093,8 @@ 3.855 <dt>U+005C REVERSE SOLIDUS 3.856 <dd> 3.857 If the stream <a>starts with a valid escape</a>, 3.858 - <a>consume an escaped character</a> 3.859 - and append the returned character to the <<<url>>>’s value. 3.860 + <a>consume an escaped code point</a> 3.861 + and append the returned <a>code point</a> to the <<<url>>>’s value. 3.862 3.863 Otherwise, 3.864 this is a <a>parse error</a>. 3.865 @@ -1096,7 +1104,7 @@ 3.866 3.867 <dt>anything else 3.868 <dd> 3.869 - Append the <a>current input character</a> 3.870 + Append the <a>current input code point</a> 3.871 to the <<<url>>>’s value. 3.872 </dl> 3.873 </ol> 3.874 @@ -1109,7 +1117,7 @@ 3.875 It returns a <<<unicode-range>>> token. 3.876 3.877 Note: This algorithm assumes that the initial "u+" has been consumed, 3.878 - and the next character verified to be a <a>hex digit</a> or a "?". 3.879 + and the next <a>code point</a> verified to be a <a>hex digit</a> or a "?". 3.880 3.881 Execute the following steps in order: 3.882 3.883 @@ -1121,21 +1129,21 @@ 3.884 <li> 3.885 Consume as many <a>hex digits</a> as possible, but no more than 6. 3.886 If less than 6 <a>hex digits</a> were consumed, 3.887 - consume as many U+003F QUESTION MARK (?) characters as possible, 3.888 - but no more than enough to make the total of <a>hex digits</a> and U+003F QUESTION MARK (?) characters equal to 6. 3.889 - 3.890 - If any U+003F QUESTION MARK (?) characters were consumed, 3.891 + consume as many U+003F QUESTION MARK (?) <a>code points</a> as possible, 3.892 + but no more than enough to make the total of <a>hex digits</a> and U+003F QUESTION MARK (?) <a>code points</a> equal to 6. 3.893 + 3.894 + If any U+003F QUESTION MARK (?) <a>code points</a> were consumed, 3.895 then: 3.896 3.897 <ol> 3.898 <li> 3.899 - Interpret the consumed characters as a hexadecimal number, 3.900 - with the U+003F QUESTION MARK (?) characters replaced by U+0030 DIGIT ZERO (0) characters. 3.901 + Interpret the consumed <a>code points</a> as a hexadecimal number, 3.902 + with the U+003F QUESTION MARK (?) <a>code points</a> replaced by U+0030 DIGIT ZERO (0) <a>code points</a>. 3.903 This is the <a>start of the range</a>. 3.904 3.905 <li> 3.906 - Interpret the consumed characters as a hexadecimal number again, 3.907 - with the U+003F QUESTION MARK (?) character replaced by U+0046 LATIN CAPITAL LETTER F (F) characters. 3.908 + Interpret the consumed <a>code points</a> as a hexadecimal number again, 3.909 + with the U+003F QUESTION MARK (?) <a>code point</a> replaced by U+0046 LATIN CAPITAL LETTER F (F) <a>code points</a>. 3.910 This is the <a>end of the range</a>. 3.911 3.912 <li> 3.913 @@ -1147,12 +1155,12 @@ 3.914 This is the <a>start of the range</a>. 3.915 3.916 <li> 3.917 - If the <a title="next input character">next 2 input character</a> are 3.918 + If the <a title="next input code point">next 2 input code point</a> are 3.919 U+002D HYPHEN-MINUS (-) followed by a <a>hex digit</a>, 3.920 then: 3.921 3.922 <ol> 3.923 - <li>Consume the <a>next input character</a>. 3.924 + <li>Consume the <a>next input code point</a>. 3.925 3.926 <li> 3.927 Consume as many <a>hex digits</a> as possible, but no more than 6. 3.928 @@ -1168,129 +1176,129 @@ 3.929 3.930 3.931 <h4> 3.932 -<dfn>Consume an escaped character</dfn></h4> 3.933 - 3.934 - This section describes how to <a>consume an escaped character</a>. 3.935 +<dfn>consume an escaped code point</dfn></h4> 3.936 + 3.937 + This section describes how to <a>consume an escaped code point</a>. 3.938 It assumes that the U+005C REVERSE SOLIDUS (\) has already been consumed 3.939 - and that the next input character has already been verified 3.940 + and that the next input code point has already been verified 3.941 to not be a <a>newline</a> or EOF. 3.942 - It will return a character. 3.943 - 3.944 - Consume the <a>next input character</a>. 3.945 + It will return a <a>code point</a>. 3.946 + 3.947 + Consume the <a>next input code point</a>. 3.948 3.949 <dl> 3.950 <dt><a>hex digit</a> 3.951 <dd> 3.952 Consume as many <a>hex digits</a> as possible, but no more than 5. 3.953 <span class='note'>Note that this means 1-6 hex digits have been consumed in total.</span> 3.954 - If the <a>next input character</a> is 3.955 + If the <a>next input code point</a> is 3.956 <a>whitespace</a>, 3.957 consume it as well. 3.958 Interpret the <a>hex digits</a> as a hexadecimal number. 3.959 If this number is zero, 3.960 or is between U+D800 and U+DFFF inclusive, 3.961 - or is greater than the <a>maximum allowed codepoint</a>, 3.962 + or is greater than the <a>maximum allowed code point</a>, 3.963 return U+FFFD REPLACEMENT CHARACTER (�). 3.964 - Otherwise, return the character with that codepoint. 3.965 + Otherwise, return the <a>code point</a> with that value. 3.966 3.967 <p class=note> 3.968 U+D800 to U+DFFF are the 3.969 <a href="http://www.unicode.org/glossary/#surrogate_code_point">surrogate code points</a>. 3.970 3.971 - <dt>EOF character 3.972 + <dt>EOF code point 3.973 <dd> 3.974 Return U+FFFD REPLACEMENT CHARACTER (�). 3.975 3.976 <dt>anything else 3.977 <dd> 3.978 - Return the <a>current input character</a>. 3.979 + Return the <a>current input code point</a>. 3.980 </dl> 3.981 3.982 3.983 <h4> 3.984 -<dfn title="check if two characters are a valid escape|are a valid escape|starts with a valid escape">Check if two characters are a valid escape</dfn></h4> 3.985 - 3.986 - This section describes how to <a>check if two characters are a valid escape</a>. 3.987 - The algorithm described here can be called explicitly with two characters, 3.988 +<dfn 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</dfn></h4> 3.989 + 3.990 + This section describes how to <a>check if two code points are a valid escape</a>. 3.991 + The algorithm described here can be called explicitly with two <a>code points</a>, 3.992 or can be called with the input stream itself. 3.993 - In the latter case, the two characters in question are 3.994 - the <a>current input character</a> 3.995 - and the <a>next input character</a>, 3.996 + In the latter case, the two <a>code points</a> in question are 3.997 + the <a>current input code point</a> 3.998 + and the <a>next input code point</a>, 3.999 in that order. 3.1000 3.1001 - Note: This algorithm will not consume any additional characters. 3.1002 - 3.1003 - If the first character is not U+005D REVERSE SOLIDUS (\), 3.1004 + Note: This algorithm will not consume any additional <a>code point</a>. 3.1005 + 3.1006 + If the first <a>code point</a> is not U+005D REVERSE SOLIDUS (\), 3.1007 return false. 3.1008 3.1009 Otherwise, 3.1010 - if the second character is a <a>newline</a>, 3.1011 + if the second <a>code point</a> is a <a>newline</a>, 3.1012 return false. 3.1013 3.1014 Otherwise, return true. 3.1015 3.1016 3.1017 <h4> 3.1018 -<dfn title="check if three characters would start an identifier|starts with an identifier|start with an identifier|would start an identifier">Check if three characters would start an identifier</dfn></h4> 3.1019 - 3.1020 - This section describes how to <a>check if three characters would start an identifier</a>. 3.1021 - The algorithm described here can be called explicitly with three characters, 3.1022 +<dfn 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 identifier</dfn></h4> 3.1023 + 3.1024 + This section describes how to <a>check if three code points would start an identifier</a>. 3.1025 + The algorithm described here can be called explicitly with three <a>code points</a>, 3.1026 or can be called with the input stream itself. 3.1027 - In the latter case, the three characters in question are 3.1028 - the <a>current input character</a> 3.1029 - and the <a title="next input character">next two input characters</a>, 3.1030 + In the latter case, the three <a>code points</a> in question are 3.1031 + the <a>current input code point</a> 3.1032 + and the <a title="next input code point">next two input code points</a>, 3.1033 in that order. 3.1034 3.1035 - Note: This algorithm will not consume any additional characters. 3.1036 - 3.1037 - Look at the first character: 3.1038 + Note: This algorithm will not consume any additional <a>code point</a>. 3.1039 + 3.1040 + Look at the first <a>code point</a>: 3.1041 3.1042 <dl> 3.1043 <dt>U+002D HYPHEN-MINUS 3.1044 <dd> 3.1045 - If the second character is a <a>name-start character</a> 3.1046 - or the second and third characters <a>are a valid escape</a>, 3.1047 + If the second <a>code point</a> is a <a>name-start code point</a> 3.1048 + or the second and third <a>code points</a> <a>are a valid escape</a>, 3.1049 return true. 3.1050 Otherwise, return false. 3.1051 3.1052 - <dt><a>name-start character</a> 3.1053 + <dt><a>name-start code point</a> 3.1054 <dd> 3.1055 Return true. 3.1056 3.1057 <dt>U+005C REVERSE SOLIDUS (\) 3.1058 <dd> 3.1059 - If the first and second characters <a>are a valid escape</a>, 3.1060 + If the first and second <a>code points</a> <a>are a valid escape</a>, 3.1061 return true. 3.1062 Otherwise, return false. 3.1063 </dl> 3.1064 3.1065 <h4> 3.1066 -<dfn title="check if three characters would start a number|starts with a number|start with a number|would start a number">Check if three characters would start a number</dfn></h4> 3.1067 - 3.1068 - This section describes how to <a>check if three characters would start a number</a>. 3.1069 - The algorithm described here can be called explicitly with three characters, 3.1070 +<dfn 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</dfn></h4> 3.1071 + 3.1072 + This section describes how to <a>check if three code points would start a number</a>. 3.1073 + The algorithm described here can be called explicitly with three <a>code points</a>, 3.1074 or can be called with the input stream itself. 3.1075 - In the latter case, the three characters in question are 3.1076 - the <a>current input character</a> 3.1077 - and the <a title="next input character">next two input characters</a>, 3.1078 + In the latter case, the three <a>code points</a> in question are 3.1079 + the <a>current input code point</a> 3.1080 + and the <a title="next input code point">next two input code points</a>, 3.1081 in that order. 3.1082 3.1083 - Note: This algorithm will not consume any additional characters. 3.1084 - 3.1085 - Look at the first character: 3.1086 + Note: This algorithm will not consume any additional <a>code points</a>. 3.1087 + 3.1088 + Look at the first <a>code point</a>: 3.1089 3.1090 <dl> 3.1091 <dt>U+002B PLUS SIGN (+) 3.1092 <dt>U+002D HYPHEN-MINUS (-) 3.1093 <dd> 3.1094 - If the second character 3.1095 + If the second <a>code point</a> 3.1096 is a <a>digit</a>, 3.1097 return true. 3.1098 3.1099 Otherwise, 3.1100 - if the second character 3.1101 + if the second <a>code point</a> 3.1102 is a U+002E FULL STOP (.) 3.1103 - and the third character 3.1104 + and the third <a>code point</a> 3.1105 is a <a>digit</a>, 3.1106 return true. 3.1107 3.1108 @@ -1298,7 +1306,7 @@ 3.1109 3.1110 <dt>U+002E FULL STOP (.) 3.1111 <dd> 3.1112 - If the second character 3.1113 + If the second <a>code point</a> 3.1114 is a <a>digit</a>, 3.1115 return true. 3.1116 Otherwise, return false. 3.1117 @@ -1316,29 +1324,29 @@ 3.1118 <h4> 3.1119 <dfn>Consume a name</dfn></h4> 3.1120 3.1121 - This section describes how to <a>consume a name</a> from a stream of characters. 3.1122 + This section describes how to <a>consume a name</a> from a stream of <a>code points</a>. 3.1123 It returns a string containing 3.1124 - the largest name that can be formed from adjacent characters in the stream, starting from the first. 3.1125 - 3.1126 - Note: This algorithm does not do the verification of the first few characters 3.1127 - that are necessary to ensure the returned characters would constitute an <<<ident>>>. 3.1128 + the largest name that can be formed from adjacent <a>code points</a> in the stream, starting from the first. 3.1129 + 3.1130 + Note: This algorithm does not do the verification of the first few <a>code points</a> 3.1131 + that are necessary to ensure the returned <a>code points</a> would constitute an <<<ident>>>. 3.1132 If that is the intended use, 3.1133 ensure that the stream <a>starts with an identifier</a> 3.1134 before calling this algorithm. 3.1135 3.1136 Let <var>result</var> initially be an empty string. 3.1137 3.1138 - Repeatedly consume the <a>next input character</a> from the stream: 3.1139 + Repeatedly consume the <a>next input code point</a> from the stream: 3.1140 3.1141 <dl> 3.1142 - <dt><a>name character</a> 3.1143 + <dt><a>name code point</a> 3.1144 <dd> 3.1145 - Append the character to <var>result</var>. 3.1146 + Append the <a>code point</a> to <var>result</var>. 3.1147 3.1148 <dt>the stream <a>starts with a valid escape</a> 3.1149 <dd> 3.1150 - <a>Consume an escaped character</a>. 3.1151 - Append the returned character to <var>result</var>. 3.1152 + <a>consume an escaped code point</a>. 3.1153 + Append the returned <a>code point</a> to <var>result</var>. 3.1154 3.1155 <dt>anything else 3.1156 <dd> 3.1157 @@ -1349,13 +1357,13 @@ 3.1158 <h4> 3.1159 <dfn>Consume a number</dfn></h4> 3.1160 3.1161 - This section describes how to <a>consume a number</a> from a stream of characters. 3.1162 + This section describes how to <a>consume a number</a> from a stream of <a>code points</a>. 3.1163 It returns a 3-tuple of 3.1164 a string representation, 3.1165 a numeric value, 3.1166 and a type flag which is either "integer" or "number". 3.1167 3.1168 - Note: This algorithm does not do the verification of the first few characters 3.1169 + Note: This algorithm does not do the verification of the first few <a>code points</a> 3.1170 that are necessary to ensure a number can be obtained from the stream. 3.1171 Ensure that the stream <a>starts with a number</a> 3.1172 before calling this algorithm. 3.1173 @@ -1368,15 +1376,15 @@ 3.1174 and <var>type</var> to "integer". 3.1175 3.1176 <li> 3.1177 - If the <a>next input character</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 3.1178 + If the <a>next input code point</a> is U+002B PLUS SIGN (+) or U+002D HYPHEN-MINUS (-), 3.1179 consume it and append it to <var>repr</var>. 3.1180 3.1181 <li> 3.1182 - While the <a>next input character</a> is a <a>digit</a>, 3.1183 + While the <a>next input code point</a> is a <a>digit</a>, 3.1184 consume it and append it to <var>repr</var>. 3.1185 3.1186 <li> 3.1187 - If the <a title="next input character">next 2 input characters</a> are 3.1188 + If the <a title="next input code point">next 2 input code points</a> are 3.1189 U+002E FULL STOP (.) followed by a <a>digit</a>, 3.1190 then: 3.1191 3.1192 @@ -1384,11 +1392,11 @@ 3.1193 <li>Consume them. 3.1194 <li>Append them to <var>repr</var>. 3.1195 <li>Set <var>type</var> to "number". 3.1196 - <li>While the <a>next input character</a> is a <a>digit</a>, consume it and append it to <var>repr</var>. 3.1197 + <li>While the <a>next input code point</a> is a <a>digit</a>, consume it and append it to <var>repr</var>. 3.1198 </ol> 3.1199 3.1200 <li> 3.1201 - If the <a title="next input character">next 2 or 3 input characters</a> are 3.1202 + If the <a title="next input code point">next 2 or 3 input code points</a> are 3.1203 U+0045 LATIN CAPITAL LETTER E (E) or U+0065 LATIN SMALL LETTER E (e), 3.1204 optionally followed by U+002D HYPHEN-MINUS (-) or U+002B PLUS SIGN (+), 3.1205 followed by a <a>digit</a>, 3.1206 @@ -1398,7 +1406,7 @@ 3.1207 <li>Consume them. 3.1208 <li>Append them to <var>repr</var>. 3.1209 <li>Set <var>type</var> to "number". 3.1210 - <li>While the <a>next input character</a> is a <a>digit</a>, consume it and append it to <var>repr</var>. 3.1211 + <li>While the <a>next input code point</a> is a <a>digit</a>, consume it and append it to <var>repr</var>. 3.1212 </ol> 3.1213 3.1214 <li> 3.1215 @@ -1470,13 +1478,13 @@ 3.1216 <h4> 3.1217 <dfn>Consume the remnants of a bad url</dfn></h4> 3.1218 3.1219 - This section describes how to <a>consume the remnants of a bad url</a> from a stream of characters, 3.1220 + This section describes how to <a>consume the remnants of a bad url</a> from a stream of <a>code points</a>, 3.1221 "cleaning up" after the tokenizer realizes that it's in the middle of a <<<bad-url>>> rather than a <<<url>>>. 3.1222 It returns nothing; 3.1223 its sole use is to consume enough of the input stream to reach a recovery point 3.1224 where normal tokenizing can resume. 3.1225 3.1226 - Repeatedly consume the <a>next input character</a> from the stream: 3.1227 + Repeatedly consume the <a>next input code point</a> from the stream: 3.1228 3.1229 <dl> 3.1230 <dt>U+0029 RIGHT PARENTHESIS ()) 3.1231 @@ -1486,7 +1494,7 @@ 3.1232 3.1233 <dt>the input stream <a>starts with a valid escape</a> 3.1234 <dd> 3.1235 - <a>Consume an escaped character</a>. 3.1236 + <a>consume an escaped code point</a>. 3.1237 <span class='note'>This allows an escaped right parenthesis ("\)") to be encountered without ending the <<<bad-url>>>. 3.1238 This is otherwise identical to the "anything else" clause.</span> 3.1239 3.1240 @@ -1500,14 +1508,14 @@ 3.1241 3.1242 This section describes how to set a <<<unicode-range>>>’s range 3.1243 so that the range it describes 3.1244 - is within the supported range of unicode characters. 3.1245 + is within the supported range of unicode <a>code points</a>. 3.1246 3.1247 It assumes that the <dfn>start of the range</dfn> has been defined, 3.1248 the <dfn>end of the range</dfn> might be defined, 3.1249 and both are non-negative integers. 3.1250 3.1251 If the <a>start of the range</a> is greater than 3.1252 - the <a>maximum allowed codepoint</a>, 3.1253 + the <a>maximum allowed code point</a>, 3.1254 the <<<unicode-range>>>’s range is empty. 3.1255 3.1256 If the <a>end of the range</a> is defined, 3.1257 @@ -1516,16 +1524,16 @@ 3.1258 3.1259 If the <a>end of the range</a> is not defined, 3.1260 the <<<unicode-range>>>’s range 3.1261 - is the single character whose codepoint is the <a>start of the range</a>. 3.1262 + is the single <a>code point</a> whose value is the <a>start of the range</a>. 3.1263 3.1264 Otherwise, 3.1265 if the <a>end of the range</a> is greater than 3.1266 - the <a>maximum allowed codepoint</a>, 3.1267 - change it to the <a>maximum allowed codepoint</a>. 3.1268 + the <a>maximum allowed code point</a>, 3.1269 + change it to the <a>maximum allowed code point</a>. 3.1270 The <<<unicode-range>>>’s range 3.1271 - is all characters between 3.1272 - the character whose codepoint is the <a>start of the range</a> 3.1273 - and the character whose codepoint is the <a>end of the range</a>. 3.1274 + is all <a>code points</a> between 3.1275 + the <a>code point</a> whose value is the <a>start of the range</a> 3.1276 + and the <a>code point</a> whose value is the <a>end of the range</a>. 3.1277 3.1278 3.1279 <!-- 3.1280 @@ -1739,11 +1747,11 @@ 3.1281 <dd> 3.1282 When two strings are to be matched ASCII case-insensitively, 3.1283 temporarily convert both of them to ASCII lower-case form 3.1284 - by adding 32 (0x20) to the value of each codepoint between 3.1285 + by adding 32 (0x20) to the value of each <a>code point</a> between 3.1286 U+0041 LATIN CAPITAL LETTER A (A) 3.1287 and U+005A LATIN CAPITAL LETTER Z (Z), 3.1288 inclusive, 3.1289 - and then compare them on a codepoint-by-codepoint basis. 3.1290 + and check if this results in identical sequences of <a>code point</a>. 3.1291 </dl> 3.1292 3.1293 3.1294 @@ -1757,7 +1765,7 @@ 3.1295 but they may also be invoked on a string; 3.1296 if so, 3.1297 first perform <a href="#preprocessing-the-input-stream">input preprocessing</a> 3.1298 - to produce a character stream, 3.1299 + to produce a <a>code point</a> stream, 3.1300 then perform <a href="#tokenization">tokenization</a> 3.1301 to produce a token stream. 3.1302 3.1303 @@ -1974,7 +1982,7 @@ 3.1304 3.1305 These algorithms may be called with a list of either tokens or of component values. 3.1306 (The difference being that some tokens are replaced by <a>functions</a> and <a>simple blocks</a> in a list of component values.) 3.1307 - Similar to how the input stream returned EOF characters to represent when it was empty during the tokenization stage, 3.1308 + Similar to how the input stream returned EOF code points to represent when it was empty during the tokenization stage, 3.1309 the lists in this stage must return an <<<EOF>>> when the next token is requested but they are empty. 3.1310 3.1311 An algorithm may be invoked with a specific list, 3.1312 @@ -2441,13 +2449,13 @@ 3.1313 <dd> 3.1314 <var>A</var> is the dimension's value or 1, respectively. 3.1315 <var>B</var> is the dimension's unit or ident's value, respectively, 3.1316 - with the first character removed and the remainder interpreted as a base-10 number. 3.1317 + with the first <a>code point</a> removed and the remainder interpreted as a base-10 number. 3.1318 <span class=note>B is negative.</span> 3.1319 3.1320 <dt><code><var><dashndashdigit-ident></var></code> 3.1321 <dd> 3.1322 <var>A</var> is -1. 3.1323 - <var>B</var> is the ident's value, with the first two characters removed and the remainder interpreted as a base-10 number. 3.1324 + <var>B</var> is the ident's value, with the first two <a>code points</a> removed and the remainder interpreted as a base-10 number. 3.1325 <span class=note>B is negative.</span> 3.1326 3.1327 <dt><code><var><n-dimension></var> <var><signed-integer></var></code> 3.1328 @@ -2505,7 +2513,7 @@ 3.1329 and does not match corresponding grammar definitions. 3.1330 3.1331 <<<delim>>>s are written with their value enclosed in single quotes. 3.1332 - For example, a <<<delim>>> containing the "+" character is written as <code>'+'</code>. 3.1333 + For example, a <<<delim>>> containing the "+" <a>code point</a> is written as <code>'+'</code>. 3.1334 Similarly, the <<<[>>> and <<<]>>>s must be written in single quotes, 3.1335 as they're used by the syntax of the grammar itself to group clauses. 3.1336 <<<whitespace>>> is never indicated in the grammar; 3.1337 @@ -2818,22 +2826,22 @@ 3.1338 3.1339 <ul> 3.1340 <li> 3.1341 - Any U+0000 NULL character in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 3.1342 + Any U+0000 NULL <a>code point</a> in the CSS source is replaced with U+FFFD REPLACEMENT CHARACTER. 3.1343 3.1344 <li> 3.1345 Any hexadecimal escape sequence such as ''\0'' that evaluate to zero 3.1346 - produce U+FFFD REPLACEMENT CHARACTER rather than U+0000 NULL. 3.1347 + produce U+FFFD REPLACEMENT r rather than U+0000 NULL. 3.1348 <!-- 3.1349 This covers a security issue: 3.1350 https://bugzilla.mozilla.org/show_bug.cgi?id=228856 3.1351 --> 3.1352 3.1353 <li> 3.1354 - The definition of <a>non-ASCII character</a> was changed 3.1355 + The definition of <a>non-ASCII code point</a> was changed 3.1356 to be consistent with every definition of ASCII. 3.1357 - This affects characters U+0080 to U+009F, 3.1358 - which are now <a>name characters</a> rather than <<<delim>>>s, 3.1359 - like the rest of <a>non-ASCII characters</a>. 3.1360 + This affects <a>code points</a> U+0080 to U+009F, 3.1361 + which are now <a>name code points</a> rather than <<<delim>>>s, 3.1362 + like the rest of <a>non-ASCII code points</a>. 3.1363 3.1364 <li> 3.1365 Tokenization does not emit COMMENT or BAD_COMMENT tokens anymore. 3.1366 @@ -2927,7 +2935,7 @@ 3.1367 3.1368 <ul> 3.1369 <li> 3.1370 - In some cases, "-" characters or digits can be escaped 3.1371 + In some cases, minus signs or digits can be escaped 3.1372 (when they appear as part of the unit of a <<<dimension>>> or <<<ident>>>). 3.1373 </ul> 3.1374 </ul>