ebnf 1.2.0 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +223 -199
  3. data/UNLICENSE +1 -1
  4. data/VERSION +1 -1
  5. data/bin/ebnf +38 -19
  6. data/etc/abnf-core.ebnf +52 -0
  7. data/etc/abnf.abnf +121 -0
  8. data/etc/abnf.ebnf +124 -0
  9. data/etc/abnf.sxp +45 -0
  10. data/etc/doap.ttl +23 -18
  11. data/etc/ebnf.ebnf +21 -33
  12. data/etc/ebnf.html +76 -160
  13. data/etc/{ebnf.rb → ebnf.ll1.rb} +30 -107
  14. data/etc/ebnf.ll1.sxp +182 -183
  15. data/etc/ebnf.peg.rb +90 -0
  16. data/etc/ebnf.peg.sxp +84 -0
  17. data/etc/ebnf.sxp +40 -41
  18. data/etc/iso-ebnf.ebnf +140 -0
  19. data/etc/iso-ebnf.isoebnf +138 -0
  20. data/etc/iso-ebnf.sxp +65 -0
  21. data/etc/sparql.ebnf +4 -4
  22. data/etc/sparql.html +1603 -1751
  23. data/etc/sparql.ll1.sxp +7372 -7372
  24. data/etc/sparql.peg.rb +532 -0
  25. data/etc/sparql.peg.sxp +597 -0
  26. data/etc/sparql.sxp +363 -362
  27. data/etc/turtle.ebnf +3 -3
  28. data/etc/turtle.html +465 -517
  29. data/etc/{turtle.rb → turtle.ll1.rb} +3 -4
  30. data/etc/turtle.ll1.sxp +425 -425
  31. data/etc/turtle.peg.rb +182 -0
  32. data/etc/turtle.peg.sxp +199 -0
  33. data/etc/turtle.sxp +103 -101
  34. data/lib/ebnf.rb +6 -1
  35. data/lib/ebnf/abnf.rb +301 -0
  36. data/lib/ebnf/abnf/core.rb +23 -0
  37. data/lib/ebnf/abnf/meta.rb +111 -0
  38. data/lib/ebnf/base.rb +114 -69
  39. data/lib/ebnf/bnf.rb +1 -26
  40. data/lib/ebnf/ebnf/meta.rb +90 -0
  41. data/lib/ebnf/isoebnf.rb +229 -0
  42. data/lib/ebnf/isoebnf/meta.rb +75 -0
  43. data/lib/ebnf/ll1.rb +131 -3
  44. data/lib/ebnf/ll1/lexer.rb +20 -22
  45. data/lib/ebnf/ll1/parser.rb +97 -64
  46. data/lib/ebnf/ll1/scanner.rb +82 -50
  47. data/lib/ebnf/native.rb +320 -0
  48. data/lib/ebnf/parser.rb +285 -302
  49. data/lib/ebnf/peg.rb +39 -0
  50. data/lib/ebnf/peg/parser.rb +561 -0
  51. data/lib/ebnf/peg/rule.rb +250 -0
  52. data/lib/ebnf/rule.rb +442 -148
  53. data/lib/ebnf/terminals.rb +21 -0
  54. data/lib/ebnf/writer.rb +587 -82
  55. metadata +125 -18
  56. data/etc/sparql.rb +0 -45773
data/etc/turtle.ebnf CHANGED
@@ -26,11 +26,11 @@
26
26
 
27
27
  @terminals
28
28
 
29
- [18] IRIREF ::= '<' ([^#x00-#x20<>"{}|^`\] | UCHAR)* '>'
29
+ [18] IRIREF ::= '<' ([^<>"{}|^`\]-[#x00-#x20] | UCHAR)* '>'
30
30
  [139s] PNAME_NS ::= PN_PREFIX? ":"
31
31
  [140s] PNAME_LN ::= PNAME_NS PN_LOCAL
32
32
  [141s] BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
33
- [144s] LANGTAG ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )*
33
+ [144s] LANGTAG ::= "@" ([a-zA-Z])+ ( "-" ([a-zA-Z0-9])+ )*
34
34
  [19] INTEGER ::= [+-]? [0-9]+
35
35
  [20] DECIMAL ::= [+-]? ( ([0-9])* '.' ([0-9])+ )
36
36
  [21] DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+ EXPONENT )
@@ -65,6 +65,6 @@
65
65
  [168s] PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )* ( PN_CHARS | ':' | PLX ) ) ?
66
66
  [169s] PLX ::= PERCENT | PN_LOCAL_ESC
67
67
  [170s] PERCENT ::= '%' HEX HEX
68
- [171s] HEX ::= [0-9] | [A-F] | [a-f]
68
+ [171s] HEX ::= [0-9A-Fa-f]
69
69
  [172s] PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '='
70
70
  | '/' | '?' | '#' | '@' | '%' )
data/etc/turtle.html CHANGED
@@ -1,519 +1,467 @@
1
1
  <table class='grammar'>
2
- <tbody id='grammar-productions'>
3
- <tr id='grammar-production-turtleDoc'>
4
- <td>[1]</td>
5
- <td><code>turtleDoc</code></td>
6
- <td>::=</td>
7
- <td>
8
- <a href="#grammar-production-statement">statement</a><code>*</code>
9
- </td>
10
- </tr>
11
- <tr id='grammar-production-statement'>
12
- <td>[2]</td>
13
- <td><code>statement</code></td>
14
- <td>::=</td>
15
- <td>
16
- <a href="#grammar-production-directive">directive</a>
17
- <code>|</code> <a href="#grammar-production-triples">triples</a> "<code class="grammar-literal">.</code>"
18
- </td>
19
- </tr>
20
- <tr id='grammar-production-directive'>
21
- <td>[3]</td>
22
- <td><code>directive</code></td>
23
- <td>::=</td>
24
- <td>
25
- <a href="#grammar-production-prefixID">prefixID</a>
26
- <code>|</code> <a href="#grammar-production-base">base</a>
27
- <code>|</code> <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a>
28
- <code>|</code> <a href="#grammar-production-sparqlBase">sparqlBase</a>
29
- </td>
30
- </tr>
31
- <tr id='grammar-production-prefixID'>
32
- <td>[4]</td>
33
- <td><code>prefixID</code></td>
34
- <td>::=</td>
35
- <td>
36
- "<code class="grammar-literal">@prefix</code>"
37
- <a href="#grammar-production-PNAME_NS">PNAME_NS</a>
38
- <a href="#grammar-production-IRIREF">IRIREF</a>
39
- "<code class="grammar-literal">.</code>"
40
- </td>
41
- </tr>
42
- <tr id='grammar-production-base'>
43
- <td>[5]</td>
44
- <td><code>base</code></td>
45
- <td>::=</td>
46
- <td>
47
- "<code class="grammar-literal">@base</code>"
48
- <a href="#grammar-production-IRIREF">IRIREF</a>
49
- "<code class="grammar-literal">.</code>"
50
- </td>
51
- </tr>
52
- <tr id='grammar-production-sparqlPrefix'>
53
- <td>[28s]</td>
54
- <td><code>sparqlPrefix</code></td>
55
- <td>::=</td>
56
- <td>
57
- <a href="#grammar-production-SPARQL_PREFIX">SPARQL_PREFIX</a>
58
- <a href="#grammar-production-PNAME_NS">PNAME_NS</a>
59
- <a href="#grammar-production-IRIREF">IRIREF</a>
60
- </td>
61
- </tr>
62
- <tr id='grammar-production-sparqlBase'>
63
- <td>[29s]</td>
64
- <td><code>sparqlBase</code></td>
65
- <td>::=</td>
66
- <td>
67
- <a href="#grammar-production-SPARQL_BASE">SPARQL_BASE</a>
68
- <a href="#grammar-production-IRIREF">IRIREF</a>
69
- </td>
70
- </tr>
71
- <tr id='grammar-production-triples'>
72
- <td>[6]</td>
73
- <td><code>triples</code></td>
74
- <td>::=</td>
75
- <td>
76
- <a href="#grammar-production-subject">subject</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a>
77
- <code>|</code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a><code>?</code>
78
- </td>
79
- </tr>
80
- <tr id='grammar-production-predicateObjectList'>
81
- <td>[7]</td>
82
- <td><code>predicateObjectList</code></td>
83
- <td>::=</td>
84
- <td>
85
- <a href="#grammar-production-verb">verb</a>
86
- <a href="#grammar-production-objectList">objectList</a>
87
- ("<code class="grammar-literal">;</code>" (<a href="#grammar-production-verb">verb</a> <a href="#grammar-production-objectList">objectList</a>)<code>?</code> )<code>*</code>
88
- </td>
89
- </tr>
90
- <tr id='grammar-production-objectList'>
91
- <td>[8]</td>
92
- <td><code>objectList</code></td>
93
- <td>::=</td>
94
- <td>
95
- <a href="#grammar-production-object">object</a>
96
- ("<code class="grammar-literal">,</code>" <a href="#grammar-production-object">object</a>)<code>*</code>
97
- </td>
98
- </tr>
99
- <tr id='grammar-production-verb'>
100
- <td>[9]</td>
101
- <td><code>verb</code></td>
102
- <td>::=</td>
103
- <td>
104
- <a href="#grammar-production-predicate">predicate</a>
105
- <code>|</code> "<code class="grammar-literal">a</code>"
106
- </td>
107
- </tr>
108
- <tr id='grammar-production-subject'>
109
- <td>[10]</td>
110
- <td><code>subject</code></td>
111
- <td>::=</td>
112
- <td>
113
- <a href="#grammar-production-iri">iri</a>
114
- <code>|</code> <a href="#grammar-production-BlankNode">BlankNode</a>
115
- <code>|</code> <a href="#grammar-production-collection">collection</a>
116
- </td>
117
- </tr>
118
- <tr id='grammar-production-predicate'>
119
- <td>[11]</td>
120
- <td><code>predicate</code></td>
121
- <td>::=</td>
122
- <td>
123
- <a href="#grammar-production-iri">iri</a>
124
- </td>
125
- </tr>
126
- <tr id='grammar-production-object'>
127
- <td>[12]</td>
128
- <td><code>object</code></td>
129
- <td>::=</td>
130
- <td>
131
- <a href="#grammar-production-iri">iri</a>
132
- <code>|</code> <a href="#grammar-production-BlankNode">BlankNode</a>
133
- <code>|</code> <a href="#grammar-production-collection">collection</a>
134
- <code>|</code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a>
135
- <code>|</code> <a href="#grammar-production-literal">literal</a>
136
- </td>
137
- </tr>
138
- <tr id='grammar-production-literal'>
139
- <td>[13]</td>
140
- <td><code>literal</code></td>
141
- <td>::=</td>
142
- <td>
143
- <a href="#grammar-production-RDFLiteral">RDFLiteral</a>
144
- <code>|</code> <a href="#grammar-production-NumericLiteral">NumericLiteral</a>
145
- <code>|</code> <a href="#grammar-production-BooleanLiteral">BooleanLiteral</a>
146
- </td>
147
- </tr>
148
- <tr id='grammar-production-blankNodePropertyList'>
149
- <td>[14]</td>
150
- <td><code>blankNodePropertyList</code></td>
151
- <td>::=</td>
152
- <td>
153
- "<code class="grammar-literal">[</code>"
154
- <a href="#grammar-production-predicateObjectList">predicateObjectList</a>
155
- "<code class="grammar-literal">]</code>"
156
- </td>
157
- </tr>
158
- <tr id='grammar-production-collection'>
159
- <td>[15]</td>
160
- <td><code>collection</code></td>
161
- <td>::=</td>
162
- <td>
163
- "<code class="grammar-literal">(</code>"
164
- <a href="#grammar-production-object">object</a><code>*</code>
165
- "<code class="grammar-literal">)</code>"
166
- </td>
167
- </tr>
168
- <tr id='grammar-production-NumericLiteral'>
169
- <td>[16]</td>
170
- <td><code>NumericLiteral</code></td>
171
- <td>::=</td>
172
- <td>
173
- <a href="#grammar-production-INTEGER">INTEGER</a>
174
- <code>|</code> <a href="#grammar-production-DECIMAL">DECIMAL</a>
175
- <code>|</code> <a href="#grammar-production-DOUBLE">DOUBLE</a>
176
- </td>
177
- </tr>
178
- <tr id='grammar-production-RDFLiteral'>
179
- <td>[128s]</td>
180
- <td><code>RDFLiteral</code></td>
181
- <td>::=</td>
182
- <td>
183
- <a href="#grammar-production-String">String</a>
184
- (<a href="#grammar-production-LANGTAG">LANGTAG</a> <code>|</code> "<code class="grammar-literal">^^</code>" <a href="#grammar-production-iri">iri</a>)<code>?</code>
185
- </td>
186
- </tr>
187
- <tr id='grammar-production-BooleanLiteral'>
188
- <td>[133s]</td>
189
- <td><code>BooleanLiteral</code></td>
190
- <td>::=</td>
191
- <td>
192
- "<code class="grammar-literal">true</code>"
193
- <code>|</code> "<code class="grammar-literal">false</code>"
194
- </td>
195
- </tr>
196
- <tr id='grammar-production-String'>
197
- <td>[17]</td>
198
- <td><code>String</code></td>
199
- <td>::=</td>
200
- <td>
201
- <a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a>
202
- <code>|</code> <a href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE">STRING_LITERAL_SINGLE_QUOTE</a>
203
- <code>|</code> <a href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">STRING_LITERAL_LONG_SINGLE_QUOTE</a>
204
- <code>|</code> <a href="#grammar-production-STRING_LITERAL_LONG_QUOTE">STRING_LITERAL_LONG_QUOTE</a>
205
- </td>
206
- </tr>
207
- <tr id='grammar-production-iri'>
208
- <td>[135s]</td>
209
- <td><code>iri</code></td>
210
- <td>::=</td>
211
- <td>
212
- <a href="#grammar-production-IRIREF">IRIREF</a>
213
- <code>|</code> <a href="#grammar-production-PrefixedName">PrefixedName</a>
214
- </td>
215
- </tr>
216
- <tr id='grammar-production-PrefixedName'>
217
- <td>[136s]</td>
218
- <td><code>PrefixedName</code></td>
219
- <td>::=</td>
220
- <td>
221
- <a href="#grammar-production-PNAME_LN">PNAME_LN</a>
222
- <code>|</code> <a href="#grammar-production-PNAME_NS">PNAME_NS</a>
223
- </td>
224
- </tr>
225
- <tr id='grammar-production-BlankNode'>
226
- <td>[137s]</td>
227
- <td><code>BlankNode</code></td>
228
- <td>::=</td>
229
- <td>
230
- <a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a>
231
- <code>|</code> <a href="#grammar-production-ANON">ANON</a>
232
- </td>
233
- </tr>
234
- <tr id='grammar-production-IRIREF'>
235
- <td>[18]</td>
236
- <td><code>IRIREF</code></td>
237
- <td>::=</td>
238
- <td>
239
- "<code class="grammar-literal"><</code>"
240
- <code>[</code> <code class="grammar-literal">^</code><code class="grammar-char-escape">#x00</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal"><>"{}|^`]</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">|</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">UCHAR)*</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">'>'</code><code>]</code>
241
- </td>
242
- </tr>
243
- <tr id='grammar-production-PNAME_NS'>
244
- <td>[139s]</td>
245
- <td><code>PNAME_NS</code></td>
246
- <td>::=</td>
247
- <td>
248
- <a href="#grammar-production-PN_PREFIX">PN_PREFIX</a><code>?</code>
249
- "<code class="grammar-literal">:</code>"
250
- </td>
251
- </tr>
252
- <tr id='grammar-production-PNAME_LN'>
253
- <td>[140s]</td>
254
- <td><code>PNAME_LN</code></td>
255
- <td>::=</td>
256
- <td>
257
- <a href="#grammar-production-PNAME_NS">PNAME_NS</a>
258
- <a href="#grammar-production-PN_LOCAL">PN_LOCAL</a>
259
- </td>
260
- </tr>
261
- <tr id='grammar-production-BLANK_NODE_LABEL'>
262
- <td>[141s]</td>
263
- <td><code>BLANK_NODE_LABEL</code></td>
264
- <td>::=</td>
265
- <td>
266
- "<code class="grammar-literal">_:</code>"
267
- <code>(</code> <a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>|</code> <code>[</code> <code class="grammar-literal">0-9</code><code>]</code> <code>)</code>
268
- (<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>|</code> "<code class="grammar-literal">.</code>")<code>*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a><code>?</code>
269
- </td>
270
- </tr>
271
- <tr id='grammar-production-LANGTAG'>
272
- <td>[144s]</td>
273
- <td><code>LANGTAG</code></td>
274
- <td>::=</td>
275
- <td>
276
- "<code class="grammar-literal">@</code>"
277
- (<code>[</code> <code class="grammar-literal">a-zA-Z</code><code>]</code> )<code>+</code>
278
- ("<code class="grammar-literal">-</code>" (<code>[</code> <code class="grammar-literal">a-zA-Z0-9</code><code>]</code> )<code>+</code> )<code>*</code>
279
- </td>
280
- </tr>
281
- <tr id='grammar-production-INTEGER'>
282
- <td>[19]</td>
283
- <td><code>INTEGER</code></td>
284
- <td>::=</td>
285
- <td>
286
- (<code>[</code> <code class="grammar-literal">+-</code><code>]</code> )<code>?</code>
287
- (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code>
288
- </td>
289
- </tr>
290
- <tr id='grammar-production-DECIMAL'>
291
- <td>[20]</td>
292
- <td><code>DECIMAL</code></td>
293
- <td>::=</td>
294
- <td>
295
- (<code>[</code> <code class="grammar-literal">+-</code><code>]</code> )<code>?</code>
296
- <code>(</code> (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>*</code> "<code class="grammar-literal">.</code>" (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code> <code>)</code>
297
- </td>
298
- </tr>
299
- <tr id='grammar-production-DOUBLE'>
300
- <td>[21]</td>
301
- <td><code>DOUBLE</code></td>
302
- <td>::=</td>
303
- <td>
304
- (<code>[</code> <code class="grammar-literal">+-</code><code>]</code> )<code>?</code>
305
- <code>(</code> (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code> "<code class="grammar-literal">.</code>" (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>*</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>|</code> "<code class="grammar-literal">.</code>" (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>|</code> (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code> <a href="#grammar-production-EXPONENT">EXPONENT</a><code>)</code>
306
- </td>
307
- </tr>
308
- <tr id='grammar-production-EXPONENT'>
309
- <td>[154s]</td>
310
- <td><code>EXPONENT</code></td>
311
- <td>::=</td>
312
- <td>
313
- <code>[</code> <code class="grammar-literal">eE</code><code>]</code>
314
- (<code>[</code> <code class="grammar-literal">+-</code><code>]</code> )<code>?</code>
315
- (<code>[</code> <code class="grammar-literal">0-9</code><code>]</code> )<code>+</code>
316
- </td>
317
- </tr>
318
- <tr id='grammar-production-STRING_LITERAL_QUOTE'>
319
- <td>[22]</td>
320
- <td><code>STRING_LITERAL_QUOTE</code></td>
321
- <td>::=</td>
322
- <td>
323
- '<code class="grammar-literal">"</code>'
324
- (<code>[</code> <code class="grammar-literal">^</code><code class="grammar-char-escape">#x22</code><code class="grammar-char-escape">#x5C</code><code class="grammar-char-escape">#xA</code><code class="grammar-char-escape">#xD</code><code>]</code> <code>|</code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>|</code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code>*</code>
325
- '<code class="grammar-literal">"</code>'
326
- </td>
327
- </tr>
328
- <tr id='grammar-production-STRING_LITERAL_SINGLE_QUOTE'>
329
- <td>[23]</td>
330
- <td><code>STRING_LITERAL_SINGLE_QUOTE</code></td>
331
- <td>::=</td>
332
- <td>
333
- "<code class="grammar-literal">'</code>"
334
- (<code>[</code> <code class="grammar-literal">^</code><code class="grammar-char-escape">#x27</code><code class="grammar-char-escape">#x5C</code><code class="grammar-char-escape">#xA</code><code class="grammar-char-escape">#xD</code><code>]</code> <code>|</code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>|</code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code>*</code>
335
- "<code class="grammar-literal">'</code>"
336
- </td>
337
- </tr>
338
- <tr id='grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE'>
339
- <td>[24]</td>
340
- <td><code>STRING_LITERAL_LONG_SINGLE_QUOTE</code></td>
341
- <td>::=</td>
342
- <td>
343
- "<code class="grammar-literal">'''</code>"
344
- <code>(</code> ("<code class="grammar-literal">'</code>" <code>|</code> "<code class="grammar-literal">''</code>")<code>?</code> <code>[</code> <code class="grammar-literal">^']</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">|</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">ECHAR</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">|</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">UCHAR</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">)</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">)*</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">"'''"</code><code>]</code> <code>)</code>
345
- </td>
346
- </tr>
347
- <tr id='grammar-production-STRING_LITERAL_LONG_QUOTE'>
348
- <td>[25]</td>
349
- <td><code>STRING_LITERAL_LONG_QUOTE</code></td>
350
- <td>::=</td>
351
- <td>
352
- '<code class="grammar-literal">"""</code>'
353
- <code>(</code> ('<code class="grammar-literal">"</code>' <code>|</code> '<code class="grammar-literal">""</code>')<code>?</code> <code>[</code> <code class="grammar-literal">^"]</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">|</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">ECHAR</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">|</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">UCHAR</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">)</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">)*</code><code class="grammar-char-escape">#x20</code><code class="grammar-literal">'"""'</code><code>]</code> <code>)</code>
354
- </td>
355
- </tr>
356
- <tr id='grammar-production-UCHAR'>
357
- <td>[26]</td>
358
- <td><code>UCHAR</code></td>
359
- <td>::=</td>
360
- <td>
361
- "<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>
362
- <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>
363
- </td>
364
- </tr>
365
- <tr id='grammar-production-ECHAR'>
366
- <td>[159s]</td>
367
- <td><code>ECHAR</code></td>
368
- <td>::=</td>
369
- <td>
370
- "<code class="grammar-literal">\</code>"
371
- <code>[</code> <code class="grammar-literal">tbnrf"'</code><code>]</code>
372
- </td>
373
- </tr>
374
- <tr id='grammar-production-SPARQL_PREFIX'>
375
- <td>[28t]</td>
376
- <td><code>SPARQL_PREFIX</code></td>
377
- <td>::=</td>
378
- <td>
379
- <code>[</code> <code class="grammar-literal">Pp</code><code>]</code>
380
- <code>[</code> <code class="grammar-literal">Rr</code><code>]</code>
381
- <code>[</code> <code class="grammar-literal">Ee</code><code>]</code>
382
- <code>[</code> <code class="grammar-literal">Ff</code><code>]</code>
383
- <code>[</code> <code class="grammar-literal">Ii</code><code>]</code>
384
- <code>[</code> <code class="grammar-literal">Xx</code><code>]</code>
385
- </td>
386
- </tr>
387
- <tr id='grammar-production-SPARQL_BASE'>
388
- <td>[29t]</td>
389
- <td><code>SPARQL_BASE</code></td>
390
- <td>::=</td>
391
- <td>
392
- <code>[</code> <code class="grammar-literal">Bb</code><code>]</code>
393
- <code>[</code> <code class="grammar-literal">Aa</code><code>]</code>
394
- <code>[</code> <code class="grammar-literal">Ss</code><code>]</code>
395
- <code>[</code> <code class="grammar-literal">Ee</code><code>]</code>
396
- </td>
397
- </tr>
398
- <tr id='grammar-production-WS'>
399
- <td>[161s]</td>
400
- <td><code>WS</code></td>
401
- <td>::=</td>
402
- <td>
403
- <code class="grammar-char-escape">#x20</code>
404
- <code>|</code> <code class="grammar-char-escape">#x9</code>
405
- <code>|</code> <code class="grammar-char-escape">#xD</code>
406
- <code>|</code> <code class="grammar-char-escape">#xA</code>
407
- </td>
408
- </tr>
409
- <tr id='grammar-production-ANON'>
410
- <td>[162s]</td>
411
- <td><code>ANON</code></td>
412
- <td>::=</td>
413
- <td>
414
- "<code class="grammar-literal">[</code>"
415
- <a href="#grammar-production-WS">WS</a><code>*</code>
416
- "<code class="grammar-literal">]</code>"
417
- </td>
418
- </tr>
419
- <tr id='grammar-production-PN_CHARS_BASE'>
420
- <td>[163s]</td>
421
- <td><code>PN_CHARS_BASE</code></td>
422
- <td>::=</td>
423
- <td>
424
- <code>[</code> <code class="grammar-literal">A-Z</code><code>]</code>
425
- <code>|</code> <code>[</code> <code class="grammar-literal">a-z</code><code>]</code>
426
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x00C0</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x00D6</code><code>]</code>
427
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x00D8</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x00F6</code><code>]</code>
428
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x00F8</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x02FF</code><code>]</code>
429
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x0370</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x037D</code><code>]</code>
430
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x037F</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x1FFF</code><code>]</code>
431
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x200C</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x200D</code><code>]</code>
432
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x2070</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x218F</code><code>]</code>
433
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x2C00</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x2FEF</code><code>]</code>
434
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x3001</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#xD7FF</code><code>]</code>
435
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#xF900</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#xFDCF</code><code>]</code>
436
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#xFDF0</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#xFFFD</code><code>]</code>
437
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x10000</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#xEFFFF</code><code>]</code>
438
- </td>
439
- </tr>
440
- <tr id='grammar-production-PN_CHARS_U'>
441
- <td>[164s]</td>
442
- <td><code>PN_CHARS_U</code></td>
443
- <td>::=</td>
444
- <td>
445
- <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>
446
- <code>|</code> "<code class="grammar-literal">_</code>"
447
- </td>
448
- </tr>
449
- <tr id='grammar-production-PN_CHARS'>
450
- <td>[166s]</td>
451
- <td><code>PN_CHARS</code></td>
452
- <td>::=</td>
453
- <td>
454
- <a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a>
455
- <code>|</code> "<code class="grammar-literal">-</code>"
456
- <code>|</code> <code>[</code> <code class="grammar-literal">0-9</code><code>]</code>
457
- <code>|</code> <code class="grammar-char-escape">#x00B7</code>
458
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x0300</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x036F</code><code>]</code>
459
- <code>|</code> <code>[</code> <code class="grammar-char-escape">#x203F</code><code class="grammar-literal">-</code><code class="grammar-char-escape">#x2040</code><code>]</code>
460
- </td>
461
- </tr>
462
- <tr id='grammar-production-PN_PREFIX'>
463
- <td>[167s]</td>
464
- <td><code>PN_PREFIX</code></td>
465
- <td>::=</td>
466
- <td>
467
- <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>
468
- (<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>|</code> "<code class="grammar-literal">.</code>")<code>*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a><code>?</code>
469
- </td>
470
- </tr>
471
- <tr id='grammar-production-PN_LOCAL'>
472
- <td>[168s]</td>
473
- <td><code>PN_LOCAL</code></td>
474
- <td>::=</td>
475
- <td>
476
- <code>(</code> <a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>|</code> "<code class="grammar-literal">:</code>" <code>|</code> <code>[</code> <code class="grammar-literal">0-9</code><code>]</code> <code>|</code> <a href="#grammar-production-PLX">PLX</a><code>)</code>
477
- (<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>|</code> "<code class="grammar-literal">.</code>" <code>|</code> "<code class="grammar-literal">:</code>" <code>|</code> <a href="#grammar-production-PLX">PLX</a>)<code>*</code> <code>(</code> <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>)</code> <code>?</code>
478
- </td>
479
- </tr>
480
- <tr id='grammar-production-PLX'>
481
- <td>[169s]</td>
482
- <td><code>PLX</code></td>
483
- <td>::=</td>
484
- <td>
485
- <a href="#grammar-production-PERCENT">PERCENT</a>
486
- <code>|</code> <a href="#grammar-production-PN_LOCAL_ESC">PN_LOCAL_ESC</a>
487
- </td>
488
- </tr>
489
- <tr id='grammar-production-PERCENT'>
490
- <td>[170s]</td>
491
- <td><code>PERCENT</code></td>
492
- <td>::=</td>
493
- <td>
494
- "<code class="grammar-literal">%</code>"
495
- <a href="#grammar-production-HEX">HEX</a>
496
- <a href="#grammar-production-HEX">HEX</a>
497
- </td>
498
- </tr>
499
- <tr id='grammar-production-HEX'>
500
- <td>[171s]</td>
501
- <td><code>HEX</code></td>
502
- <td>::=</td>
503
- <td>
504
- <code>[</code> <code class="grammar-literal">0-9</code><code>]</code>
505
- <code>|</code> <code>[</code> <code class="grammar-literal">A-F</code><code>]</code>
506
- <code>|</code> <code>[</code> <code class="grammar-literal">a-f</code><code>]</code>
507
- </td>
508
- </tr>
509
- <tr id='grammar-production-PN_LOCAL_ESC'>
510
- <td>[172s]</td>
511
- <td><code>PN_LOCAL_ESC</code></td>
512
- <td>::=</td>
513
- <td>
514
- "<code class="grammar-literal">\</code>"
515
- <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-char-escape">#x21</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>" <code>|</code> "<code class="grammar-literal">@</code>" <code>|</code> "<code class="grammar-literal">%</code>"<code>)</code>
516
- </td>
517
- </tr>
518
- </tbody>
2
+ <tbody id='grammar-productions'>
3
+ <tr id='grammar-production-turtleDoc'>
4
+ <td>[1]</td>
5
+ <td><code>turtleDoc</code></td>
6
+ <td>::=</td>
7
+ <td>
8
+ statement*
9
+ </td>
10
+ </tr>
11
+ <tr id='grammar-production-statement'>
12
+ <td>[2]</td>
13
+ <td><code>statement</code></td>
14
+ <td>::=</td>
15
+ <td>
16
+ directive | triples "."
17
+ </td>
18
+ </tr>
19
+ <tr id='grammar-production-directive'>
20
+ <td>[3]</td>
21
+ <td><code>directive</code></td>
22
+ <td>::=</td>
23
+ <td>
24
+ prefixID
25
+ | base
26
+ | sparqlPrefix
27
+ | sparqlBase
28
+ </td>
29
+ </tr>
30
+ <tr id='grammar-production-prefixID'>
31
+ <td>[4]</td>
32
+ <td><code>prefixID</code></td>
33
+ <td>::=</td>
34
+ <td>
35
+ "@prefix" PNAME_NS IRIREF "."
36
+ </td>
37
+ </tr>
38
+ <tr id='grammar-production-base'>
39
+ <td>[5]</td>
40
+ <td><code>base</code></td>
41
+ <td>::=</td>
42
+ <td>
43
+ "@base" IRIREF "."
44
+ </td>
45
+ </tr>
46
+ <tr id='grammar-production-sparqlPrefix'>
47
+ <td>[28s]</td>
48
+ <td><code>sparqlPrefix</code></td>
49
+ <td>::=</td>
50
+ <td>
51
+ SPARQL_PREFIX PNAME_NS IRIREF
52
+ </td>
53
+ </tr>
54
+ <tr id='grammar-production-sparqlBase'>
55
+ <td>[29s]</td>
56
+ <td><code>sparqlBase</code></td>
57
+ <td>::=</td>
58
+ <td>
59
+ SPARQL_BASE IRIREF
60
+ </td>
61
+ </tr>
62
+ <tr id='grammar-production-triples'>
63
+ <td>[6]</td>
64
+ <td><code>triples</code></td>
65
+ <td>::=</td>
66
+ <td>
67
+ subject predicateObjectList
68
+ | blankNodePropertyList predicateObjectList?
69
+ </td>
70
+ </tr>
71
+ <tr id='grammar-production-predicateObjectList'>
72
+ <td>[7]</td>
73
+ <td><code>predicateObjectList</code></td>
74
+ <td>::=</td>
75
+ <td>
76
+ verb
77
+ objectList
78
+ (";" (verb objectList)?)*
79
+ </td>
80
+ </tr>
81
+ <tr id='grammar-production-objectList'>
82
+ <td>[8]</td>
83
+ <td><code>objectList</code></td>
84
+ <td>::=</td>
85
+ <td>
86
+ object ("," object)*
87
+ </td>
88
+ </tr>
89
+ <tr id='grammar-production-verb'>
90
+ <td>[9]</td>
91
+ <td><code>verb</code></td>
92
+ <td>::=</td>
93
+ <td>
94
+ predicate | "a"
95
+ </td>
96
+ </tr>
97
+ <tr id='grammar-production-subject'>
98
+ <td>[10]</td>
99
+ <td><code>subject</code></td>
100
+ <td>::=</td>
101
+ <td>
102
+ iri | BlankNode | collection
103
+ </td>
104
+ </tr>
105
+ <tr id='grammar-production-predicate'>
106
+ <td>[11]</td>
107
+ <td><code>predicate</code></td>
108
+ <td>::=</td>
109
+ <td>
110
+ iri
111
+ </td>
112
+ </tr>
113
+ <tr id='grammar-production-object'>
114
+ <td>[12]</td>
115
+ <td><code>object</code></td>
116
+ <td>::=</td>
117
+ <td>
118
+ iri
119
+ | BlankNode
120
+ | collection
121
+ | blankNodePropertyList
122
+ | literal
123
+ </td>
124
+ </tr>
125
+ <tr id='grammar-production-literal'>
126
+ <td>[13]</td>
127
+ <td><code>literal</code></td>
128
+ <td>::=</td>
129
+ <td>
130
+ RDFLiteral
131
+ | NumericLiteral
132
+ | BooleanLiteral
133
+ </td>
134
+ </tr>
135
+ <tr id='grammar-production-blankNodePropertyList'>
136
+ <td>[14]</td>
137
+ <td><code>blankNodePropertyList</code></td>
138
+ <td>::=</td>
139
+ <td>
140
+ "[" predicateObjectList "]"
141
+ </td>
142
+ </tr>
143
+ <tr id='grammar-production-collection'>
144
+ <td>[15]</td>
145
+ <td><code>collection</code></td>
146
+ <td>::=</td>
147
+ <td>
148
+ "(" object* ")"
149
+ </td>
150
+ </tr>
151
+ <tr id='grammar-production-NumericLiteral'>
152
+ <td>[16]</td>
153
+ <td><code>NumericLiteral</code></td>
154
+ <td>::=</td>
155
+ <td>
156
+ INTEGER | DECIMAL | DOUBLE
157
+ </td>
158
+ </tr>
159
+ <tr id='grammar-production-RDFLiteral'>
160
+ <td>[128s]</td>
161
+ <td><code>RDFLiteral</code></td>
162
+ <td>::=</td>
163
+ <td>
164
+ String (LANGTAG | "^^" iri)?
165
+ </td>
166
+ </tr>
167
+ <tr id='grammar-production-BooleanLiteral'>
168
+ <td>[133s]</td>
169
+ <td><code>BooleanLiteral</code></td>
170
+ <td>::=</td>
171
+ <td>
172
+ "true" | "false"
173
+ </td>
174
+ </tr>
175
+ <tr id='grammar-production-String'>
176
+ <td>[17]</td>
177
+ <td><code>String</code></td>
178
+ <td>::=</td>
179
+ <td>
180
+ STRING_LITERAL_QUOTE
181
+ | STRING_LITERAL_SINGLE_QUOTE
182
+ | STRING_LITERAL_LONG_SINGLE_QUOTE
183
+ | STRING_LITERAL_LONG_QUOTE
184
+ </td>
185
+ </tr>
186
+ <tr id='grammar-production-iri'>
187
+ <td>[135s]</td>
188
+ <td><code>iri</code></td>
189
+ <td>::=</td>
190
+ <td>
191
+ IRIREF | PrefixedName
192
+ </td>
193
+ </tr>
194
+ <tr id='grammar-production-PrefixedName'>
195
+ <td>[136s]</td>
196
+ <td><code>PrefixedName</code></td>
197
+ <td>::=</td>
198
+ <td>
199
+ PNAME_LN | PNAME_NS
200
+ </td>
201
+ </tr>
202
+ <tr id='grammar-production-BlankNode'>
203
+ <td>[137s]</td>
204
+ <td><code>BlankNode</code></td>
205
+ <td>::=</td>
206
+ <td>
207
+ BLANK_NODE_LABEL | ANON
208
+ </td>
209
+ </tr>
210
+ <tr id='grammar-production-IRIREF'>
211
+ <td>[18]</td>
212
+ <td><code>IRIREF</code></td>
213
+ <td>::=</td>
214
+ <td>
215
+ "<"
216
+ [^#x00-#x20<>"{}|^`]#x20|#x20UCHAR)*#x20'>']
217
+ </td>
218
+ </tr>
219
+ <tr id='grammar-production-PNAME_NS'>
220
+ <td>[139s]</td>
221
+ <td><code>PNAME_NS</code></td>
222
+ <td>::=</td>
223
+ <td>
224
+ PN_PREFIX? ":"
225
+ </td>
226
+ </tr>
227
+ <tr id='grammar-production-PNAME_LN'>
228
+ <td>[140s]</td>
229
+ <td><code>PNAME_LN</code></td>
230
+ <td>::=</td>
231
+ <td>
232
+ PNAME_NS PN_LOCAL
233
+ </td>
234
+ </tr>
235
+ <tr id='grammar-production-BLANK_NODE_LABEL'>
236
+ <td>[141s]</td>
237
+ <td><code>BLANK_NODE_LABEL</code></td>
238
+ <td>::=</td>
239
+ <td>
240
+ "_:"
241
+ (PN_CHARS_U | [0-9])
242
+ (PN_CHARS | ".")* PN_CHARS?
243
+ </td>
244
+ </tr>
245
+ <tr id='grammar-production-LANGTAG'>
246
+ <td>[144s]</td>
247
+ <td><code>LANGTAG</code></td>
248
+ <td>::=</td>
249
+ <td>
250
+ "@" ([a-zA-Z])+ ("-" ([a-zA-Z0-9])+)*
251
+ </td>
252
+ </tr>
253
+ <tr id='grammar-production-INTEGER'>
254
+ <td>[19]</td>
255
+ <td><code>INTEGER</code></td>
256
+ <td>::=</td>
257
+ <td>
258
+ ([+-])? ([0-9])+
259
+ </td>
260
+ </tr>
261
+ <tr id='grammar-production-DECIMAL'>
262
+ <td>[20]</td>
263
+ <td><code>DECIMAL</code></td>
264
+ <td>::=</td>
265
+ <td>
266
+ ([+-])? (([0-9])* "." ([0-9])+)
267
+ </td>
268
+ </tr>
269
+ <tr id='grammar-production-DOUBLE'>
270
+ <td>[21]</td>
271
+ <td><code>DOUBLE</code></td>
272
+ <td>::=</td>
273
+ <td>
274
+ ([+-])?
275
+ (([0-9])+ "." ([0-9])* EXPONENT | "." ([0-9])+ EXPONENT | ([0-9])+ EXPONENT)
276
+ </td>
277
+ </tr>
278
+ <tr id='grammar-production-EXPONENT'>
279
+ <td>[154s]</td>
280
+ <td><code>EXPONENT</code></td>
281
+ <td>::=</td>
282
+ <td>
283
+ [eE] ([+-])? ([0-9])+
284
+ </td>
285
+ </tr>
286
+ <tr id='grammar-production-STRING_LITERAL_QUOTE'>
287
+ <td>[22]</td>
288
+ <td><code>STRING_LITERAL_QUOTE</code></td>
289
+ <td>::=</td>
290
+ <td>
291
+ '"'
292
+ ([^#x22#x5C#xA#xD] | ECHAR | UCHAR)*
293
+ '"'
294
+ </td>
295
+ </tr>
296
+ <tr id='grammar-production-STRING_LITERAL_SINGLE_QUOTE'>
297
+ <td>[23]</td>
298
+ <td><code>STRING_LITERAL_SINGLE_QUOTE</code></td>
299
+ <td>::=</td>
300
+ <td>
301
+ "'"
302
+ ([^#x27#x5C#xA#xD] | ECHAR | UCHAR)*
303
+ "'"
304
+ </td>
305
+ </tr>
306
+ <tr id='grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE'>
307
+ <td>[24]</td>
308
+ <td><code>STRING_LITERAL_LONG_SINGLE_QUOTE</code></td>
309
+ <td>::=</td>
310
+ <td>
311
+ "'''"
312
+ (("'" | "''")? [^']#x20|#x20ECHAR#x20|#x20UCHAR#x20)#x20)*#x20"'''"])
313
+ </td>
314
+ </tr>
315
+ <tr id='grammar-production-STRING_LITERAL_LONG_QUOTE'>
316
+ <td>[25]</td>
317
+ <td><code>STRING_LITERAL_LONG_QUOTE</code></td>
318
+ <td>::=</td>
319
+ <td>
320
+ '"""'
321
+ (('"' | '""')? [^"]#x20|#x20ECHAR#x20|#x20UCHAR#x20)#x20)*#x20'"""'])
322
+ </td>
323
+ </tr>
324
+ <tr id='grammar-production-UCHAR'>
325
+ <td>[26]</td>
326
+ <td><code>UCHAR</code></td>
327
+ <td>::=</td>
328
+ <td>
329
+ "u" HEX HEX HEX HEX
330
+ | "U" HEX HEX HEX HEX HEX HEX HEX HEX
331
+ </td>
332
+ </tr>
333
+ <tr id='grammar-production-ECHAR'>
334
+ <td>[159s]</td>
335
+ <td><code>ECHAR</code></td>
336
+ <td>::=</td>
337
+ <td>
338
+ "\" [tbnrf"']
339
+ </td>
340
+ </tr>
341
+ <tr id='grammar-production-SPARQL_PREFIX'>
342
+ <td>[28t]</td>
343
+ <td><code>SPARQL_PREFIX</code></td>
344
+ <td>::=</td>
345
+ <td>
346
+ [Pp] [Rr] [Ee] [Ff] [Ii] [Xx]
347
+ </td>
348
+ </tr>
349
+ <tr id='grammar-production-SPARQL_BASE'>
350
+ <td>[29t]</td>
351
+ <td><code>SPARQL_BASE</code></td>
352
+ <td>::=</td>
353
+ <td>
354
+ [Bb] [Aa] [Ss] [Ee]
355
+ </td>
356
+ </tr>
357
+ <tr id='grammar-production-WS'>
358
+ <td>[161s]</td>
359
+ <td><code>WS</code></td>
360
+ <td>::=</td>
361
+ <td>
362
+ #x20 | #x9 | #xD | #xA
363
+ </td>
364
+ </tr>
365
+ <tr id='grammar-production-ANON'>
366
+ <td>[162s]</td>
367
+ <td><code>ANON</code></td>
368
+ <td>::=</td>
369
+ <td>
370
+ "[" WS* "]"
371
+ </td>
372
+ </tr>
373
+ <tr id='grammar-production-PN_CHARS_BASE'>
374
+ <td>[163s]</td>
375
+ <td><code>PN_CHARS_BASE</code></td>
376
+ <td>::=</td>
377
+ <td>
378
+ [A-Z]
379
+ | [a-z]
380
+ | [#x00C0-#x00D6]
381
+ | [#x00D8-#x00F6]
382
+ | [#x00F8-#x02FF]
383
+ | [#x0370-#x037D]
384
+ | [#x037F-#x1FFF]
385
+ | [#x200C-#x200D]
386
+ | [#x2070-#x218F]
387
+ | [#x2C00-#x2FEF]
388
+ | [#x3001-#xD7FF]
389
+ | [#xF900-#xFDCF]
390
+ | [#xFDF0-#xFFFD]
391
+ | [#x10000-#xEFFFF]
392
+ </td>
393
+ </tr>
394
+ <tr id='grammar-production-PN_CHARS_U'>
395
+ <td>[164s]</td>
396
+ <td><code>PN_CHARS_U</code></td>
397
+ <td>::=</td>
398
+ <td>
399
+ PN_CHARS_BASE | "_"
400
+ </td>
401
+ </tr>
402
+ <tr id='grammar-production-PN_CHARS'>
403
+ <td>[166s]</td>
404
+ <td><code>PN_CHARS</code></td>
405
+ <td>::=</td>
406
+ <td>
407
+ PN_CHARS_U
408
+ | "-"
409
+ | [0-9]
410
+ | #x00B7
411
+ | [#x0300-#x036F]
412
+ | [#x203F-#x2040]
413
+ </td>
414
+ </tr>
415
+ <tr id='grammar-production-PN_PREFIX'>
416
+ <td>[167s]</td>
417
+ <td><code>PN_PREFIX</code></td>
418
+ <td>::=</td>
419
+ <td>
420
+ PN_CHARS_BASE
421
+ (PN_CHARS | ".")* PN_CHARS?
422
+ </td>
423
+ </tr>
424
+ <tr id='grammar-production-PN_LOCAL'>
425
+ <td>[168s]</td>
426
+ <td><code>PN_LOCAL</code></td>
427
+ <td>::=</td>
428
+ <td>
429
+ (PN_CHARS_U | ":" | [0-9] | PLX)
430
+ (PN_CHARS | "." | ":" | PLX)* (PN_CHARS | ":" | PLX)?
431
+ </td>
432
+ </tr>
433
+ <tr id='grammar-production-PLX'>
434
+ <td>[169s]</td>
435
+ <td><code>PLX</code></td>
436
+ <td>::=</td>
437
+ <td>
438
+ PERCENT | PN_LOCAL_ESC
439
+ </td>
440
+ </tr>
441
+ <tr id='grammar-production-PERCENT'>
442
+ <td>[170s]</td>
443
+ <td><code>PERCENT</code></td>
444
+ <td>::=</td>
445
+ <td>
446
+ "%" HEX HEX
447
+ </td>
448
+ </tr>
449
+ <tr id='grammar-production-HEX'>
450
+ <td>[171s]</td>
451
+ <td><code>HEX</code></td>
452
+ <td>::=</td>
453
+ <td>
454
+ [0-9] | [A-F] | [a-f]
455
+ </td>
456
+ </tr>
457
+ <tr id='grammar-production-PN_LOCAL_ESC'>
458
+ <td>[172s]</td>
459
+ <td><code>PN_LOCAL_ESC</code></td>
460
+ <td>::=</td>
461
+ <td>
462
+ "\"
463
+ ("_" | "~" | "." | "-" | #x21 | "$" | "&" | "'" | "(" | ")" | "*" | "+" | "," | ";" | "=" | "/" | "?" | "#" | "@" | "%")
464
+ </td>
465
+ </tr>
466
+ </tbody>
519
467
  </table>