~ split out LanguageTag
authorEric Prud'hommeaux <eric@w3.org>
Fri, 15 Jun 2012 14:52:51 -0400
changeset 443 5dd07bbb1bdb
parent 442 14e36e30a9c0
child 444 2700cc5630ba
~ split out LanguageTag
~ fixed 155s-158s to correspond to SPARQL productions
rdf-turtle/turtle-bnf.html
--- a/rdf-turtle/turtle-bnf.html	Fri Jun 15 08:55:36 2012 -0400
+++ b/rdf-turtle/turtle-bnf.html	Fri Jun 15 14:52:51 2012 -0400
@@ -97,35 +97,23 @@
     <td>'<code class='grammar-literal'>(</code>' <a href='#grammar-production-object'>object</a><code class='grammar-star'>*</code> '<code class='grammar-literal'>)</code>'</td>
 </tr>
             <tr id="grammar-production-RDFLiteral" data-grammar-original="[60s] RDFLiteral ::= String ( LANGTAG | ( &quot;^^&quot; iri ) )?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;String&#x27;), (&#x27;?&#x27;, (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;LANGTAG&#x27;), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;^^&#x27;), (&#x27;id&#x27;, &#x27;iri&#x27;)])]))])" >
-    <td>[60s]</td>
+    <td>[17]</td>
     <td><code>RDFLiteral</code></td>
     <td>::=</td>
-    <td><a href='#grammar-production-String'>String</a> (<a href='#grammar-production-LANGTAG'>LANGTAG</a> <code>| </code> '<code class='grammar-literal'>^^</code>' <a href='#grammar-production-iri'>iri</a>)?</td>
+    <td><a href='#grammar-production-String'>String</a> (<a href='#grammar-production-LanguageTag'>LanguageTag</a> <code>| </code> '<code class='grammar-literal'>^^</code>' <a href='#grammar-production-iri'>iri</a>)?</td>
 </tr>
-            <tr id="grammar-production-NumericLiteral" data-grammar-original="[61s] NumericLiteral ::= NumericLiteralUnsigned| NumericLiteralPositive| NumericLiteralNegative" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;NumericLiteralUnsigned&#x27;), (&#x27;id&#x27;, &#x27;NumericLiteralPositive&#x27;), (&#x27;id&#x27;, &#x27;NumericLiteralNegative&#x27;)])" >
-    <td>[61s]</td>
+            <tr id="grammar-production-RDFLiteral" data-grammar-original="[60s] RDFLiteral ::= String ( LANGTAG | ( &quot;^^&quot; iri ) )?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;String&#x27;), (&#x27;?&#x27;, (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;LANGTAG&#x27;), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;^^&#x27;), (&#x27;id&#x27;, &#x27;iri&#x27;)])]))])" >
+    <td>[18]</td>
+    <td><code>LanguageTag</code></td>
+    <td>::=</td>
+    <td><a href='#grammar-production-BASE'>BASE</a> <code>| </code><a href='#grammar-production-PREFIX'>PREFIX</a> <code>| </code><a href='#grammar-production-LANGTAG'>LANGTAG</a></td>
+</tr>
+            <tr id="grammar-production-RDFLiteral" data-grammar-original="[60s] RDFLiteral ::= String ( LANGTAG | ( &quot;^^&quot; iri ) )?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;String&#x27;), (&#x27;?&#x27;, (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;LANGTAG&#x27;), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;^^&#x27;), (&#x27;id&#x27;, &#x27;iri&#x27;)])]))])" >
+    <td>[19]</td>
     <td><code>NumericLiteral</code></td>
     <td>::=</td>
-    <td><a href='#grammar-production-NumericLiteralUnsigned'>NumericLiteralUnsigned</a> <code>| </code> <a href='#grammar-production-NumericLiteralPositive'>NumericLiteralPositive</a> <code>| </code> <a href='#grammar-production-NumericLiteralNegative'>NumericLiteralNegative</a></td>
-</tr>
-            <tr id="grammar-production-NumericLiteralUnsigned" data-grammar-original="[62s] NumericLiteralUnsigned ::= INTEGER| DECIMAL| DOUBLE" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;INTEGER&#x27;), (&#x27;id&#x27;, &#x27;DECIMAL&#x27;), (&#x27;id&#x27;, &#x27;DOUBLE&#x27;)])" >
-    <td>[62s]</td>
-    <td><code>NumericLiteralUnsigned</code></td>
-    <td>::=</td>
     <td><a href='#grammar-production-INTEGER'>INTEGER</a> <code>| </code> <a href='#grammar-production-DECIMAL'>DECIMAL</a> <code>| </code> <a href='#grammar-production-DOUBLE'>DOUBLE</a></td>
 </tr>
-            <tr id="grammar-production-NumericLiteralPositive" data-grammar-original="[63s] NumericLiteralPositive ::= INTEGER_POSITIVE| DECIMAL_POSITIVE| DOUBLE_POSITIVE" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;INTEGER_POSITIVE&#x27;), (&#x27;id&#x27;, &#x27;DECIMAL_POSITIVE&#x27;), (&#x27;id&#x27;, &#x27;DOUBLE_POSITIVE&#x27;)])" >
-    <td>[63s]</td>
-    <td><code>NumericLiteralPositive</code></td>
-    <td>::=</td>
-    <td><a href='#grammar-production-INTEGER_POSITIVE'>INTEGER_POSITIVE</a> <code>| </code> <a href='#grammar-production-DECIMAL_POSITIVE'>DECIMAL_POSITIVE</a> <code>| </code> <a href='#grammar-production-DOUBLE_POSITIVE'>DOUBLE_POSITIVE</a></td>
-</tr>
-            <tr id="grammar-production-NumericLiteralNegative" data-grammar-original="[64s] NumericLiteralNegative ::= INTEGER_NEGATIVE| DECIMAL_NEGATIVE| DOUBLE_NEGATIVE" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;INTEGER_NEGATIVE&#x27;), (&#x27;id&#x27;, &#x27;DECIMAL_NEGATIVE&#x27;), (&#x27;id&#x27;, &#x27;DOUBLE_NEGATIVE&#x27;)])" >
-    <td>[64s]</td>
-    <td><code>NumericLiteralNegative</code></td>
-    <td>::=</td>
-    <td><a href='#grammar-production-INTEGER_NEGATIVE'>INTEGER_NEGATIVE</a> <code>| </code> <a href='#grammar-production-DECIMAL_NEGATIVE'>DECIMAL_NEGATIVE</a> <code>| </code> <a href='#grammar-production-DOUBLE_NEGATIVE'>DOUBLE_NEGATIVE</a></td>
-</tr>
             <tr id="grammar-production-BooleanLiteral" data-grammar-original="[65s] BooleanLiteral ::= &quot;true&quot;| &quot;false&quot;" data-grammar-expression="(&#x27;|&#x27;, [(&quot;&#x27;&quot;, &#x27;true&#x27;), (&quot;&#x27;&quot;, &#x27;false&#x27;)])" >
     <td>[65s]</td>
     <td><code>BooleanLiteral</code></td>
@@ -160,13 +148,13 @@
     <p>Terminals:</p>
     <tbody class="grammar-terminals">
             <tr id="grammar-production-BASE" data-grammar-original="@@" data-grammar-expression="@@" class='grammar-token'>
-    <td>[17]</td>
+    <td>[20]</td>
     <td><code>BASE</code></td>
     <td>::=</td>
     <td>'<code class='grammar-literal'>@base</code>'</td>
 </tr>
             <tr id="grammar-production-prefix" data-grammar-original="@@" data-grammar-expression="@@" class='grammar-token'>
-    <td>[18]</td>
+    <td>[21]</td>
     <td><code>PREFIX</code></td>
     <td>::=</td>
     <td>'<code class='grammar-literal'>@prefix</code>'</td>
@@ -196,28 +184,28 @@
     <td>'<code class='grammar-literal'>_:</code>' (<a href='#grammar-production-PN_CHARS_U'>PN_CHARS_U</a> <code>| </code> [<code class='grammar-chars'>0-9</code>]) ((<a href='#grammar-production-PN_CHARS'>PN_CHARS</a> <code>| </code> '<code class='grammar-literal'>.</code>')<code class='grammar-star'>*</code> <a href='#grammar-production-PN_CHARS'>PN_CHARS</a>)?</td>
 </tr>
             <tr id="grammar-production-LANGTAG" data-grammar-original="[19] LANGTAG ::= &quot;@&quot; [a-zA-Z]+ ( &quot;-&quot; [a-zA-Z0-9]+ )*" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;@&#x27;), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;a-zA-Z&#x27;)), (&#x27;*&#x27;, (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;-&#x27;), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;a-zA-Z0-9&#x27;))]))])" class='grammar-token'>
-    <td>[19]</td>
+    <td>[22]</td>
     <td><code>LANGTAG</code></td>
     <td>::=</td>
-    <td><a href='#grammar-production-BASE'>BASE</a> <code>| </code><a href='#grammar-production-PREFIX'>PREFIX</a> <code>| </code>'<code class='grammar-literal'>@</code>' [<code class='grammar-chars'>a-zA-Z</code>]<code class='grammar-plus'>+</code> ('<code class='grammar-literal'>-</code>' [<code class='grammar-chars'>a-zA-Z0-9</code>]<code class='grammar-plus'>+</code>)<code class='grammar-star'>*</code></td>
+    <td>'<code class='grammar-literal'>@</code>' [<code class='grammar-chars'>a-zA-Z</code>]<code class='grammar-plus'>+</code> ('<code class='grammar-literal'>-</code>' [<code class='grammar-chars'>a-zA-Z0-9</code>]<code class='grammar-plus'>+</code>)<code class='grammar-star'>*</code></td>
 </tr>
             <tr id="grammar-production-INTEGER" data-grammar-original="[20] INTEGER ::= [+-]? [0-9]+" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;[&#x27;, &#x27;+-&#x27;)), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))])" class='grammar-token'>
-    <td>[20]</td>
+    <td>[23]</td>
     <td><code>INTEGER</code></td>
     <td>::=</td>
     <td>[<code class='grammar-chars'>+-</code>]? [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code></td>
 </tr>
             <tr id="grammar-production-DECIMAL" data-grammar-original="[21] DECIMAL ::= ([+-])? ( ([0-9])* &#x27;.&#x27; ([0-9])+ )" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;[&#x27;, &#x27;+-&#x27;)), (&#x27;,&#x27;, [(&#x27;*&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;)), (&quot;&#x27;&quot;, &#x27;.&#x27;), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))])])" class='grammar-token'>
-    <td>[21]</td>
+    <td>[24]</td>
     <td><code>DECIMAL</code></td>
     <td>::=</td>
-    <td>[<code class='grammar-chars'>+-</code>]? ([<code class='grammar-chars'>0-9</code>]<code class='grammar-star'>*</code> '<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code>)</td>
+    <td>[<code class='grammar-chars'>+-</code>]? [<code class='grammar-chars'>0-9</code>]<code class='grammar-star'>*</code> '<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code></td>
 </tr>
             <tr id="grammar-production-DOUBLE" data-grammar-original="[22] DOUBLE ::= ([+-])? ( [0-9]+ &#x27;.&#x27; [0-9]* EXPONENT | &#x27;.&#x27; ([0-9])+ EXPONENT | ([0-9])+EXPONENT )" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;[&#x27;, &#x27;+-&#x27;)), (&#x27;|&#x27;, [(&#x27;,&#x27;, [(&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;)), (&quot;&#x27;&quot;, &#x27;.&#x27;), (&#x27;*&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;)), (&#x27;id&#x27;, &#x27;EXPONENT&#x27;)]), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;.&#x27;), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;)), (&#x27;id&#x27;, &#x27;EXPONENT&#x27;)]), (&#x27;,&#x27;, [(&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;)), (&#x27;id&#x27;, &#x27;EXPONENT&#x27;)])])])" class='grammar-token'>
-    <td>[22]</td>
+    <td>[25]</td>
     <td><code>DOUBLE</code></td>
     <td>::=</td>
-    <td>[<code class='grammar-chars'>+-</code>]? (([<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> '<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-star'>*</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a>) <code>| </code> ('<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a>) <code>| </code> ([<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a>))</td>
+    <td>[<code class='grammar-chars'>+-</code>]? ([<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> '<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-star'>*</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a> <code>| </code> '<code class='grammar-literal'>.</code>' [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a> <code>| </code> [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code> <a href='#grammar-production-EXPONENT'>EXPONENT</a>)</td>
 </tr>
             <tr id="grammar-production-EXPONENT" data-grammar-original="[148s] EXPONENT ::= [eE] [+-]? [0-9]+" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;[&#x27;, &#x27;eE&#x27;), (&#x27;?&#x27;, (&#x27;[&#x27;, &#x27;+-&#x27;)), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))])" class='grammar-token'>
     <td>[148s]</td>
@@ -226,31 +214,31 @@
     <td>[<code class='grammar-chars'>eE</code>] [<code class='grammar-chars'>+-</code>]? [<code class='grammar-chars'>0-9</code>]<code class='grammar-plus'>+</code></td>
 </tr>
             <tr id="grammar-production-STRING_LITERAL1" data-grammar-original="[149s] STRING_LITERAL1 ::= &#x27;&quot;&#x27; ( ( [^#x27#x5C#xA#xD]) | ECHAR | UCHAR )* &#x27;&quot;&#x27;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;&quot;&#x27;), (&#x27;*&#x27;, (&#x27;|&#x27;, [(&#x27;[&#x27;, &#x27;^#x27#x5C#xA#xD&#x27;), (&#x27;id&#x27;, &#x27;ECHAR&#x27;), (&#x27;id&#x27;, &#x27;UCHAR&#x27;)])), (&quot;&#x27;&quot;, &#x27;&quot;&#x27;)])" class='grammar-token'>
-    <td>[149s]</td>
+    <td>[155s]</td>
     <td><code>STRING_LITERAL1</code></td>
     <td>::=</td>
-    <td>'<code class='grammar-literal'>&quot;</code>' ([<code class='grammar-chars'>^#x27#x5C#xA#xD</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>)<code class='grammar-star'>*</code> '<code class='grammar-literal'>&quot;</code>'</td>
+    <td>"<code class='grammar-literal'>'</code>" ([<code class='grammar-chars'>^#x27#x5C#xA#xD</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>)<code class='grammar-star'>*</code> "<code class='grammar-literal'>'</code>"</td>
 </tr>
             <tr id="grammar-production-STRING_LITERAL2" data-grammar-original="[150s] STRING_LITERAL2 ::= &quot;&#x27;&quot; ( ( [^#x22#x5C#xA#xD]) | ECHAR | UCHAR )* &quot;&#x27;&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &quot;&#x27;&quot;), (&#x27;*&#x27;, (&#x27;|&#x27;, [(&#x27;[&#x27;, &#x27;^#x22#x5C#xA#xD&#x27;), (&#x27;id&#x27;, &#x27;ECHAR&#x27;), (&#x27;id&#x27;, &#x27;UCHAR&#x27;)])), (&quot;&#x27;&quot;, &quot;&#x27;&quot;)])" class='grammar-token'>
-    <td>[150s]</td>
+    <td>[156s]</td>
     <td><code>STRING_LITERAL2</code></td>
     <td>::=</td>
-    <td>"<code class="grammar-literal">&#x27;</code>" ([<code class='grammar-chars'>^#x22#x5C#xA#xD</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>)<code class='grammar-star'>*</code> "<code class="grammar-literal">&#x27;</code>"</td>
+    <td>'<code class="grammar-literal">"</code>' ([<code class='grammar-chars'>^#x22#x5C#xA#xD</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>)<code class='grammar-star'>*</code> '<code class="grammar-literal">"</code>'</td>
 </tr>
             <tr id="grammar-production-STRING_LITERAL_LONG1" data-grammar-original="[151s] STRING_LITERAL_LONG1 ::= &quot;&#x27;&#x27;&#x27;&quot; ( ( &quot;&#x27;&quot; | &quot;&#x27;&#x27;&quot; )? ( [^&#x27;\] | ECHAR | UCHAR ) )* &quot;&#x27;&#x27;&#x27;&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &quot;&#x27;&#x27;&#x27;&quot;), (&#x27;*&#x27;, (&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;|&#x27;, [(&quot;&#x27;&quot;, &quot;&#x27;&quot;), (&quot;&#x27;&quot;, &quot;&#x27;&#x27;&quot;)])), (&#x27;|&#x27;, [(&#x27;[&#x27;, &quot;^&#x27;\\&quot;), (&#x27;id&#x27;, &#x27;ECHAR&#x27;), (&#x27;id&#x27;, &#x27;UCHAR&#x27;)])])), (&quot;&#x27;&quot;, &quot;&#x27;&#x27;&#x27;&quot;)])" class='grammar-token'>
-    <td>[151s]</td>
+    <td>[157s]</td>
     <td><code>STRING_LITERAL_LONG1</code></td>
     <td>::=</td>
-    <td>"<code class="grammar-literal">&#x27;&#x27;&#x27;</code>" (("<code class="grammar-literal">&#x27;</code>" <code>| </code> "<code class="grammar-literal">&#x27;&#x27;</code>")? ([<code class='grammar-chars'>^'\</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>))<code class='grammar-star'>*</code> "<code class="grammar-literal">&#x27;&#x27;&#x27;</code>"</td>
+    <td>"<code class="grammar-literal">'''</code>" (("<code class="grammar-literal">&#x27;</code>" <code>| </code> "<code class="grammar-literal">&#x27;&#x27;</code>")? ([<code class='grammar-chars'>^'\</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>))<code class='grammar-star'>*</code> "<code class="grammar-literal">'''</code>"</td>
 </tr>
             <tr id="grammar-production-STRING_LITERAL_LONG2" data-grammar-original="[152s] STRING_LITERAL_LONG2 ::= &#x27;&quot;&quot;&quot;&#x27; ( ( &#x27;&quot;&#x27; | &#x27;&quot;&quot;&#x27; )? ( [^&quot;\] | ECHAR | UCHAR ) )* &#x27;&quot;&quot;&quot;&#x27;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;&quot;&quot;&quot;&#x27;), (&#x27;*&#x27;, (&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;|&#x27;, [(&quot;&#x27;&quot;, &#x27;&quot;&#x27;), (&quot;&#x27;&quot;, &#x27;&quot;&quot;&#x27;)])), (&#x27;|&#x27;, [(&#x27;[&#x27;, &#x27;^&quot;\\&#x27;), (&#x27;id&#x27;, &#x27;ECHAR&#x27;), (&#x27;id&#x27;, &#x27;UCHAR&#x27;)])])), (&quot;&#x27;&quot;, &#x27;&quot;&quot;&quot;&#x27;)])" class='grammar-token'>
-    <td>[152s]</td>
+    <td>[158s]</td>
     <td><code>STRING_LITERAL_LONG2</code></td>
     <td>::=</td>
-    <td>'<code class='grammar-literal'>&quot;&quot;&quot;</code>' (('<code class='grammar-literal'>&quot;</code>' <code>| </code> '<code class='grammar-literal'>&quot;&quot;</code>')? ([<code class='grammar-chars'>^"\</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>))<code class='grammar-star'>*</code> '<code class='grammar-literal'>&quot;&quot;&quot;</code>'</td>
+    <td>'<code class='grammar-literal'>"""</code>' (('<code class='grammar-literal'>&quot;</code>' <code>| </code> '<code class='grammar-literal'>&quot;&quot;</code>')? ([<code class='grammar-chars'>^"\</code>] <code>| </code> <a href='#grammar-production-ECHAR'>ECHAR</a> <code>| </code> <a href='#grammar-production-UCHAR'>UCHAR</a>))<code class='grammar-star'>*</code> '<code class='grammar-literal'>"""</code>'</td>
 </tr>
             <tr id="grammar-production-UCHAR" data-grammar-original="[23] UCHAR ::= ( &quot;\u&quot; HEX HEX HEX HEX )| ( &quot;\U&quot; HEX HEX HEX HEX HEX HEX HEX HEX )" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\u&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)]), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\U&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)])])" class='grammar-token'>
-    <td>[23]</td>
+    <td>[26]</td>
     <td><code>UCHAR</code></td>
     <td>::=</td>
     <td>('<code class='grammar-literal'>\u</code>' <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a>) <code>| </code> ('<code class='grammar-literal'>\U</code>' <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a>)</td>