Turtle grammar in HTML generated via bnf2html (new python tool)
authorGavin Carothers <gavin@carothers.name>
Wed, 25 Apr 2012 16:57:38 -0700
changeset 256 316331505ff1
parent 255 dc2c6425ca8a
child 257 7d796fb0f976
Turtle grammar in HTML generated via bnf2html (new python tool)
rdf-turtle/index.html
rdf-turtle/turtle-bnf.html
rdf-turtle/turtle.bnf
--- a/rdf-turtle/index.html	Mon Apr 02 08:08:35 2012 -0700
+++ b/rdf-turtle/index.html	Wed Apr 25 16:57:38 2012 -0700
@@ -115,6 +115,8 @@
     .separated thead tr th { border:1px solid black; padding: .2em; }
     .separated tbody tr td { border:1px solid black; text-align: center; }
     .separated tbody tr td.r { text-align: right; padding: .5em; }
+    .grammar td { font-family: monospace;}
+    .grammar-literal { color: gray;}
     </style> 
 	
     </head>
@@ -822,7 +824,6 @@
             <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0 (Third Edition)
             [[!EBNF-NOTATION]]. Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#sparqlGrammar">SPARQL Query Language for RDF grammar</a> [[RDF-SPARQL-QUERY]].
             </p>
-            <p class="note">There are known formating issues with the table form of the grammar. Please see <a href="turtle.bnf">turtle.bnf</a> for exact grammar.</p>
             <div data-include="turtle-bnf.html">
             </div>
           </section>
--- a/rdf-turtle/turtle-bnf.html	Mon Apr 02 08:08:35 2012 -0700
+++ b/rdf-turtle/turtle-bnf.html	Wed Apr 25 16:57:38 2012 -0700
@@ -1,683 +1,370 @@
-<table class="grammar" summary="Turtle - Terse RDF Triple Language EBNF">
-   <caption>Turtle - Terse RDF Triple Language EBNF</caption>
-
-<tbody><tr><td colspan="4" class="grammarSection"><h3><a id="productions" name="productions">Productions</a>:</h3></td></tr></tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-turtleDoc" name="prod-turtle2-turtleDoc"></a>[<span class="prodNo">1</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">turtleDoc</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">(<span class="prod"><a class="grammarRef" href="#prod-turtle2-statement">statement</a></span>)*</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-statement" name="prod-turtle2-statement"></a>[<span class="prodNo">2</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">statement</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-directive">directive</a></span> "."<br/>
-
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-triples">triples</a></span> "."</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-directive" name="prod-turtle2-directive"></a>[<span class="prodNo">3</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">directive</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-prefixID">prefixID</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-base">base</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-prefixID" name="prod-turtle2-prefixID"></a>[<span class="prodNo">4</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">prefixID</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PREFIX">PREFIX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-PNAME_NS">PNAME_NS</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-IRI_REF">IRI_REF</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-base" name="prod-turtle2-base"></a>[<span class="prodNo">5</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">base</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-BASE">BASE</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-IRI_REF">IRI_REF</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-triples" name="prod-turtle2-triples"></a>[<span class="prodNo">6</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">triples</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-subject">subject</a></span> <span class="prod"><a class="grammarRef" href="#prod-turtle2-predicateObjectList">predicateObjectList</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-predicateObjectList" name="prod-turtle2-predicateObjectList"></a>[<span class="prodNo">7</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">predicateObjectList</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-verb">verb</a></span> <span class="prod"><a class="grammarRef" href="#prod-turtle2-objectList">objectList</a></span> (( ";" <span class="prod"><a class="grammarRef" href="#prod-turtle2-verb">verb</a></span> <span class="prod"><a class="grammarRef" href="#prod-turtle2-objectList">objectList</a></span> ))* (";")?</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-
-<tr valign="baseline">
-<td><a id="prod-turtle2-objectList" name="prod-turtle2-objectList"></a>[<span class="prodNo">8</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">objectList</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-object">object</a></span> (( "," <span class="prod"><a class="grammarRef" href="#prod-turtle2-object">object</a></span> ))*</code></td>
-</tr>
-
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-verb" name="prod-turtle2-verb"></a>[<span class="prodNo">9</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">verb</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-predicate">predicate</a></span><br/>
-| "a"</code></td>
-</tr>
-
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-subject" name="prod-turtle2-subject"></a>[<span class="prodNo">10</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">subject</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-IRIref">IRIref</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-blank">blank</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-predicate" name="prod-turtle2-predicate"></a>[<span class="prodNo">11</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">predicate</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-IRIref">IRIref</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-object" name="prod-turtle2-object"></a>[<span class="prodNo">12</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">object</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-IRIref">IRIref</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-blank">blank</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-literal">literal</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-literal" name="prod-turtle2-literal"></a>[<span class="prodNo">13</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">literal</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-RDFLiteral">RDFLiteral</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-NumericLiteral">NumericLiteral</a></span><br/>
-
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-BooleanLiteral">BooleanLiteral</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-blank" name="prod-turtle2-blank"></a>[<span class="prodNo">14</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">blank</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-BlankNode">BlankNode</a></span><br/>
-
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-collection">collection</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-blankNodePropertyList" name="prod-turtle2-blankNodePropertyList"></a>[<span class="prodNo">15</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">blankNodePropertyList</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"[" <span class="prod"><a class="grammarRef" href="#prod-turtle2-predicateObjectList">predicateObjectList</a></span> "]"</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-collection" name="prod-turtle2-collection"></a>[<span class="prodNo">16</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">collection</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"(" (<span class="prod"><a class="grammarRef" href="#prod-turtle2-object">object</a></span>)* ")"</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-RDFLiteral" name="prod-turtle2-RDFLiteral"></a>[<span class="prodNo">17</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">RDFLiteral</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-String">String</a></span> (( <span class="prod"><a class="grammarRef" href="#term-turtle2-LANGTAG">LANGTAG</a></span> | ( "^^" <span class="prod"><a class="grammarRef" href="#prod-turtle2-IRIref">IRIref</a></span> ) ))?</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-
-<td><a id="prod-turtle2-NumericLiteral" name="prod-turtle2-NumericLiteral"></a>[<span class="prodNo">18</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">NumericLiteral</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-turtle2-NumericLiteralUnsigned">NumericLiteralUnsigned</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-NumericLiteralPositive">NumericLiteralPositive</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-NumericLiteralNegative">NumericLiteralNegative</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-NumericLiteralUnsigned" name="prod-turtle2-NumericLiteralUnsigned"></a>[<span class="prodNo">19</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">NumericLiteralUnsigned</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-INTEGER">INTEGER</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DECIMAL">DECIMAL</a></span><br/>
-
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DOUBLE">DOUBLE</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-NumericLiteralPositive" name="prod-turtle2-NumericLiteralPositive"></a>[<span class="prodNo">20</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">NumericLiteralPositive</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-INTEGER_POSITIVE">INTEGER_POSITIVE</a></span><br/>
-
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DECIMAL_POSITIVE">DECIMAL_POSITIVE</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DOUBLE_POSITIVE">DOUBLE_POSITIVE</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-NumericLiteralNegative" name="prod-turtle2-NumericLiteralNegative"></a>[<span class="prodNo">21</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">NumericLiteralNegative</code></td>
-
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-INTEGER_NEGATIVE">INTEGER_NEGATIVE</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DECIMAL_NEGATIVE">DECIMAL_NEGATIVE</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-DOUBLE_NEGATIVE">DOUBLE_NEGATIVE</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-BooleanLiteral" name="prod-turtle2-BooleanLiteral"></a>[<span class="prodNo">22</span>]&nbsp;&nbsp;&nbsp;</td>
-
-<td><code class="production prod">BooleanLiteral</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"true"<br/>
-| "false"</code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-String" name="prod-turtle2-String"></a>[<span class="prodNo">23</span>]&nbsp;&nbsp;&nbsp;</td>
-
-<td><code class="production prod">String</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-STRING_LITERAL1">STRING_LITERAL1</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-STRING_LITERAL2">STRING_LITERAL2</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-STRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-STRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-IRIref" name="prod-turtle2-IRIref"></a>[<span class="prodNo">24</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">IRIref</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-IRI_REF">IRI_REF</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#prod-turtle2-PrefixedName">PrefixedName</a></span></code></td>
-</tr>
-
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-PrefixedName" name="prod-turtle2-PrefixedName"></a>[<span class="prodNo">25</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">PrefixedName</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PNAME_LN">PNAME_LN</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-PNAME_NS">PNAME_NS</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="prod">
-<tr valign="baseline">
-<td><a id="prod-turtle2-BlankNode" name="prod-turtle2-BlankNode"></a>[<span class="prodNo">26</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">BlankNode</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-ANON">ANON</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-BASE" name="term-turtle2-BASE"></a>[<span class="prodNo">27</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">BASE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"@base"</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PREFIX" name="term-turtle2-PREFIX"></a>[<span class="prodNo">28</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PREFIX</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"@prefix"</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-
-<tr valign="baseline">
-<td><a id="term-turtle2-IRI_REF" name="term-turtle2-IRI_REF"></a>[<span class="prodNo">29</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">IRI_REF</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"&lt;" (( [^&lt;&gt;\"{}|^`\\] - [#0000- ] | <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span> ))* "&gt;"</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PNAME_NS" name="term-turtle2-PNAME_NS"></a>[<span class="prodNo">30</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PNAME_NS</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">(( <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_PREFIX">PN_PREFIX</a></span> ))? ":"</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PNAME_LN" name="term-turtle2-PNAME_LN"></a>[<span class="prodNo">31</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PNAME_LN</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PNAME_NS">PNAME_NS</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_LOCAL">PN_LOCAL</a></span></code></td>
-
+<table class="grammar">
+    <tbody>
+            <tr id="grammar-production-turtleDoc" data-grammar-original="[1] turtleDoc ::= (statement)*" data-grammar-expression="(&#x27;*&#x27;, (&#x27;id&#x27;, &#x27;statement&#x27;))" >
+    <td>[1]<td>
+    <td><code>turtleDoc</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-statement'>statement</a>)<code class='grammar-star'>*</code></td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-BLANK_NODE_LABEL" name="term-turtle2-BLANK_NODE_LABEL"></a>[<span class="prodNo">32</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">BLANK_NODE_LABEL</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"_:" <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_LOCAL">PN_LOCAL</a></span></code></td>
-</tr>
-
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-LANGTAG" name="term-turtle2-LANGTAG"></a>[<span class="prodNo">33</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">LANGTAG</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-BASE">BASE</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-PREFIX">PREFIX</a></span><br/>
-
-| "@" ([a-zA-Z])+ (( "-" ([a-zA-Z0-9])+ ))*</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-INTEGER" name="term-turtle2-INTEGER"></a>[<span class="prodNo">34</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">INTEGER</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">([0-9])+</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-DECIMAL" name="term-turtle2-DECIMAL"></a>[<span class="prodNo">35</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DECIMAL</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">([0-9])+ "." ([0-9])+<br/>
-| "." ([0-9])+</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-DOUBLE" name="term-turtle2-DOUBLE"></a>[<span class="prodNo">36</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DOUBLE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">([0-9])+ "." ([0-9])+ <span class="prod"><a class="grammarRef" href="#term-turtle2-EXPONENT">EXPONENT</a></span><br/>
-| "." (( [0-9] ))+ <span class="prod"><a class="grammarRef" href="#term-turtle2-EXPONENT">EXPONENT</a></span><br/>
-
-| (( [0-9] ))+ <span class="prod"><a class="grammarRef" href="#term-turtle2-EXPONENT">EXPONENT</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-INTEGER_POSITIVE" name="term-turtle2-INTEGER_POSITIVE"></a>[<span class="prodNo">37</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">INTEGER_POSITIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"+" <span class="prod"><a class="grammarRef" href="#term-turtle2-INTEGER">INTEGER</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-DECIMAL_POSITIVE" name="term-turtle2-DECIMAL_POSITIVE"></a>[<span class="prodNo">38</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DECIMAL_POSITIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"+" <span class="prod"><a class="grammarRef" href="#term-turtle2-DECIMAL">DECIMAL</a></span></code></td>
-</tr>
-
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-DOUBLE_POSITIVE" name="term-turtle2-DOUBLE_POSITIVE"></a>[<span class="prodNo">39</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DOUBLE_POSITIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"+" <span class="prod"><a class="grammarRef" href="#term-turtle2-DOUBLE">DOUBLE</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-INTEGER_NEGATIVE" name="term-turtle2-INTEGER_NEGATIVE"></a>[<span class="prodNo">40</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">INTEGER_NEGATIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"-" <span class="prod"><a class="grammarRef" href="#term-turtle2-INTEGER">INTEGER</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-DECIMAL_NEGATIVE" name="term-turtle2-DECIMAL_NEGATIVE"></a>[<span class="prodNo">41</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DECIMAL_NEGATIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"-" <span class="prod"><a class="grammarRef" href="#term-turtle2-DECIMAL">DECIMAL</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-
-<tr valign="baseline">
-<td><a id="term-turtle2-DOUBLE_NEGATIVE" name="term-turtle2-DOUBLE_NEGATIVE"></a>[<span class="prodNo">42</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">DOUBLE_NEGATIVE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"-" <span class="prod"><a class="grammarRef" href="#term-turtle2-DOUBLE">DOUBLE</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-
-<td><a id="term-turtle2-EXPONENT" name="term-turtle2-EXPONENT"></a>[<span class="prodNo">43</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">EXPONENT</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">[eE] ([+-])? ([0-9])+</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-STRING_LITERAL1" name="term-turtle2-STRING_LITERAL1"></a>[<span class="prodNo">44</span>]&nbsp;&nbsp;&nbsp;</td>
-
-<td>&lt;<code class="production term">STRING_LITERAL1</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"'" (( ( [^'\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#term-turtle2-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span> ))* "'"</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-
-<td><a id="term-turtle2-STRING_LITERAL2" name="term-turtle2-STRING_LITERAL2"></a>[<span class="prodNo">45</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">STRING_LITERAL2</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">'"' (( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#term-turtle2-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span> ))* '"'</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-STRING_LITERAL_LONG1" name="term-turtle2-STRING_LITERAL_LONG1"></a>[<span class="prodNo">46</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">STRING_LITERAL_LONG1</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"'''" (( (( "'" | "''" ))? ( [^'\\] | <span class="prod"><a class="grammarRef" href="#term-turtle2-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span> ) ))* "'''"</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-STRING_LITERAL_LONG2" name="term-turtle2-STRING_LITERAL_LONG2"></a>[<span class="prodNo">47</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">STRING_LITERAL_LONG2</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">'"""' (( (( '"' | '""' ))? ( [^\"\\] | <span class="prod"><a class="grammarRef" href="#term-turtle2-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span> ) ))* '"""'</code></td>
-
+            <tr id="grammar-production-statement" data-grammar-original="[2] statement ::= directive &quot;.&quot;| triples &quot;.&quot;" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;directive&#x27;), (&quot;&#x27;&quot;, &#x27;.&#x27;)]), (&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;triples&#x27;), (&quot;&#x27;&quot;, &#x27;.&#x27;)])])" >
+    <td>[2]<td>
+    <td><code>statement</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-directive'>directive</a> '<code class='grammar-literal'>.</code>' <code>|</code> <a href='#grammar-production-triples'>triples</a> '<code class='grammar-literal'>.</code>')</td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-UCHAR" name="term-turtle2-UCHAR"></a>[<span class="prodNo">48</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">UCHAR</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">( "\\u" <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> )<br/>
-
-| ( "\\U" <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> )</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-ECHAR" name="term-turtle2-ECHAR"></a>[<span class="prodNo">49</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">ECHAR</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"\\" [tbnrf\\\"']</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-NIL" name="term-turtle2-NIL"></a>[<span class="prodNo">50</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">NIL</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"(" (( <span class="prod"><a class="grammarRef" href="#term-turtle2-WS">WS</a></span> ))* ")"</code></td>
-</tr>
-
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-WS" name="term-turtle2-WS"></a>[<span class="prodNo">51</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">WS</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">" "<br/>
-| "\t"<br/>
-| "\r"<br/>
-
-| "\n"</code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-ANON" name="term-turtle2-ANON"></a>[<span class="prodNo">52</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">ANON</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"[" (( <span class="prod"><a class="grammarRef" href="#term-turtle2-WS">WS</a></span> ))* "]"</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_CHARS_BASE" name="term-turtle2-PN_CHARS_BASE"></a>[<span class="prodNo">53</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PN_CHARS_BASE</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">[A-Z]<br/>
-| [a-z]<br/>
-
-| [#00C0-#00D6]<br/>
-| [#00D8-#00F6]<br/>
-| [#00F8-#02FF]<br/>
-| [#0370-#037D]<br/>
-| [#037F-#1FFF]<br/>
-| [#200C-#200D]<br/>
-| [#2070-#218F]<br/>
-| [#2C00-#2FEF]<br/>
-| [#3001-#D7FF]<br/>
-
-| [#F900-#FDCF]<br/>
-| [#FDF0-#FFFD]<br/>
-| [#10000-#EFFFF]<br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-UCHAR">UCHAR</a></span></code></td>
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_CHARS_U" name="term-turtle2-PN_CHARS_U"></a>[<span class="prodNo">54</span>]&nbsp;&nbsp;&nbsp;</td>
-
-<td>&lt;<code class="production term">PN_CHARS_U</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS_BASE">PN_CHARS_BASE</a></span><br/>
-| "_"</code></td>
+            <tr id="grammar-production-directive" data-grammar-original="[3] directive ::= prefixID| base" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;prefixID&#x27;), (&#x27;id&#x27;, &#x27;base&#x27;)])" >
+    <td>[3]<td>
+    <td><code>directive</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-prefixID'>prefixID</a> <code>|</code> <a href='#grammar-production-base'>base</a>)</td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_CHARS" name="term-turtle2-PN_CHARS"></a>[<span class="prodNo">55</span>]&nbsp;&nbsp;&nbsp;</td>
-
-<td>&lt;<code class="production term">PN_CHARS</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS_U">PN_CHARS_U</a></span><br/>
-| "-"<br/>
-| [0-9]<br/>
-| <br/>
-| [#0300-#036F]<br/>
-| [#203F-#2040]</code></td>
-</tr>
-
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_PREFIX" name="term-turtle2-PN_PREFIX"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PN_PREFIX</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS_BASE">PN_CHARS_BASE</a></span> (( (( <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS">PN_CHARS</a></span> | "." ))* <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS">PN_CHARS</a></span> ))?</code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_LOCAL" name="term-turtle2-PN_LOCAL"></a>[<span class="prodNo">57</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PN_LOCAL</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">( <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS_U">PN_CHARS_U</a></span> | [0-9] | <span class="prod"><a class="grammarRef" href="#term-turtle2-PLX">PLX</a></span> ) (( (( <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS">PN_CHARS</a></span> | "." | <span class="prod"><a class="grammarRef" href="#term-turtle2-PLX">PLX</a></span> ))* ( <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_CHARS">PN_CHARS</a></span> | <span class="prod"><a class="grammarRef" href="#term-turtle2-PLX">PLX</a></span> ) ))?</code></td>
-
+            <tr id="grammar-production-prefixID" data-grammar-original="[4] prefixID ::= PREFIX PNAME_NS IRI_REF" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;PREFIX&#x27;), (&#x27;id&#x27;, &#x27;PNAME_NS&#x27;), (&#x27;id&#x27;, &#x27;IRI_REF&#x27;)])" >
+    <td>[4]<td>
+    <td><code>prefixID</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-PREFIX'>PREFIX</a> <a href='#grammar-production-PNAME_NS'>PNAME_NS</a> <a href='#grammar-production-IRI_REF'>IRI_REF</a></td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PLX" name="term-turtle2-PLX"></a>[<span class="prodNo">58</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PLX</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content"><span class="prod"><a class="grammarRef" href="#term-turtle2-PERCENT">PERCENT</a></span><br/>
-| <span class="prod"><a class="grammarRef" href="#term-turtle2-PN_LOCAL_ESC">PN_LOCAL_ESC</a></span></code></td>
-
-</tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PERCENT" name="term-turtle2-PERCENT"></a>[<span class="prodNo">59</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PERCENT</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#term-turtle2-HEX">HEX</a></span></code></td>
-
+            <tr id="grammar-production-base" data-grammar-original="[5] base ::= BASE IRI_REF" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;BASE&#x27;), (&#x27;id&#x27;, &#x27;IRI_REF&#x27;)])" >
+    <td>[5]<td>
+    <td><code>base</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-BASE'>BASE</a> <a href='#grammar-production-IRI_REF'>IRI_REF</a></td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-HEX" name="term-turtle2-HEX"></a>[<span class="prodNo">60</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">HEX</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">[0-9]<br/>
-| [A-F]<br/>
-
-| [a-f]</code></td>
+            <tr id="grammar-production-triples" data-grammar-original="[6] triples ::= subject predicateObjectList" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;subject&#x27;), (&#x27;id&#x27;, &#x27;predicateObjectList&#x27;)])" >
+    <td>[6]<td>
+    <td><code>triples</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-subject'>subject</a> <a href='#grammar-production-predicateObjectList'>predicateObjectList</a></td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PN_LOCAL_ESC" name="term-turtle2-PN_LOCAL_ESC"></a>[<span class="prodNo">61</span>]&nbsp;&nbsp;&nbsp;</td>
-<td>&lt;<code class="production term">PN_LOCAL_ESC</code>&gt;</td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">"\\" ( "_" | "~" | "." | "-" | "!" | "$" | "&amp;" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | ":" | "/" | "?" | "#" | "@" | "%" )</code></td>
-
+            <tr id="grammar-production-predicateObjectList" data-grammar-original="[7] predicateObjectList ::= verb objectList ( &quot;;&quot; verb objectList )* (&quot;;&quot;)?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;verb&#x27;), (&#x27;id&#x27;, &#x27;objectList&#x27;), (&#x27;*&#x27;, (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;;&#x27;), (&#x27;id&#x27;, &#x27;verb&#x27;), (&#x27;id&#x27;, &#x27;objectList&#x27;)])), (&#x27;?&#x27;, (&quot;&#x27;&quot;, &#x27;;&#x27;))])" >
+    <td>[7]<td>
+    <td><code>predicateObjectList</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-verb'>verb</a> <a href='#grammar-production-objectList'>objectList</a> ('<code class='grammar-literal'>;</code>' <a href='#grammar-production-verb'>verb</a> <a href='#grammar-production-objectList'>objectList</a>)<code class='grammar-star'>*</code> ('<code class='grammar-literal'>;</code>')?</td>
 </tr>
-</tbody>
-
-<tbody class="term">
-<tr valign="baseline">
-<td><a id="term-turtle2-PASSED_TOKENS" name="term-turtle2-PASSED_TOKENS"></a>[<span class="prodNo">62</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production directive">PASSED TOKENS</code></td>
-<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">([ \t\r\n])+<br/>
-| "#" ([^\r\n])*</code></td>
-
+            <tr id="grammar-production-objectList" data-grammar-original="[8] objectList ::= object ( &quot;,&quot; object )*" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;object&#x27;), (&#x27;*&#x27;, (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;,&#x27;), (&#x27;id&#x27;, &#x27;object&#x27;)]))])" >
+    <td>[8]<td>
+    <td><code>objectList</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-object'>object</a> ('<code class='grammar-literal'>,</code>' <a href='#grammar-production-object'>object</a>)<code class='grammar-star'>*</code></td>
 </tr>
-</tbody>
-</table>
\ No newline at end of file
+            <tr id="grammar-production-verb" data-grammar-original="[9] verb ::= predicate| &quot;a&quot;" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;predicate&#x27;), (&quot;&#x27;&quot;, &#x27;a&#x27;)])" >
+    <td>[9]<td>
+    <td><code>verb</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-predicate'>predicate</a> <code>|</code> '<code class='grammar-literal'>a</code>')</td>
+</tr>
+            <tr id="grammar-production-subject" data-grammar-original="[10] subject ::= IRIref| blank" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;IRIref&#x27;), (&#x27;id&#x27;, &#x27;blank&#x27;)])" >
+    <td>[10]<td>
+    <td><code>subject</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-IRIref'>IRIref</a> <code>|</code> <a href='#grammar-production-blank'>blank</a>)</td>
+</tr>
+            <tr id="grammar-production-predicate" data-grammar-original="[11] predicate ::= IRIref" data-grammar-expression="(&#x27;id&#x27;, &#x27;IRIref&#x27;)" >
+    <td>[11]<td>
+    <td><code>predicate</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-IRIref'>IRIref</a></td>
+</tr>
+            <tr id="grammar-production-object" data-grammar-original="[12] object ::= IRIref| blank| literal" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;IRIref&#x27;), (&#x27;id&#x27;, &#x27;blank&#x27;), (&#x27;id&#x27;, &#x27;literal&#x27;)])" >
+    <td>[12]<td>
+    <td><code>object</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-IRIref'>IRIref</a> <code>|</code> <a href='#grammar-production-blank'>blank</a> <code>|</code> <a href='#grammar-production-literal'>literal</a>)</td>
+</tr>
+            <tr id="grammar-production-literal" data-grammar-original="[13] literal ::= RDFLiteral| NumericLiteral| BooleanLiteral" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;RDFLiteral&#x27;), (&#x27;id&#x27;, &#x27;NumericLiteral&#x27;), (&#x27;id&#x27;, &#x27;BooleanLiteral&#x27;)])" >
+    <td>[13]<td>
+    <td><code>literal</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-RDFLiteral'>RDFLiteral</a> <code>|</code> <a href='#grammar-production-NumericLiteral'>NumericLiteral</a> <code>|</code> <a href='#grammar-production-BooleanLiteral'>BooleanLiteral</a>)</td>
+</tr>
+            <tr id="grammar-production-blank" data-grammar-original="[14] blank ::= BlankNode| blankNodePropertyList| collection" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;BlankNode&#x27;), (&#x27;id&#x27;, &#x27;blankNodePropertyList&#x27;), (&#x27;id&#x27;, &#x27;collection&#x27;)])" >
+    <td>[14]<td>
+    <td><code>blank</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-BlankNode'>BlankNode</a> <code>|</code> <a href='#grammar-production-blankNodePropertyList'>blankNodePropertyList</a> <code>|</code> <a href='#grammar-production-collection'>collection</a>)</td>
+</tr>
+            <tr id="grammar-production-blankNodePropertyList" data-grammar-original="[15] blankNodePropertyList ::= &quot;[&quot; predicateObjectList &quot;]&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;[&#x27;), (&#x27;id&#x27;, &#x27;predicateObjectList&#x27;), (&quot;&#x27;&quot;, &#x27;]&#x27;)])" >
+    <td>[15]<td>
+    <td><code>blankNodePropertyList</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>[</code>' <a href='#grammar-production-predicateObjectList'>predicateObjectList</a> '<code class='grammar-literal'>]</code>'</td>
+</tr>
+            <tr id="grammar-production-collection" data-grammar-original="[16] collection ::= &quot;(&quot; object* &quot;)&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;(&#x27;), (&#x27;*&#x27;, (&#x27;id&#x27;, &#x27;object&#x27;)), (&quot;&#x27;&quot;, &#x27;)&#x27;)])" >
+    <td>[16]<td>
+    <td><code>collection</code><td>
+    <td>::=</td>
+    <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; IRIref ) )?" 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;IRIref&#x27;)])]))])" >
+    <td>[60s]<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-IRIref'>IRIref</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>
+    <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>
+    <td>::=</td>
+    <td>('<code class='grammar-literal'>true</code>' <code>|</code> '<code class='grammar-literal'>false</code>')</td>
+</tr>
+            <tr id="grammar-production-String" data-grammar-original="[66s] String ::= STRING_LITERAL1| STRING_LITERAL2| STRING_LITERAL_LONG1| STRING_LITERAL_LONG2" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;STRING_LITERAL1&#x27;), (&#x27;id&#x27;, &#x27;STRING_LITERAL2&#x27;), (&#x27;id&#x27;, &#x27;STRING_LITERAL_LONG1&#x27;), (&#x27;id&#x27;, &#x27;STRING_LITERAL_LONG2&#x27;)])" >
+    <td>[66s]<td>
+    <td><code>String</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-STRING_LITERAL1'>STRING_LITERAL1</a> <code>|</code> <a href='#grammar-production-STRING_LITERAL2'>STRING_LITERAL2</a> <code>|</code> <a href='#grammar-production-STRING_LITERAL_LONG1'>STRING_LITERAL_LONG1</a> <code>|</code> <a href='#grammar-production-STRING_LITERAL_LONG2'>STRING_LITERAL_LONG2</a>)</td>
+</tr>
+            <tr id="grammar-production-IRIref" data-grammar-original="[67s] IRIref ::= IRI_REF| PrefixedName" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;IRI_REF&#x27;), (&#x27;id&#x27;, &#x27;PrefixedName&#x27;)])" >
+    <td>[67s]<td>
+    <td><code>IRIref</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-IRI_REF'>IRI_REF</a> <code>|</code> <a href='#grammar-production-PrefixedName'>PrefixedName</a>)</td>
+</tr>
+            <tr id="grammar-production-PrefixedName" data-grammar-original="[68s] PrefixedName ::= PNAME_LN| PNAME_NS" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PNAME_LN&#x27;), (&#x27;id&#x27;, &#x27;PNAME_NS&#x27;)])" >
+    <td>[68s]<td>
+    <td><code>PrefixedName</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PNAME_LN'>PNAME_LN</a> <code>|</code> <a href='#grammar-production-PNAME_NS'>PNAME_NS</a>)</td>
+</tr>
+            <tr id="grammar-production-BlankNode" data-grammar-original="[69s] BlankNode ::= BLANK_NODE_LABEL| ANON" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;BLANK_NODE_LABEL&#x27;), (&#x27;id&#x27;, &#x27;ANON&#x27;)])" >
+    <td>[69s]<td>
+    <td><code>BlankNode</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-BLANK_NODE_LABEL'>BLANK_NODE_LABEL</a> <code>|</code> <a href='#grammar-production-ANON'>ANON</a>)</td>
+</tr>
+            <tr id="grammar-production-BASE" data-grammar-original="[17] BASE ::= &quot;@base&quot;" data-grammar-expression="(&quot;&#x27;&quot;, &#x27;@base&#x27;)" class='grammar-token'>
+    <td>[17]<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="[18] PREFIX ::= &quot;@prefix&quot;" data-grammar-expression="(&quot;&#x27;&quot;, &#x27;@prefix&#x27;)" class='grammar-token'>
+    <td>[18]<td>
+    <td><code>PREFIX</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>@prefix</code>'</td>
+</tr>
+            <tr id="grammar-production-IRI_REF" data-grammar-original="[70s] IRI_REF ::= &quot;&lt;&quot; ( [^&lt;&gt;\&quot;{}|^`\\] - [#x00-#x20] | UCHAR )* &quot;&gt;&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;&lt;&#x27;), (&#x27;*&#x27;, (&#x27;|&#x27;, [(&#x27;-&#x27;, [(&#x27;[&#x27;, &#x27;^&lt;&gt;\\&quot;{}|^`\\\\&#x27;), (&#x27;[&#x27;, &#x27;#x00-#x20&#x27;)]), (&#x27;id&#x27;, &#x27;UCHAR&#x27;)])), (&quot;&#x27;&quot;, &#x27;&gt;&#x27;)])" class='grammar-token'>
+    <td>[70s]<td>
+    <td><code>IRI_REF</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>&lt;</code>' (([<code class='grammar-chars'>^<>\"{}|^`\\</code>]<code class='grammar-diff'>-</code>[<code class='grammar-chars'>#x00-#x20</code>] <code>|</code> <a href='#grammar-production-UCHAR'>UCHAR</a>))<code class='grammar-star'>*</code> '<code class='grammar-literal'>&gt;</code>'</td>
+</tr>
+            <tr id="grammar-production-PNAME_NS" data-grammar-original="[71s] PNAME_NS ::= (PN_PREFIX)? &quot;:&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;id&#x27;, &#x27;PN_PREFIX&#x27;)), (&quot;&#x27;&quot;, &#x27;:&#x27;)])" class='grammar-token'>
+    <td>[71s]<td>
+    <td><code>PNAME_NS</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PN_PREFIX'>PN_PREFIX</a>)? '<code class='grammar-literal'>:</code>'</td>
+</tr>
+            <tr id="grammar-production-PNAME_LN" data-grammar-original="[72s] PNAME_LN ::= PNAME_NS PN_LOCAL" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;PNAME_NS&#x27;), (&#x27;id&#x27;, &#x27;PN_LOCAL&#x27;)])" class='grammar-token'>
+    <td>[72s]<td>
+    <td><code>PNAME_LN</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-PNAME_NS'>PNAME_NS</a> <a href='#grammar-production-PN_LOCAL'>PN_LOCAL</a></td>
+</tr>
+            <tr id="grammar-production-BLANK_NODE_LABEL" data-grammar-original="[73s] BLANK_NODE_LABEL ::= &quot;_:&quot; PN_LOCAL" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;_:&#x27;), (&#x27;id&#x27;, &#x27;PN_LOCAL&#x27;)])" class='grammar-token'>
+    <td>[73s]<td>
+    <td><code>BLANK_NODE_LABEL</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>_:</code>' <a href='#grammar-production-PN_LOCAL'>PN_LOCAL</a></td>
+</tr>
+            <tr id="grammar-production-LANGTAG" data-grammar-original="[76s] LANGTAG ::= BASE| PREFIX| &quot;@&quot; [a-zA-Z]+ ( &quot;-&quot; [a-zA-Z0-9]+ )*" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;BASE&#x27;), (&#x27;id&#x27;, &#x27;PREFIX&#x27;), (&#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>[76s]<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>
+</tr>
+            <tr id="grammar-production-INTEGER" data-grammar-original="[77s] INTEGER ::= [0-9]+" data-grammar-expression="(&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))" class='grammar-token'>
+    <td>[77s]<td>
+    <td><code>INTEGER</code><td>
+    <td>::=</td>
+    <td>([<code class='grammar-chars'>0-9</code>])<code class='grammar-plus'>+</code></td>
+</tr>
+            <tr id="grammar-production-DECIMAL" data-grammar-original="[78s] DECIMAL ::= [0-9]+ &quot;.&quot; [0-9]+| &quot;.&quot; [0-9]+" data-grammar-expression="(&#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;,&#x27;, [(&quot;&#x27;&quot;, &#x27;.&#x27;), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))])])" class='grammar-token'>
+    <td>[78s]<td>
+    <td><code>DECIMAL</code><td>
+    <td>::=</td>
+    <td>(([<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-plus'>+</code> <code>|</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="[79s] DOUBLE ::= [0-9]+ &quot;.&quot; [0-9]+ EXPONENT| &quot;.&quot; ( [0-9] )+ EXPONENT| ( [0-9] )+ EXPONENT" data-grammar-expression="(&#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>[79s]<td>
+    <td><code>DOUBLE</code><td>
+    <td>::=</td>
+    <td>(([<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-plus'>+</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-INTEGER_POSITIVE" data-grammar-original="[80s] INTEGER_POSITIVE ::= &quot;+&quot; INTEGER" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;+&#x27;), (&#x27;id&#x27;, &#x27;INTEGER&#x27;)])" class='grammar-token'>
+    <td>[80s]<td>
+    <td><code>INTEGER_POSITIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>+</code>' <a href='#grammar-production-INTEGER'>INTEGER</a></td>
+</tr>
+            <tr id="grammar-production-DECIMAL_POSITIVE" data-grammar-original="[81s] DECIMAL_POSITIVE ::= &quot;+&quot; DECIMAL" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;+&#x27;), (&#x27;id&#x27;, &#x27;DECIMAL&#x27;)])" class='grammar-token'>
+    <td>[81s]<td>
+    <td><code>DECIMAL_POSITIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>+</code>' <a href='#grammar-production-DECIMAL'>DECIMAL</a></td>
+</tr>
+            <tr id="grammar-production-DOUBLE_POSITIVE" data-grammar-original="[82s] DOUBLE_POSITIVE ::= &quot;+&quot; DOUBLE" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;+&#x27;), (&#x27;id&#x27;, &#x27;DOUBLE&#x27;)])" class='grammar-token'>
+    <td>[82s]<td>
+    <td><code>DOUBLE_POSITIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>+</code>' <a href='#grammar-production-DOUBLE'>DOUBLE</a></td>
+</tr>
+            <tr id="grammar-production-INTEGER_NEGATIVE" data-grammar-original="[83s] INTEGER_NEGATIVE ::= &quot;-&quot; INTEGER" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;-&#x27;), (&#x27;id&#x27;, &#x27;INTEGER&#x27;)])" class='grammar-token'>
+    <td>[83s]<td>
+    <td><code>INTEGER_NEGATIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>-</code>' <a href='#grammar-production-INTEGER'>INTEGER</a></td>
+</tr>
+            <tr id="grammar-production-DECIMAL_NEGATIVE" data-grammar-original="[84s] DECIMAL_NEGATIVE ::= &quot;-&quot; DECIMAL" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;-&#x27;), (&#x27;id&#x27;, &#x27;DECIMAL&#x27;)])" class='grammar-token'>
+    <td>[84s]<td>
+    <td><code>DECIMAL_NEGATIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>-</code>' <a href='#grammar-production-DECIMAL'>DECIMAL</a></td>
+</tr>
+            <tr id="grammar-production-DOUBLE_NEGATIVE" data-grammar-original="[85s] DOUBLE_NEGATIVE ::= &quot;-&quot; DOUBLE" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;-&#x27;), (&#x27;id&#x27;, &#x27;DOUBLE&#x27;)])" class='grammar-token'>
+    <td>[85s]<td>
+    <td><code>DOUBLE_NEGATIVE</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>-</code>' <a href='#grammar-production-DOUBLE'>DOUBLE</a></td>
+</tr>
+            <tr id="grammar-production-EXPONENT" data-grammar-original="[86s] 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>[86s]<td>
+    <td><code>EXPONENT</code><td>
+    <td>::=</td>
+    <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="[148s] 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>[148s]<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>
+</tr>
+            <tr id="grammar-production-STRING_LITERAL2" data-grammar-original="[149s] STRING_LITERAL2 ::= &#x27;&quot;&#x27; ( ( [^#x22#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;^#x22#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><code>STRING_LITERAL2</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>&quot;</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'>&quot;</code>'</td>
+</tr>
+            <tr id="grammar-production-STRING_LITERAL_LONG1" data-grammar-original="[89s] 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>[89s]<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>
+</tr>
+            <tr id="grammar-production-STRING_LITERAL_LONG2" data-grammar-original="[90s] 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>[90s]<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>
+</tr>
+            <tr id="grammar-production-UCHAR" data-grammar-original="[19] 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>[19]<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>
+</tr>
+            <tr id="grammar-production-ECHAR" data-grammar-original="[91s] ECHAR ::= &quot;\\&quot; [tbnrf\\\&quot;&#x27;]" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\\\&#x27;), (&#x27;[&#x27;, &#x27;tbnrf\\\\\\&quot;\&#x27;&#x27;)])" class='grammar-token'>
+    <td>[91s]<td>
+    <td><code>ECHAR</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>\\</code>' [<code class='grammar-chars'>tbnrf\\\"'</code>]</td>
+</tr>
+            <tr id="grammar-production-NIL" data-grammar-original="[92s] NIL ::= &quot;(&quot; (WS)* &quot;)&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;(&#x27;), (&#x27;*&#x27;, (&#x27;id&#x27;, &#x27;WS&#x27;)), (&quot;&#x27;&quot;, &#x27;)&#x27;)])" class='grammar-token'>
+    <td>[92s]<td>
+    <td><code>NIL</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>(</code>' (<a href='#grammar-production-WS'>WS</a>)<code class='grammar-star'>*</code> '<code class='grammar-literal'>)</code>'</td>
+</tr>
+            <tr id="grammar-production-WS" data-grammar-original="[93s] WS ::= &quot; &quot;| &quot;\t&quot;| &quot;\r&quot;| &quot;\n&quot;" data-grammar-expression="(&#x27;|&#x27;, [(&quot;&#x27;&quot;, &#x27; &#x27;), (&quot;&#x27;&quot;, &#x27;\\t&#x27;), (&quot;&#x27;&quot;, &#x27;\\r&#x27;), (&quot;&#x27;&quot;, &#x27;\\n&#x27;)])" class='grammar-token'>
+    <td>[93s]<td>
+    <td><code>WS</code><td>
+    <td>::=</td>
+    <td>('<code class='grammar-literal'> </code>' <code>|</code> '<code class='grammar-literal'>\t</code>' <code>|</code> '<code class='grammar-literal'>\r</code>' <code>|</code> '<code class='grammar-literal'>\n</code>')</td>
+</tr>
+            <tr id="grammar-production-ANON" data-grammar-original="[94s] ANON ::= &quot;[&quot; (WS)* &quot;]&quot;" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;[&#x27;), (&#x27;*&#x27;, (&#x27;id&#x27;, &#x27;WS&#x27;)), (&quot;&#x27;&quot;, &#x27;]&#x27;)])" class='grammar-token'>
+    <td>[94s]<td>
+    <td><code>ANON</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>[</code>' (<a href='#grammar-production-WS'>WS</a>)<code class='grammar-star'>*</code> '<code class='grammar-literal'>]</code>'</td>
+</tr>
+            <tr id="grammar-production-PN_CHARS_BASE" data-grammar-original="[95s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#00C0-#00D6]| [#00D8-#00F6]| [#00F8-#02FF]| [#0370-#037D]| [#037F-#1FFF]| [#200C-#200D]| [#2070-#218F]| [#2C00-#2FEF]| [#3001-#D7FF]| [#F900-#FDCF]| [#FDF0-#FFFD]| [#10000-#EFFFF]" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;[&#x27;, &#x27;A-Z&#x27;), (&#x27;[&#x27;, &#x27;a-z&#x27;), (&#x27;[&#x27;, &#x27;#00C0-#00D6&#x27;), (&#x27;[&#x27;, &#x27;#00D8-#00F6&#x27;), (&#x27;[&#x27;, &#x27;#00F8-#02FF&#x27;), (&#x27;[&#x27;, &#x27;#0370-#037D&#x27;), (&#x27;[&#x27;, &#x27;#037F-#1FFF&#x27;), (&#x27;[&#x27;, &#x27;#200C-#200D&#x27;), (&#x27;[&#x27;, &#x27;#2070-#218F&#x27;), (&#x27;[&#x27;, &#x27;#2C00-#2FEF&#x27;), (&#x27;[&#x27;, &#x27;#3001-#D7FF&#x27;), (&#x27;[&#x27;, &#x27;#F900-#FDCF&#x27;), (&#x27;[&#x27;, &#x27;#FDF0-#FFFD&#x27;), (&#x27;[&#x27;, &#x27;#10000-#EFFFF&#x27;)])" class='grammar-token'>
+    <td>[95s]<td>
+    <td><code>PN_CHARS_BASE</code><td>
+    <td>::=</td>
+    <td>([<code class='grammar-chars'>A-Z</code>] <code>|</code> [<code class='grammar-chars'>a-z</code>] <code>|</code> [<code class='grammar-chars'>#00C0-#00D6</code>] <code>|</code> [<code class='grammar-chars'>#00D8-#00F6</code>] <code>|</code> [<code class='grammar-chars'>#00F8-#02FF</code>] <code>|</code> [<code class='grammar-chars'>#0370-#037D</code>] <code>|</code> [<code class='grammar-chars'>#037F-#1FFF</code>] <code>|</code> [<code class='grammar-chars'>#200C-#200D</code>] <code>|</code> [<code class='grammar-chars'>#2070-#218F</code>] <code>|</code> [<code class='grammar-chars'>#2C00-#2FEF</code>] <code>|</code> [<code class='grammar-chars'>#3001-#D7FF</code>] <code>|</code> [<code class='grammar-chars'>#F900-#FDCF</code>] <code>|</code> [<code class='grammar-chars'>#FDF0-#FFFD</code>] <code>|</code> [<code class='grammar-chars'>#10000-#EFFFF</code>])</td>
+</tr>
+            <tr id="grammar-production-PN_CHARS_U" data-grammar-original="[96s] PN_CHARS_U ::= PN_CHARS_BASE| &quot;_&quot;" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS_BASE&#x27;), (&quot;&#x27;&quot;, &#x27;_&#x27;)])" class='grammar-token'>
+    <td>[96s]<td>
+    <td><code>PN_CHARS_U</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PN_CHARS_BASE'>PN_CHARS_BASE</a> <code>|</code> '<code class='grammar-literal'>_</code>')</td>
+</tr>
+            <tr id="grammar-production-PN_CHARS" data-grammar-original="[98s] PN_CHARS ::= PN_CHARS_U| &quot;-&quot;| [0-9]| #00B7| [#0300-#036F]| [#203F-#2040]" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS_U&#x27;), (&quot;&#x27;&quot;, &#x27;-&#x27;), (&#x27;[&#x27;, &#x27;0-9&#x27;), (&#x27;#&#x27;, &#x27;#00B7&#x27;), (&#x27;[&#x27;, &#x27;#0300-#036F&#x27;), (&#x27;[&#x27;, &#x27;#203F-#2040&#x27;)])" class='grammar-token'>
+    <td>[98s]<td>
+    <td><code>PN_CHARS</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PN_CHARS_U'>PN_CHARS_U</a> <code>|</code> '<code class='grammar-literal'>-</code>' <code>|</code> [<code class='grammar-chars'>0-9</code>] <code>|</code> <code class='grammar-char-escape'>#00B7</code> <code>|</code> [<code class='grammar-chars'>#0300-#036F</code>] <code>|</code> [<code class='grammar-chars'>#203F-#2040</code>])</td>
+</tr>
+            <tr id="grammar-production-PN_PREFIX" data-grammar-original="[99s] PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | &quot;.&quot; )* PN_CHARS )?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS_BASE&#x27;), (&#x27;?&#x27;, (&#x27;,&#x27;, [(&#x27;*&#x27;, (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS&#x27;), (&quot;&#x27;&quot;, &#x27;.&#x27;)])), (&#x27;id&#x27;, &#x27;PN_CHARS&#x27;)]))])" class='grammar-token'>
+    <td>[99s]<td>
+    <td><code>PN_PREFIX</code><td>
+    <td>::=</td>
+    <td><a href='#grammar-production-PN_CHARS_BASE'>PN_CHARS_BASE</a> (((<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-PN_LOCAL" data-grammar-original="[100s] PN_LOCAL ::= ( PN_CHARS_U | [0-9] | PLX ) ( ( PN_CHARS | &#x27;.&#x27; | PLX )*  ( PN_CHARS | PLX ) ) ?" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS_U&#x27;), (&#x27;[&#x27;, &#x27;0-9&#x27;), (&#x27;id&#x27;, &#x27;PLX&#x27;)]), (&#x27;?&#x27;, (&#x27;,&#x27;, [(&#x27;*&#x27;, (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS&#x27;), (&quot;&#x27;&quot;, &#x27;.&#x27;), (&#x27;id&#x27;, &#x27;PLX&#x27;)])), (&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PN_CHARS&#x27;), (&#x27;id&#x27;, &#x27;PLX&#x27;)])]))])" class='grammar-token'>
+    <td>[100s]<td>
+    <td><code>PN_LOCAL</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PN_CHARS_U'>PN_CHARS_U</a> <code>|</code> [<code class='grammar-chars'>0-9</code>] <code>|</code> <a href='#grammar-production-PLX'>PLX</a>) (((<a href='#grammar-production-PN_CHARS'>PN_CHARS</a> <code>|</code> '<code class='grammar-literal'>.</code>' <code>|</code> <a href='#grammar-production-PLX'>PLX</a>))<code class='grammar-star'>*</code> (<a href='#grammar-production-PN_CHARS'>PN_CHARS</a> <code>|</code> <a href='#grammar-production-PLX'>PLX</a>))?</td>
+</tr>
+            <tr id="grammar-production-PLX" data-grammar-original="[160s] PLX ::= PERCENT | PN_LOCAL_ESC" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;id&#x27;, &#x27;PERCENT&#x27;), (&#x27;id&#x27;, &#x27;PN_LOCAL_ESC&#x27;)])" class='grammar-token'>
+    <td>[160s]<td>
+    <td><code>PLX</code><td>
+    <td>::=</td>
+    <td>(<a href='#grammar-production-PERCENT'>PERCENT</a> <code>|</code> <a href='#grammar-production-PN_LOCAL_ESC'>PN_LOCAL_ESC</a>)</td>
+</tr>
+            <tr id="grammar-production-PERCENT" data-grammar-original="[161s] PERCENT ::= &#x27;%&#x27; HEX HEX" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;%&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)])" class='grammar-token'>
+    <td>[161s]<td>
+    <td><code>PERCENT</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>%</code>' <a href='#grammar-production-HEX'>HEX</a> <a href='#grammar-production-HEX'>HEX</a></td>
+</tr>
+            <tr id="grammar-production-HEX" data-grammar-original="[162s] HEX ::= [0-9] | [A-F] | [a-f]" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;[&#x27;, &#x27;0-9&#x27;), (&#x27;[&#x27;, &#x27;A-F&#x27;), (&#x27;[&#x27;, &#x27;a-f&#x27;)])" class='grammar-token'>
+    <td>[162s]<td>
+    <td><code>HEX</code><td>
+    <td>::=</td>
+    <td>([<code class='grammar-chars'>0-9</code>] <code>|</code> [<code class='grammar-chars'>A-F</code>] <code>|</code> [<code class='grammar-chars'>a-f</code>])</td>
+</tr>
+            <tr id="grammar-production-PN_LOCAL_ESC" data-grammar-original="[163s] PN_LOCAL_ESC ::= &#x27;\\&#x27; ( &#x27;_&#x27; | &#x27;~&#x27; | &#x27;.&#x27; | &#x27;-&#x27; | &#x27;!&#x27; | &#x27;$&#x27; | &#x27;&amp;&#x27; | &quot;&#x27;&quot; | &#x27;(&#x27; | &#x27;)&#x27; | &#x27;*&#x27; | &#x27;+&#x27; | &#x27;,&#x27; | &#x27;;&#x27; | &#x27;=&#x27; | &#x27;:&#x27; | &#x27;/&#x27; | &#x27;?&#x27; | &#x27;#&#x27; | &#x27;@&#x27; | &#x27;%&#x27; )" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\\\&#x27;), (&#x27;|&#x27;, [(&quot;&#x27;&quot;, &#x27;_&#x27;), (&quot;&#x27;&quot;, &#x27;~&#x27;), (&quot;&#x27;&quot;, &#x27;.&#x27;), (&quot;&#x27;&quot;, &#x27;-&#x27;), (&quot;&#x27;&quot;, &#x27;!&#x27;), (&quot;&#x27;&quot;, &#x27;$&#x27;), (&quot;&#x27;&quot;, &#x27;&amp;&#x27;), (&quot;&#x27;&quot;, &quot;&#x27;&quot;), (&quot;&#x27;&quot;, &#x27;(&#x27;), (&quot;&#x27;&quot;, &#x27;)&#x27;), (&quot;&#x27;&quot;, &#x27;*&#x27;), (&quot;&#x27;&quot;, &#x27;+&#x27;), (&quot;&#x27;&quot;, &#x27;,&#x27;), (&quot;&#x27;&quot;, &#x27;;&#x27;), (&quot;&#x27;&quot;, &#x27;=&#x27;), (&quot;&#x27;&quot;, &#x27;:&#x27;), (&quot;&#x27;&quot;, &#x27;/&#x27;), (&quot;&#x27;&quot;, &#x27;?&#x27;), (&quot;&#x27;&quot;, &#x27;#&#x27;), (&quot;&#x27;&quot;, &#x27;@&#x27;), (&quot;&#x27;&quot;, &#x27;%&#x27;)])])" class='grammar-token'>
+    <td>[163s]<td>
+    <td><code>PN_LOCAL_ESC</code><td>
+    <td>::=</td>
+    <td>'<code class='grammar-literal'>\\</code>' ('<code class='grammar-literal'>_</code>' <code>|</code> '<code class='grammar-literal'>~</code>' <code>|</code> '<code class='grammar-literal'>.</code>' <code>|</code> '<code class='grammar-literal'>-</code>' <code>|</code> '<code class='grammar-literal'>!</code>' <code>|</code> '<code class='grammar-literal'>$</code>' <code>|</code> '<code class='grammar-literal'>&amp;</code>' <code>|</code> '<code class='grammar-literal'>&#x27;</code>' <code>|</code> '<code class='grammar-literal'>(</code>' <code>|</code> '<code class='grammar-literal'>)</code>' <code>|</code> '<code class='grammar-literal'>*</code>' <code>|</code> '<code class='grammar-literal'>+</code>' <code>|</code> '<code class='grammar-literal'>,</code>' <code>|</code> '<code class='grammar-literal'>;</code>' <code>|</code> '<code class='grammar-literal'>=</code>' <code>|</code> '<code class='grammar-literal'>:</code>' <code>|</code> '<code class='grammar-literal'>/</code>' <code>|</code> '<code class='grammar-literal'>?</code>' <code>|</code> '<code class='grammar-literal'>#</code>' <code>|</code> '<code class='grammar-literal'>@</code>' <code>|</code> '<code class='grammar-literal'>%</code>')</td>
+</tr>
+    </tbody>
+</table>
--- a/rdf-turtle/turtle.bnf	Mon Apr 02 08:08:35 2012 -0700
+++ b/rdf-turtle/turtle.bnf	Wed Apr 25 16:57:38 2012 -0700
@@ -151,7 +151,4 @@
 
 [162s] HEX ::= [0-9] | [A-F] | [a-f]
 
-[163s] PN_LOCAL_ESC ::= '\\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | ':' | '/' | '?' | '#' | '@' | '%' )
- 
[email protected] ::= [ \t\r\n]+ 
- | "#" [^\r\n]* 
\ No newline at end of file
+[163s] PN_LOCAL_ESC ::= '\\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | ':' | '/' | '?' | '#' | '@' | '%' )
\ No newline at end of file