ebnf 0.3.7 → 0.3.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,362 @@
1
+ (
2
+ (rule QueryUnit "1" (opt Query))
3
+ (rule Query "2"
4
+ (seq Prologue (alt SelectQuery ConstructQuery DescribeQuery AskQuery)))
5
+ (rule UpdateUnit "3" (seq Update))
6
+ (rule Prologue "4" (star (alt BaseDecl PrefixDecl)))
7
+ (rule BaseDecl "5" (seq "BASE" IRIREF))
8
+ (rule PrefixDecl "6" (seq "PREFIX" PNAME_NS IRIREF))
9
+ (rule SelectQuery "7"
10
+ (seq SelectClause (star DatasetClause) WhereClause SolutionModifier ValuesClause))
11
+ (rule SubSelect "8" (seq SelectClause WhereClause SolutionModifier ValuesClause))
12
+ (rule SelectClause "9"
13
+ (seq "SELECT"
14
+ (opt (alt "DISTINCT" "REDUCED"))
15
+ (alt (plus (alt Var (seq "(" Expression "AS" Var ")"))) "*")) )
16
+ (rule ConstructQuery "10"
17
+ (seq "CONSTRUCT"
18
+ (alt
19
+ (seq ConstructTemplate (star DatasetClause) WhereClause SolutionModifier)
20
+ (seq (star DatasetClause) "WHERE" "{" (opt TriplesTemplate) "}" SolutionModifier)) ValuesClause ))
21
+ (rule DescribeQuery "11"
22
+ (seq "DESCRIBE"
23
+ (alt (plus VarOrIri) "*")
24
+ (star DatasetClause)
25
+ (opt WhereClause) SolutionModifier ValuesClause ))
26
+ (rule AskQuery "12" (seq "ASK" (star DatasetClause) WhereClause ValuesClause))
27
+ (rule DatasetClause "13" (seq "FROM" (alt DefaultGraphClause NamedGraphClause)))
28
+ (rule DefaultGraphClause "14" (seq SourceSelector))
29
+ (rule NamedGraphClause "15" (seq "NAMED" SourceSelector))
30
+ (rule SourceSelector "16" (seq iri))
31
+ (rule WhereClause "17" (seq (opt "WHERE") GroupGraphPattern))
32
+ (rule SolutionModifier "18"
33
+ (seq (opt GroupClause) (opt HavingClause) (opt OrderClause) (opt LimitOffsetClauses)))
34
+ (rule GroupClause "19" (seq "GROUP" "BY" (plus GroupCondition)))
35
+ (rule GroupCondition "20"
36
+ (alt BuiltInCall FunctionCall (seq "(" Expression (opt (seq "AS" Var)) ")") Var))
37
+ (rule HavingClause "21" (seq "HAVING" (plus HavingCondition)))
38
+ (rule HavingCondition "22" (seq Constraint))
39
+ (rule OrderClause "23" (seq "ORDER" "BY" (plus OrderCondition)))
40
+ (rule OrderCondition "24"
41
+ (alt (seq (alt "ASC" "DESC") BrackettedExpression) (alt Constraint Var)))
42
+ (rule LimitOffsetClauses "25"
43
+ (alt (seq LimitClause (opt OffsetClause)) (seq OffsetClause (opt LimitClause))))
44
+ (rule LimitClause "26" (seq "LIMIT" INTEGER))
45
+ (rule OffsetClause "27" (seq "OFFSET" INTEGER))
46
+ (rule ValuesClause "28" (opt (seq "VALUES" DataBlock)))
47
+ (rule Update "29" (seq Prologue (opt (seq Update1 (opt (seq ";" Update))))))
48
+ (rule Update1 "30"
49
+ (alt Load Clear Drop Add Move Copy Create InsertData DeleteData DeleteWhere
50
+ Modify ))
51
+ (rule Load "31" (seq "LOAD" (opt "SILENT") iri (opt (seq "INTO" GraphRef))))
52
+ (rule Clear "32" (seq "CLEAR" (opt "SILENT") GraphRefAll))
53
+ (rule Drop "33" (seq "DROP" (opt "SILENT") GraphRefAll))
54
+ (rule Create "34" (seq "CREATE" (opt "SILENT") GraphRef))
55
+ (rule Add "35" (seq "ADD" (opt "SILENT") GraphOrDefault "TO" GraphOrDefault))
56
+ (rule Move "36" (seq "MOVE" (opt "SILENT") GraphOrDefault "TO" GraphOrDefault))
57
+ (rule Copy "37" (seq "COPY" (opt "SILENT") GraphOrDefault "TO" GraphOrDefault))
58
+ (rule InsertData "38" (seq "INSERT DATA" QuadData))
59
+ (rule DeleteData "39" (seq "DELETE DATA" QuadData))
60
+ (rule DeleteWhere "40" (seq "DELETE WHERE" QuadPattern))
61
+ (rule Modify "41"
62
+ (seq
63
+ (opt (seq "WITH" iri))
64
+ (alt (seq DeleteClause (opt InsertClause)) InsertClause)
65
+ (star UsingClause) "WHERE" GroupGraphPattern ))
66
+ (rule DeleteClause "42" (seq "DELETE" QuadPattern))
67
+ (rule InsertClause "43" (seq "INSERT" QuadPattern))
68
+ (rule UsingClause "44" (seq "USING" (alt iri (seq "NAMED" iri))))
69
+ (rule GraphOrDefault "45" (alt "DEFAULT" (seq (opt "GRAPH") iri)))
70
+ (rule GraphRef "46" (seq "GRAPH" iri))
71
+ (rule GraphRefAll "47" (alt GraphRef "DEFAULT" "NAMED" "ALL"))
72
+ (rule QuadPattern "48" (seq "{" Quads "}"))
73
+ (rule QuadData "49" (seq "{" Quads "}"))
74
+ (rule Quads "50"
75
+ (seq (opt TriplesTemplate) (star (seq QuadsNotTriples (opt ".") (opt TriplesTemplate)))))
76
+ (rule QuadsNotTriples "51" (seq "GRAPH" VarOrIri "{" (opt TriplesTemplate) "}"))
77
+ (rule TriplesTemplate "52" (seq TriplesSameSubject (opt (seq "." (opt TriplesTemplate)))))
78
+ (rule GroupGraphPattern "53" (seq "{" (alt SubSelect GroupGraphPatternSub) "}"))
79
+ (rule GroupGraphPatternSub "54"
80
+ (seq (opt TriplesBlock) (star (seq GraphPatternNotTriples (opt ".") (opt TriplesBlock)))))
81
+ (rule TriplesBlock "55" (seq TriplesSameSubjectPath (opt (seq "." (opt TriplesBlock)))))
82
+ (rule GraphPatternNotTriples "56"
83
+ (alt GroupOrUnionGraphPattern OptionalGraphPattern MinusGraphPattern
84
+ GraphGraphPattern ServiceGraphPattern Filter Bind InlineData ))
85
+ (rule OptionalGraphPattern "57" (seq "OPTIONAL" GroupGraphPattern))
86
+ (rule GraphGraphPattern "58" (seq "GRAPH" VarOrIri GroupGraphPattern))
87
+ (rule ServiceGraphPattern "59"
88
+ (seq "SERVICE" (opt "SILENT") VarOrIri GroupGraphPattern))
89
+ (rule Bind "60" (seq "BIND" "(" Expression "AS" Var ")"))
90
+ (rule InlineData "61" (seq "VALUES" DataBlock))
91
+ (rule DataBlock "62" (alt InlineDataOneVar InlineDataFull))
92
+ (rule InlineDataOneVar "63" (seq Var "{" (star DataBlockValue) "}"))
93
+ (rule InlineDataFull "64"
94
+ (seq
95
+ (alt NIL (seq "(" (star Var) ")")) "{"
96
+ (star (alt (seq "(" (star DataBlockValue) ")") NIL)) "}" ))
97
+ (rule DataBlockValue "65"
98
+ (alt iri RDFLiteral NumericLiteral BooleanLiteral "UNDEF"))
99
+ (rule MinusGraphPattern "66" (seq "MINUS" GroupGraphPattern))
100
+ (rule GroupOrUnionGraphPattern "67"
101
+ (seq GroupGraphPattern (star (seq "UNION" GroupGraphPattern))))
102
+ (rule Filter "68" (seq "FILTER" Constraint))
103
+ (rule Constraint "69" (alt BrackettedExpression BuiltInCall FunctionCall))
104
+ (rule FunctionCall "70" (seq iri ArgList))
105
+ (rule ArgList "71"
106
+ (alt NIL (seq "(" (opt "DISTINCT") Expression (star (seq "," Expression)) ")")))
107
+ (rule ExpressionList "72" (alt NIL (seq "(" Expression (star (seq "," Expression)) ")")))
108
+ (rule ConstructTemplate "73" (seq "{" (opt ConstructTriples) "}"))
109
+ (rule ConstructTriples "74"
110
+ (seq TriplesSameSubject (opt (seq "." (opt ConstructTriples)))))
111
+ (rule TriplesSameSubject "75"
112
+ (alt (seq VarOrTerm PropertyListNotEmpty) (seq TriplesNode PropertyList)))
113
+ (rule PropertyList "76" (opt PropertyListNotEmpty))
114
+ (rule PropertyListNotEmpty "77"
115
+ (seq Verb ObjectList (star (seq ";" (opt (seq Verb ObjectList))))))
116
+ (rule Verb "78" (alt VarOrIri "a"))
117
+ (rule ObjectList "79" (seq Object (star (seq "," Object))))
118
+ (rule Object "80" (seq GraphNode))
119
+ (rule TriplesSameSubjectPath "81"
120
+ (alt (seq VarOrTerm PropertyListNotEmptyPath) (seq TriplesNode PropertyListPath)))
121
+ (rule PropertyListPath "82" (opt PropertyListNotEmpty))
122
+ (rule PropertyListNotEmptyPath "83"
123
+ (seq
124
+ (alt VerbPath VerbSimple) ObjectList
125
+ (star (seq ";" (opt (seq (alt VerbPath VerbSimple) ObjectList))))) )
126
+ (rule VerbPath "84" (seq Path))
127
+ (rule VerbSimple "85" (seq Var))
128
+ (rule ObjectListPath "86" (seq ObjectPath (star (seq "," ObjectPath))))
129
+ (rule ObjectPath "87" (seq GraphNodePath))
130
+ (rule Path "88" (seq PathAlternative))
131
+ (rule PathAlternative "89" (seq PathSequence (star (seq "|" PathSequence))))
132
+ (rule PathSequence "90" (seq PathEltOrInverse (star (seq "/" PathEltOrInverse))))
133
+ (rule PathElt "91" (seq PathPrimary (opt PathMod)))
134
+ (rule PathEltOrInverse "92" (alt PathElt (seq "^" PathElt)))
135
+ (rule PathMod "93"
136
+ (alt "*" "?" "+"
137
+ (seq "{"
138
+ (alt (seq Integer (alt (seq "," (alt "}" (seq Integer "}"))) "}")) (seq "," Integer "}"))) ))
139
+ (rule PathPrimary "94"
140
+ (alt iri "a" (seq "!" PathNegatedPropertySet) (seq "(" Path ")")))
141
+ (rule PathNegatedPropertySet "95"
142
+ (alt PathOneInPropertySet
143
+ (seq "(" (opt (seq PathOneInPropertySet (star (seq "|" PathOneInPropertySet)))) ")")) )
144
+ (rule PathOneInPropertySet "96" (alt iri "a" (seq "^" (alt iri "a"))))
145
+ (rule Integer "97" (seq INTEGER))
146
+ (rule TriplesNode "98" (alt Collection BlankNodePropertyList))
147
+ (rule BlankNodePropertyList "99" (seq "[" PropertyListNotEmpty "]"))
148
+ (rule TriplesNodePath "100" (alt CollectionPath BlankNodePropertyListPath))
149
+ (rule BlankNodePropertyListPath "101" (seq "[" PropertyListPathNotEmpty "]"))
150
+ (rule Collection "102" (seq "(" (plus GraphNode) ")"))
151
+ (rule CollectionPath "103" (seq "(" (plus GraphNodePath) ")"))
152
+ (rule GraphNode "104" (alt VarOrTerm TriplesNode))
153
+ (rule GraphNodePath "105" (alt VarOrTerm TriplesNodePath))
154
+ (rule VarOrTerm "106" (alt Var GraphTerm))
155
+ (rule VarOrIri "107" (alt Var iri))
156
+ (rule Var "108" (alt VAR1 VAR2))
157
+ (rule GraphTerm "109"
158
+ (alt iri RDFLiteral NumericLiteral BooleanLiteral BlankNode NIL))
159
+ (rule Expression "110" (seq ConditionalOrExpression))
160
+ (rule ConditionalOrExpression "111"
161
+ (seq ConditionalAndExpression (star (seq "||" ConditionalAndExpression))))
162
+ (rule ConditionalAndExpression "112" (seq ValueLogical (star (seq "&&" ValueLogical))))
163
+ (rule ValueLogical "113" (seq RelationalExpression))
164
+ (rule RelationalExpression "114"
165
+ (seq NumericExpression
166
+ (opt
167
+ (alt
168
+ (seq "=" NumericExpression)
169
+ (seq "!=" NumericExpression)
170
+ (seq "<" NumericExpression)
171
+ (seq ">" NumericExpression)
172
+ (seq "<=" NumericExpression)
173
+ (seq ">=" NumericExpression)
174
+ (seq "IN" ExpressionList)
175
+ (seq "NOT" "IN" ExpressionList)) )) )
176
+ (rule NumericExpression "115" (seq AdditiveExpression))
177
+ (rule AdditiveExpression "116"
178
+ (seq MultiplicativeExpression
179
+ (star
180
+ (alt
181
+ (seq "+" MultiplicativeExpression)
182
+ (seq "-" MultiplicativeExpression)
183
+ (seq
184
+ (alt NumericLiteralPositive NumericLiteralNegative)
185
+ (opt (alt (seq "*" UnaryExpression) (seq "/" UnaryExpression)))) )) ))
186
+ (rule MultiplicativeExpression "117"
187
+ (seq UnaryExpression (star (alt (seq "*" UnaryExpression) (seq "/" UnaryExpression)))))
188
+ (rule UnaryExpression "118"
189
+ (alt
190
+ (seq "!" PrimaryExpression)
191
+ (seq "+" PrimaryExpression)
192
+ (seq "-" PrimaryExpression) PrimaryExpression ))
193
+ (rule PrimaryExpression "119"
194
+ (alt BrackettedExpression BuiltInCall iriOrFunction RDFLiteral NumericLiteral
195
+ BooleanLiteral Var ))
196
+ (rule BrackettedExpression "120" (seq "(" Expression ")"))
197
+ (rule BuiltInCall "121"
198
+ (alt Aggregate
199
+ (seq "STR" "(" Expression ")")
200
+ (seq "LANG" "(" Expression ")")
201
+ (seq "LANGMATCHES" "(" Expression "," Expression ")")
202
+ (seq "DATATYPE" "(" Expression ")")
203
+ (seq "BOUND" "(" Var ")")
204
+ (seq "IRI" "(" Expression ")")
205
+ (seq "URI" "(" Expression ")")
206
+ (seq "BNODE" (alt (seq "(" Expression ")") NIL))
207
+ (seq "RAND" NIL)
208
+ (seq "ABS" "(" Expression ")")
209
+ (seq "CEIL" "(" Expression ")")
210
+ (seq "FLOOR" "(" Expression ")")
211
+ (seq "ROUND" "(" Expression ")")
212
+ (seq "CONCAT" ExpressionList) SubstringExpression
213
+ (seq "STRLEN" "(" Expression ")") StrReplaceExpression
214
+ (seq "UCASE" "(" Expression ")")
215
+ (seq "LCASE" "(" Expression ")")
216
+ (seq "ENCODE_FOR_URI" "(" Expression ")")
217
+ (seq "CONTAINS" "(" Expression "," Expression ")")
218
+ (seq "STRSTARTS" "(" Expression "," Expression ")")
219
+ (seq "STRENDS" "(" Expression "," Expression ")")
220
+ (seq "STRBEFORE" "(" Expression "," Expression ")")
221
+ (seq "STRAFTER" "(" Expression "," Expression ")")
222
+ (seq "YEAR" "(" Expression ")")
223
+ (seq "MONTH" "(" Expression ")")
224
+ (seq "DAY" "(" Expression ")")
225
+ (seq "HOURS" "(" Expression ")")
226
+ (seq "MINUTES" "(" Expression ")")
227
+ (seq "SECONDS" "(" Expression ")")
228
+ (seq "TIMEZONE" "(" Expression ")")
229
+ (seq "TZ" "(" Expression ")")
230
+ (seq "NOW" NIL)
231
+ (seq "UUID" NIL)
232
+ (seq "STRUUID" NIL)
233
+ (seq "MD5" "(" Expression ")")
234
+ (seq "SHA1" "(" Expression ")")
235
+ (seq "SHA224" "(" Expression ")")
236
+ (seq "SHA256" "(" Expression ")")
237
+ (seq "SHA384" "(" Expression ")")
238
+ (seq "SHA512" "(" Expression ")")
239
+ (seq "COALESCE" ExpressionList)
240
+ (seq "IF" "(" Expression "," Expression "," Expression ")")
241
+ (seq "STRLANG" "(" Expression "," Expression ")")
242
+ (seq "STRDT" "(" Expression "," Expression ")")
243
+ (seq "sameTerm" "(" Expression "," Expression ")")
244
+ (seq "isIRI" "(" Expression ")")
245
+ (seq "isURI" "(" Expression ")")
246
+ (seq "isBLANK" "(" Expression ")")
247
+ (seq "isLITERAL" "(" Expression ")")
248
+ (seq "isNUMERIC" "(" Expression ")") RegexExpression ExistsFunc
249
+ NotExistsFunc ))
250
+ (rule RegexExpression "122"
251
+ (seq "REGEX" "(" Expression "," Expression (opt (seq "," Expression)) ")"))
252
+ (rule SubstringExpression "123"
253
+ (seq "SUBSTR" "(" Expression "," Expression (opt (seq "," Expression)) ")"))
254
+ (rule StrReplaceExpression "124"
255
+ (seq "REPLACE" "(" Expression "," Expression "," Expression
256
+ (opt (seq "," Expression)) ")" ))
257
+ (rule ExistsFunc "125" (seq "EXISTS" GroupGraphPattern))
258
+ (rule NotExistsFunc "126" (seq "NOT" "EXISTS" GroupGraphPattern))
259
+ (rule Aggregate "127"
260
+ (alt
261
+ (seq "COUNT" "(" (opt "DISTINCT") (alt "*" Expression) ")")
262
+ (seq "SUM" "(" (opt "DISTINCT") Expression ")")
263
+ (seq "MIN" "(" (opt "DISTINCT") Expression ")")
264
+ (seq "MAX" "(" (opt "DISTINCT") Expression ")")
265
+ (seq "AVG" "(" (opt "DISTINCT") Expression ")")
266
+ (seq "SAMPLE" "(" (opt "DISTINCT") Expression ")")
267
+ (seq "GROUP_CONCAT" "("
268
+ (opt "DISTINCT") Expression
269
+ (opt (seq ";" "SEPARATOR" "=" String)) ")" )) )
270
+ (rule iriOrFunction "128" (seq iri (opt ArgList)))
271
+ (rule RDFLiteral "129" (seq String (opt (alt LANGTAG (seq "^^" iri)))))
272
+ (rule NumericLiteral "130"
273
+ (alt NumericLiteralUnsigned NumericLiteralPositive NumericLiteralNegative))
274
+ (rule NumericLiteralUnsigned "131" (alt INTEGER DECIMAL DOUBLE))
275
+ (rule NumericLiteralPositive "132"
276
+ (alt INTEGER_POSITIVE DECIMAL_POSITIVE DOUBLE_POSITIVE))
277
+ (rule NumericLiteralNegative "133"
278
+ (alt INTEGER_NEGATIVE DECIMAL_NEGATIVE DOUBLE_NEGATIVE))
279
+ (rule BooleanLiteral "134" (alt "true" "false"))
280
+ (rule String "135"
281
+ (alt STRING_LITERAL1 STRING_LITERAL2 STRING_LITERAL_LONG1 STRING_LITERAL_LONG2))
282
+ (rule iri "136" (alt IRIREF PrefixedName))
283
+ (rule PrefixedName "137" (alt PNAME_LN PNAME_NS))
284
+ (rule BlankNode "138" (alt BLANK_NODE_LABEL ANON))
285
+ (terminal IRIREF "139" (seq "<" (range "^#x00-#x20<>\"{}|^`] | UCHAR)* '>'")))
286
+ (terminal PNAME_NS "140" (seq (opt PN_PREFIX) ":"))
287
+ (terminal PNAME_LN "141" (seq PNAME_NS PN_LOCAL))
288
+ (terminal BLANK_NODE_LABEL "142"
289
+ (seq "_:" (alt PN_CHARS_U (range "0-9")) (opt (seq (star (alt PN_CHARS ".")) PN_CHARS))))
290
+ (terminal VAR1 "143" (seq "?" VARNAME))
291
+ (terminal VAR2 "144" (seq "$" VARNAME))
292
+ (terminal LANGTAG "145"
293
+ (seq "@" (plus (range "a-zA-Z")) (star (seq "-" (plus (range "a-zA-Z0-9"))))))
294
+ (terminal INTEGER "146" (plus (range "0-9")))
295
+ (terminal DECIMAL "147" (seq (star (range "0-9")) "." (plus (range "0-9"))))
296
+ (terminal DOUBLE "148"
297
+ (alt
298
+ (seq (plus (range "0-9")) "." (star (range "0-9")) EXPONENT)
299
+ (seq "." (plus (range "0-9")) EXPONENT)
300
+ (seq (plus (range "0-9")) EXPONENT)) )
301
+ (terminal INTEGER_POSITIVE "149" (seq "+" INTEGER))
302
+ (terminal DECIMAL_POSITIVE "150" (seq "+" DECIMAL))
303
+ (terminal DOUBLE_POSITIVE "151" (seq "+" DOUBLE))
304
+ (terminal INTEGER_NEGATIVE "152" (seq "-" INTEGER))
305
+ (terminal DECIMAL_NEGATIVE "153" (seq "-" DECIMAL))
306
+ (terminal DOUBLE_NEGATIVE "154" (seq "-" DOUBLE))
307
+ (terminal EXPONENT "155" (seq (range "eE") (opt (range "+-")) (plus (range "0-9"))))
308
+ (terminal STRING_LITERAL1 "156"
309
+ (seq "'" (star (alt (range "^#x27#x5C#xA#xD") ECHAR)) "'"))
310
+ (terminal STRING_LITERAL2 "157"
311
+ (seq "\"" (star (alt (range "^#x22#x5C#xA#xD") ECHAR)) "\""))
312
+ (terminal STRING_LITERAL_LONG1 "158"
313
+ (seq "'''" (seq (opt (alt "'" "''")) (range "^'] | ECHAR ))* \"'''\""))))
314
+ (terminal STRING_LITERAL_LONG2 "159"
315
+ (seq "\"\"\"" (seq (opt (alt "\"" "\"\"")) (range "^\"] | ECHAR ))* '\"\"\"'"))))
316
+ (terminal ECHAR "160" (seq "\\" (range "tbnrf\"'")))
317
+ (terminal NIL "161" (seq "(" (star WS) ")"))
318
+ (terminal WS "162" (alt (hex "#x20") (hex "#x9") (hex "#xD") (hex "#xA")))
319
+ (terminal ANON "163" (seq "[" (star WS) "]"))
320
+ (terminal PN_CHARS_BASE "164"
321
+ (alt
322
+ (range "A-Z")
323
+ (range "a-z")
324
+ (range "#x00C0-#x00D6")
325
+ (range "#x00D8-#x00F6")
326
+ (range "#x00F8-#x02FF")
327
+ (range "#x0370-#x037D")
328
+ (range "#x037F-#x1FFF")
329
+ (range "#x200C-#x200D")
330
+ (range "#x2070-#x218F")
331
+ (range "#x2C00-#x2FEF")
332
+ (range "#x3001-#xD7FF")
333
+ (range "#xF900-#xFDCF")
334
+ (range "#xFDF0-#xFFFD")
335
+ (range "#x10000-#xEFFFF")) )
336
+ (terminal PN_CHARS_U "165" (alt PN_CHARS_BASE "_"))
337
+ (terminal VARNAME "166"
338
+ (seq
339
+ (alt PN_CHARS_U (range "0-9"))
340
+ (star
341
+ (alt PN_CHARS_U
342
+ (range "0-9")
343
+ (hex "#x00B7")
344
+ (range "#x0300-#x036F")
345
+ (range "#x203F-#x2040")) )) )
346
+ (terminal PN_CHARS "167"
347
+ (alt PN_CHARS_U "-"
348
+ (range "0-9")
349
+ (hex "#x00B7")
350
+ (range "#x0300-#x036F")
351
+ (range "#x203F-#x2040")) )
352
+ (terminal PN_PREFIX "168"
353
+ (seq PN_CHARS_BASE (opt (seq (star (alt PN_CHARS ".")) PN_CHARS))))
354
+ (terminal PN_LOCAL "169"
355
+ (seq (alt PN_CHARS_U (range "0-9")) (opt (seq (star (alt PN_CHARS ".")) PN_CHARS))))
356
+ (terminal PLX "170" (alt PERCENT PN_LOCAL_ESC))
357
+ (terminal PERCENT "171" (seq "%" HEX HEX))
358
+ (terminal HEX "172" (alt (range "0-9") (range "A-F") (range "a-f")))
359
+ (terminal PN_LOCAL_ESC "173"
360
+ (seq "\\"
361
+ (alt "_" "~" "." "-" "!" "$" "&" "'" "(" ")" "*" "+" "," ";" "=" "/" "?" "#"
362
+ "@" "%" )) ))
@@ -0,0 +1,519 @@
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>
519
+ </table>