1use logos::Logos;
2
3#[allow(non_camel_case_types)]
4#[derive(Logos, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
5#[repr(u16)]
6pub enum SyntaxKind {
7 Eof = 0,
8 Error,
9 #[regex(r"[ \t\n\r\f]+")]
10 WHITESPACE,
11 #[regex(r"#.*")]
12 Comment,
13 #[token("BASE", ignore(case))]
14 BASE,
15 #[regex(r#"<[^<>\"{}|^`\\\u{00}-\u{20}]*>"#)]
16 IRIREF,
17 #[token("PREFIX", ignore(case))]
18 PREFIX,
19 #[regex("[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}]([A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_.-]*[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_-])?:")]
20 PNAME_NS,
21 #[token("SELECT", ignore(case))]
22 SELECT,
23 #[token("DISTINCT", ignore(case))]
24 DISTINCT,
25 #[token("REDUCED", ignore(case))]
26 REDUCED,
27 #[token("(")]
28 LParen,
29 #[token("AS", ignore(case))]
30 AS,
31 #[token(")")]
32 RParen,
33 #[token("*")]
34 Star,
35 #[token("CONSTRUCT", ignore(case))]
36 CONSTRUCT,
37 #[token("WHERE", ignore(case))]
38 WHERE,
39 #[token("{")]
40 LCurly,
41 #[token("}")]
42 RCurly,
43 #[token("DESCRIBE", ignore(case))]
44 DESCRIBE,
45 #[token("ASK", ignore(case))]
46 ASK,
47 #[token("FROM", ignore(case))]
48 FROM,
49 #[token("NAMED", ignore(case))]
50 NAMED,
51 #[token("GROUP", ignore(case))]
52 GROUP,
53 #[token("BY", ignore(case))]
54 BY,
55 #[token("HAVING", ignore(case))]
56 HAVING,
57 #[token("ORDER", ignore(case))]
58 ORDER,
59 #[token("ASC", ignore(case))]
60 ASC,
61 #[token("DESC", ignore(case))]
62 DESC,
63 #[token("LIMIT", ignore(case))]
64 LIMIT,
65 #[token("OFFSET", ignore(case))]
66 OFFSET,
67 #[token("VALUES", ignore(case))]
68 VALUES,
69 #[token(";")]
70 Semicolon,
71 #[token("LOAD", ignore(case))]
72 LOAD,
73 #[token("SILENT", ignore(case))]
74 SILENT,
75 #[token("INTO", ignore(case))]
76 INTO,
77 #[token("CLEAR", ignore(case))]
78 CLEAR,
79 #[token("DROP", ignore(case))]
80 DROP,
81 #[token("CREATE", ignore(case))]
82 CREATE,
83 #[token("ADD", ignore(case))]
84 ADD,
85 #[token("TO", ignore(case))]
86 TO,
87 #[token("MOVE", ignore(case))]
88 MOVE,
89 #[token("COPY", ignore(case))]
90 COPY,
91 #[token("INSERT", ignore(case))]
92 INSERT,
93 #[token("DATA", ignore(case))]
94 DATA,
95 INSERT_DATA,
96 #[regex(r"(?i:DELETE\s+DATA)")]
97 DELETE_DATA,
98 #[regex(r"(?i:DELETE\s+WHERE)")]
99 DELETE_WHERE,
100 #[token("DELETE", ignore(case))]
101 DELETE,
102 #[token("WITH", ignore(case))]
103 WITH,
104 #[token("USING", ignore(case))]
105 USING,
106 #[token("DEFAULT", ignore(case))]
107 DEFAULT,
108 #[token("GRAPH", ignore(case))]
109 GRAPH,
110 #[token("ALL", ignore(case))]
111 ALL,
112 #[token(".")]
113 Dot,
114 #[token("OPTIONAL", ignore(case))]
115 OPTIONAL,
116 #[token("SERVICE", ignore(case))]
117 SERVICE,
118 #[token("BIND", ignore(case))]
119 BIND,
120 #[token("NIL", ignore(case))]
121 NIL,
122 #[token("UNDEF", ignore(case))]
123 UNDEF,
124 #[token("MINUS", ignore(case))]
125 MINUS,
126 #[token("UNION", ignore(case))]
127 UNION,
128 #[token("FILTER", ignore(case))]
129 FILTER,
130 #[token(",")]
131 Comma,
132 #[token(" a ")]
133 a,
134 #[token("|")]
135 Pipe,
136 #[token("/")]
137 Slash,
138 #[token("^")]
139 Zirkumflex,
140 #[token("?")]
141 QuestionMark,
142 #[token("+")]
143 Plus,
144 #[token("!")]
145 ExclamationMark,
146 #[token("[")]
147 LBrack,
148 #[token("]")]
149 RBrack,
150 #[regex(
152 r"\?(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9])(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*"
153 )]
154 VAR1,
155 #[regex(
156 r"\$(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9])(?:(?:(?:[A-Z]|[a-z]|[\u{00C0}-\u{00D6}]|[\u{00D8}-\u{00F6}]|[\u{00F8}-\u{02FF}]|[\u{0370}-\u{037D}]|[\u{037F}-\u{1FFF}]|[\u{200C}-\u{200D}]|[\u{2070}-\u{218F}]|[\u{2C00}-\u{2FEF}]|[\u{3001}-\u{D7FF}]|[\u{F900}-\u{FDCF}]|[\u{FDF0}-\u{FFFD}]|[\u{10000}-\u{EFFFF}])|_)|[0-9]|\u{00B7}|[\u{0300}-\u{036F}]|[\u{203F}-\u{2040}])*"
157 )]
158 VAR2,
159 #[token("||")]
160 DoublePipe,
161 #[token("&&")]
162 DoubleAnd,
163 #[token("=")]
164 Equals,
165 #[token("!=")]
166 ExclamationMarkEquals,
167 #[token("<")]
168 Less,
169 #[token(">")]
170 More,
171 #[token("<=")]
172 LessEquals,
173 #[token(">=")]
174 MoreEquals,
175 #[token("IN", ignore(case))]
176 IN,
177 #[token("NOT", ignore(case))]
178 NOT,
179 #[token("-")]
180 Minus,
181 #[token("STR", ignore(case))]
182 STR,
183 #[token("LANG", ignore(case))]
184 LANG,
185 #[token("LANGMATCHES", ignore(case))]
186 LANGMATCHES,
187 #[token("DATATYPE", ignore(case))]
188 DATATYPE,
189 #[token("BOUND", ignore(case))]
190 BOUND,
191 #[token("IRI", ignore(case))]
192 IRI,
193 #[token("URI", ignore(case))]
194 URI,
195 #[token("BNODE", ignore(case))]
196 BNODE,
197 #[token("RAND", ignore(case))]
198 RAND,
199 #[token("ABS", ignore(case))]
200 ABS,
201 #[token("CEIL", ignore(case))]
202 CEIL,
203 #[token("FLOOR", ignore(case))]
204 FLOOR,
205 #[token("ROUND", ignore(case))]
206 ROUND,
207 #[token("CONCAT", ignore(case))]
208 CONCAT,
209 #[token("STRLEN", ignore(case))]
210 STRLEN,
211 #[token("UCASE", ignore(case))]
212 UCASE,
213 #[token("LCASE", ignore(case))]
214 LCASE,
215 #[token("ENCODE_FOR_URI", ignore(case))]
216 ENCODE_FOR_URI,
217 #[token("CONTAINS", ignore(case))]
218 CONTAINS,
219 #[token("STRSTARTS", ignore(case))]
220 STRSTARTS,
221 #[token("STRENDS", ignore(case))]
222 STRENDS,
223 #[token("STRBEFORE", ignore(case))]
224 STRBEFORE,
225 #[token("STRAFTER", ignore(case))]
226 STRAFTER,
227 #[token("YEAR", ignore(case))]
228 YEAR,
229 #[token("MONTH", ignore(case))]
230 MONTH,
231 #[token("DAY", ignore(case))]
232 DAY,
233 #[token("HOURS", ignore(case))]
234 HOURS,
235 #[token("MINUTES", ignore(case))]
236 MINUTES,
237 #[token("SECONDS", ignore(case))]
238 SECONDS,
239 #[token("TIMEZONE", ignore(case))]
240 TIMEZONE,
241 #[token("TZ", ignore(case))]
242 TZ,
243 #[token("NOW", ignore(case))]
244 NOW,
245 #[token("UUID", ignore(case))]
246 UUID,
247 #[token("STRUUID", ignore(case))]
248 STRUUID,
249 #[token("MD5", ignore(case))]
250 MD5,
251 #[token("SHA1", ignore(case))]
252 SHA1,
253 #[token("SHA256", ignore(case))]
254 SHA256,
255 #[token("SHA384", ignore(case))]
256 SHA384,
257 #[token("SHA512", ignore(case))]
258 SHA512,
259 #[token("COALESCE", ignore(case))]
260 COALESCE,
261 #[token("IF", ignore(case))]
262 IF,
263 #[token("STRLANG", ignore(case))]
264 STRLANG,
265 #[token("STRDT", ignore(case))]
266 STRDT,
267 #[token("sameTerm", ignore(case))]
268 sameTerm,
269 #[token("isIRI", ignore(case))]
270 isIRI,
271 #[token("isURI", ignore(case))]
272 isURI,
273 #[token("isBLANK", ignore(case))]
274 isBLANK,
275 #[token("isLITERAL", ignore(case))]
276 isLITERAL,
277 #[token("isNUMERIC", ignore(case))]
278 isNUMERIC,
279 #[token("REGEX", ignore(case))]
280 REGEX,
281 #[token("SUBSTR", ignore(case))]
282 SUBSTR,
283 #[token("REPLACE", ignore(case))]
284 REPLACE,
285 #[token("EXISTS", ignore(case))]
286 EXISTS,
287 #[token("COUNT", ignore(case))]
288 COUNT,
289 #[token("SUM", ignore(case))]
290 SUM,
291 #[token("MIN", ignore(case))]
292 MIN,
293 #[token("MAX", ignore(case))]
294 MAX,
295 #[token("AVG", ignore(case))]
296 AVG,
297 #[token("SAMPLE", ignore(case))]
298 SAMPLE,
299 #[token("GROUP_CONCAT", ignore(case))]
300 GROUP_CONCAT,
301 #[token("SEPARATOR", ignore(case))]
302 SEPARATOR,
303 #[regex("@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*")]
304 LANGTAG,
305 #[token("^^")]
306 DoubleZirkumflex,
307 #[regex(r"\d+")]
308 INTEGER,
309 #[regex(r"\d*\.\d+")]
310 DECIMAL,
311 #[regex(r"(?:\d+\.\d*(?:[eE][+-]?\d+))|(?:\.\d+([eE][+-]?\d+))|(?:\d+([eE][+-]?\d+))")]
312 DOUBLE,
313 #[regex(r"\+\d+")]
314 INTEGER_POSITIVE,
315 #[regex(r"\+\d*\.\d+")]
316 DECIMAL_POSITIVE,
317 #[regex(r"\+(?:\d+\.\d*(?:[eE][+-]?\d+))|\+(?:\.\d+([eE][+-]?\d+))|\+(?:\d+([eE][+-]?\d+))")]
318 DOUBLE_POSITIVE,
319 #[regex(r"-\d+")]
320 INTEGER_NEGATIVE,
321 #[regex(r"-\d*\.\d+")]
322 DECIMAL_NEGATIVE,
323 #[regex(r"-(?:\d+\.\d*(?:[eE][+-]?\d+))|-(?:\.\d+([eE][+-]?\d+))|-(?:\d+([eE][+-]?\d+))")]
324 DOUBLE_NEGATIVE,
325 #[token("true")]
326 True,
327 #[token("false")]
328 False,
329 #[regex("'[^\u{27}\u{5C}\u{A}\u{D}]*'")]
330 STRING_LITERAL1,
331 #[regex(r#""([^"\\\x00-\x1F]|\\(["\\bnfrt/]|u[a-fA-F0-9]{4}))*""#)]
332 STRING_LITERAL2,
333 #[token("STRING_LITERAL_LONG1")]
335 STRING_LITERAL_LONG1,
336 #[token("STRING_LITERAL_LONG2")]
338 STRING_LITERAL_LONG2,
339 #[regex(r"[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}](?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_\.-]*[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_-])?:(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_0-9:]|%[0-9A-Fa-f])(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_:\.-]|%[0-9A-Fa-f])*(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}_:-]|%[0-9A-Fa-f])?")]
340 PNAME_LN,
341
342 #[regex(r"_:(?:(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_])|(?:[0-9]))(?:[A-Za-z\u{00C0}-\u{00D6}\u{00D8}-\u{00F6}\u{00F8}-\u{02FF}\u{0370}-\u{037D}\u{037F}-\u{1FFF}\u{200C}-\u{200D}\u{2070}-\u{218F}\u{2C00}-\u{2FEF}\u{3001}-\u{D7FF}\u{F900}-\u{FDCF}\u{FDF0}-\u{FFFD}\u{10000}-\u{EFFFF}_0-9\u{00B7}\u{0300}-\u{036F}\u{203F}-\u{2040}\.-]*)?")]
347 BLANK_NODE_LABEL,
348 #[regex(r"\[\]|\[ \]|\[ \]")]
354 ANON,
355
356 QueryUnit,
359 Query,
361 Prologue,
363 SelectQuery,
365 ConstructQuery,
367 DescribeQuery,
369 AskQuery,
371 ValuesClause,
373 UpdateUnit,
375 Update,
377 BaseDecl,
379 PrefixDecl,
381 SelectClause,
383 DatasetClause,
385 WhereClause,
387 SolutionModifier,
389 SubSelect,
391 Var,
393 Expression,
395 ConstructTemplate,
397 TriplesTemplate,
399 VarOrIri,
401 DefaultGraphClause,
403 NamedGraphClause,
405 SourceSelector,
407 iri,
409 GroupGraphPattern,
411 GroupClause,
413 HavingClause,
415 OrderClause,
417 LimitOffsetClauses,
419 GroupCondition,
421 BuiltInCall,
423 FunctionCall,
425 HavingCondition,
427 Constraint,
429 OrderCondition,
431 BrackettedExpression,
433 LimitClause,
435 OffsetClause,
437 DataBlock,
439 UpdateOne,
441 Load,
443 Clear,
445 Drop,
447 Add,
449 Move,
451 Copy,
453 Create,
455 InsertData,
457 DeleteData,
459 DeleteWhere,
461 Modify,
463 GraphRef,
465 GraphRefAll,
467 GraphOrDefault,
469 QuadData,
471 QuadPattern,
473 DeleteClause,
475 InsertClause,
477 UsingClause,
479 Quads,
481 QuadsNotTriples,
483 TriplesSameSubject,
485 GroupGraphPatternSub,
487 TriplesBlock,
489 GraphPatternNotTriples,
491 TriplesSameSubjectPath,
493 GroupOrUnionGraphPattern,
495 OptionalGraphPattern,
497 MinusGraphPattern,
499 GraphGraphPattern,
501 ServiceGraphPattern,
503 Filter,
505 Bind,
507 InlineData,
509 InlineDataOneVar,
511 InlineDataFull,
513 DataBlockValue,
515 RDFLiteral,
517 NumericLiteral,
519 BooleanLiteral,
521 ArgList,
523 ExpressionList,
525 ConstructTriples,
527 VarOrTerm,
529 PropertyListNotEmpty,
531 TriplesNode,
533 PropertyList,
535 Verb,
537 ObjectList,
539 Object,
541 GraphNode,
543 PropertyListPathNotEmpty,
545 TriplesNodePath,
547 PropertyListPath,
549 VerbPath,
551 VerbSimple,
553 ObjectListPath,
555 Path,
557 ObjectPath,
559 GraphNodePath,
561 PathAlternative,
563 PathSequence,
565 PathEltOrInverse,
567 PathElt,
569 PathPrimary,
571 PathMod,
573 PathNegatedPropertySet,
575 PathOneInPropertySet,
577 Integer,
579 Collection,
581 BlankNodePropertyList,
583 CollectionPath,
585 BlankNodePropertyListPath,
587 GraphTerm,
589 BlankNode,
591 ConditionalOrExpression,
593 ConditionalAndExpression,
595 ValueLogical,
597 RelationalExpression,
599 NumericExpression,
601 AdditiveExpression,
603 MultiplicativeExpression,
605 NumericLiteralPositive,
607 NumericLiteralNegative,
609 UnaryExpression,
611 PrimaryExpression,
613 iriOrFunction,
615 Aggregate,
617 SubstringExpression,
619 StrReplaceExpression,
621 RegexExpression,
623 ExistsFunc,
625 NotExistsFunc,
627 String,
629 NumericLiteralUnsigned,
631 PrefixedName,
633}