Skip to main content

ll_sparql_parser/syntax_kind/
generated.rs

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"#[^\r\n]*", allow_greedy = true)]
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(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}])(?:(?:[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}]|\.)*(?:[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}]))?)?:")]
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("{|")]
44    LCurlyPipe,
45    #[token("|}")]
46    PipeRCurly,
47    #[token("DESCRIBE", ignore(case))]
48    DESCRIBE,
49    #[token("ASK", ignore(case))]
50    ASK,
51    #[token("FROM", ignore(case))]
52    FROM,
53    #[token("NAMED", ignore(case))]
54    NAMED,
55    #[token("GROUP", ignore(case))]
56    GROUP,
57    #[token("BY", ignore(case))]
58    BY,
59    #[token("HAVING", ignore(case))]
60    HAVING,
61    #[token("ORDER", ignore(case))]
62    ORDER,
63    #[token("ASC", ignore(case))]
64    ASC,
65    #[token("DESC", ignore(case))]
66    DESC,
67    #[token("LIMIT", ignore(case))]
68    LIMIT,
69    #[token("OFFSET", ignore(case))]
70    OFFSET,
71    #[token("VALUES", ignore(case))]
72    VALUES,
73    #[token(";")]
74    Semicolon,
75    #[token("LOAD", ignore(case))]
76    LOAD,
77    #[token("SILENT", ignore(case))]
78    SILENT,
79    #[token("INTO", ignore(case))]
80    INTO,
81    #[token("CLEAR", ignore(case))]
82    CLEAR,
83    #[token("DROP", ignore(case))]
84    DROP,
85    #[token("CREATE", ignore(case))]
86    CREATE,
87    #[token("ADD", ignore(case))]
88    ADD,
89    #[token("TO", ignore(case))]
90    TO,
91    #[token("MOVE", ignore(case))]
92    MOVE,
93    #[token("COPY", ignore(case))]
94    COPY,
95    #[token("INSERT", ignore(case))]
96    INSERT,
97    #[token("DATA", ignore(case))]
98    DATA,
99    // #[regex(r"?i:INSERT\s+DATA)")]
100    #[token("INSERT DATA", ignore(case))]
101    // ERROR: This is currently not possible due to a bug in the tokenizer
102    INSERT_DATA,
103    #[regex(r"(?i:DELETE\s+DATA)")]
104    DELETE_DATA,
105    #[regex(r"(?i:DELETE\s+WHERE)")]
106    DELETE_WHERE,
107    #[token("DELETE", ignore(case))]
108    DELETE,
109    #[token("WITH", ignore(case))]
110    WITH,
111    #[token("USING", ignore(case))]
112    USING,
113    #[token("DEFAULT", ignore(case))]
114    DEFAULT,
115    #[token("GRAPH", ignore(case))]
116    GRAPH,
117    #[token("ALL", ignore(case))]
118    ALL,
119    #[token(".")]
120    Dot,
121    #[token("~")]
122    Tilde,
123    #[token("OPTIONAL", ignore(case))]
124    OPTIONAL,
125    #[token("SERVICE", ignore(case))]
126    SERVICE,
127    #[token("BIND", ignore(case))]
128    BIND,
129    #[regex(r"\([ \t\n\r\f]*\)")]
130    NIL,
131    #[token("UNDEF", ignore(case))]
132    UNDEF,
133    #[token("MINUS", ignore(case))]
134    MINUS,
135    #[token("UNION", ignore(case))]
136    UNION,
137    #[token("FILTER", ignore(case))]
138    FILTER,
139    #[token(",")]
140    Comma,
141    #[regex(r#"(?-u:a\b)"#)]
142    a,
143    #[token("|")]
144    Pipe,
145    #[token("/")]
146    Slash,
147    #[token("^")]
148    Zirkumflex,
149    #[token("?")]
150    QuestionMark,
151    #[token("+")]
152    Plus,
153    #[token("!")]
154    ExclamationMark,
155    #[token("[")]
156    LBrack,
157    #[token("]")]
158    RBrack,
159    #[regex(
160        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}])*"
161    )]
162    VAR1,
163    #[regex(
164        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}])*"
165    )]
166    VAR2,
167    #[regex(r"@[a-zA-Z]+(?:-[a-zA-Z0-9]+)*(?:--[a-zA-Z]+)?")]
168    LANG_DIR,
169    #[token("||")]
170    DoublePipe,
171    #[token("&&")]
172    DoubleAnd,
173    #[token("=")]
174    Equals,
175    #[token("!=")]
176    ExclamationMarkEquals,
177    #[token("<")]
178    Less,
179    #[token(">")]
180    More,
181    #[token("<=")]
182    LessEquals,
183    #[token(">=")]
184    MoreEquals,
185    #[token("<<")]
186    DoubleLess,
187    #[token("<<(")]
188    DoubleLessLParen,
189    #[token(">>")]
190    DoubleMore,
191    #[token(")>>")]
192    RParenDoubleMore,
193    #[regex(r"(?i-u:IN\b)")]
194    IN,
195    #[token("NOT", ignore(case))]
196    NOT,
197    #[token("-")]
198    Minus,
199    #[token("STR", ignore(case))]
200    STR,
201    #[token("LANG", ignore(case))]
202    LANG,
203    #[token("LANGMATCHES", ignore(case))]
204    LANGMATCHES,
205    #[token("DATATYPE", ignore(case))]
206    DATATYPE,
207    #[token("BOUND", ignore(case))]
208    BOUND,
209    #[token("IRI", ignore(case))]
210    IRI,
211    #[token("URI", ignore(case))]
212    URI,
213    #[token("BNODE", ignore(case))]
214    BNODE,
215    #[token("RAND", ignore(case))]
216    RAND,
217    #[token("ABS", ignore(case))]
218    ABS,
219    #[token("CEIL", ignore(case))]
220    CEIL,
221    #[token("FLOOR", ignore(case))]
222    FLOOR,
223    #[token("ROUND", ignore(case))]
224    ROUND,
225    #[token("CONCAT", ignore(case))]
226    CONCAT,
227    #[token("STRLEN", ignore(case))]
228    STRLEN,
229    #[token("UCASE", ignore(case))]
230    UCASE,
231    #[token("LCASE", ignore(case))]
232    LCASE,
233    #[token("ENCODE_FOR_URI", ignore(case))]
234    ENCODE_FOR_URI,
235    #[token("CONTAINS", ignore(case))]
236    CONTAINS,
237    #[token("STRSTARTS", ignore(case))]
238    STRSTARTS,
239    #[token("STRENDS", ignore(case))]
240    STRENDS,
241    #[token("STRBEFORE", ignore(case))]
242    STRBEFORE,
243    #[token("STRAFTER", ignore(case))]
244    STRAFTER,
245    #[token("YEAR", ignore(case))]
246    YEAR,
247    #[token("MONTH", ignore(case))]
248    MONTH,
249    #[token("DAY", ignore(case))]
250    DAY,
251    #[token("HOURS", ignore(case))]
252    HOURS,
253    #[token("MINUTES", ignore(case))]
254    MINUTES,
255    #[token("SECONDS", ignore(case))]
256    SECONDS,
257    #[token("TIMEZONE", ignore(case))]
258    TIMEZONE,
259    #[token("TZ", ignore(case))]
260    TZ,
261    #[token("NOW", ignore(case))]
262    NOW,
263    #[token("UUID", ignore(case))]
264    UUID,
265    #[token("STRUUID", ignore(case))]
266    STRUUID,
267    #[token("MD5", ignore(case))]
268    MD5,
269    #[token("SHA1", ignore(case))]
270    SHA1,
271    #[token("SHA256", ignore(case))]
272    SHA256,
273    #[token("SHA384", ignore(case))]
274    SHA384,
275    #[token("SHA512", ignore(case))]
276    SHA512,
277    #[token("COALESCE", ignore(case))]
278    COALESCE,
279    #[token("IF", ignore(case))]
280    IF,
281    #[token("STRLANG", ignore(case))]
282    STRLANG,
283    #[token("STRDT", ignore(case))]
284    STRDT,
285    #[token("sameTerm", ignore(case))]
286    sameTerm,
287    #[token("isIRI", ignore(case))]
288    isIRI,
289    #[token("isURI", ignore(case))]
290    isURI,
291    #[token("isBLANK", ignore(case))]
292    isBLANK,
293    #[token("isLITERAL", ignore(case))]
294    isLITERAL,
295    #[token("isNUMERIC", ignore(case))]
296    isNUMERIC,
297    #[token("REGEX", ignore(case))]
298    REGEX,
299    #[token("SUBSTR", ignore(case))]
300    SUBSTR,
301    #[token("REPLACE", ignore(case))]
302    REPLACE,
303    #[token("EXISTS", ignore(case))]
304    EXISTS,
305    #[token("COUNT", ignore(case))]
306    COUNT,
307    #[token("SUM", ignore(case))]
308    SUM,
309    #[token("MIN", ignore(case))]
310    MIN,
311    #[token("MAX", ignore(case))]
312    MAX,
313    #[token("AVG", ignore(case))]
314    AVG,
315    #[token("SAMPLE", ignore(case))]
316    SAMPLE,
317    #[token("GROUP_CONCAT", ignore(case))]
318    GROUP_CONCAT,
319    #[token("SEPARATOR", ignore(case))]
320    SEPARATOR,
321    #[token("VERSION", ignore(case))]
322    VERSION,
323    #[token("STRLANGDIR", ignore(case))]
324    STRLANGDIR,
325    #[token("hasLANG", ignore(case))]
326    hasLANG,
327    #[token("hasLANGDIR", ignore(case))]
328    hasLANGDIR,
329    #[token("isTRIPLE", ignore(case))]
330    isTRIPLE,
331    #[token("TRIPLE", ignore(case))]
332    TRIPLE,
333    #[token("SUBJECT", ignore(case))]
334    SUBJECT,
335    #[token("PREDICATE", ignore(case))]
336    PREDICATE,
337    #[token("OBJECT", ignore(case))]
338    OBJECT,
339    #[token("LANGDIR", ignore(case))]
340    LANGDIR,
341    #[token("^^")]
342    DoubleZirkumflex,
343    #[regex(r"\d+")]
344    INTEGER,
345    #[regex(r"\d*\.\d+")]
346    DECIMAL,
347    #[regex(r"(?:\d+\.\d*(?:[eE][+-]?\d+))|(?:\.\d+([eE][+-]?\d+))|(?:\d+([eE][+-]?\d+))")]
348    DOUBLE,
349    #[regex(r"\+\d+")]
350    INTEGER_POSITIVE,
351    #[regex(r"\+\d*\.\d+")]
352    DECIMAL_POSITIVE,
353    #[regex(r"\+(?:\d+\.\d*(?:[eE][+-]?\d+))|\+(?:\.\d+([eE][+-]?\d+))|\+(?:\d+([eE][+-]?\d+))")]
354    DOUBLE_POSITIVE,
355    #[regex(r"-\d+")]
356    INTEGER_NEGATIVE,
357    #[regex(r"-\d*\.\d+")]
358    DECIMAL_NEGATIVE,
359    #[regex(r"-(?:\d+\.\d*(?:[eE][+-]?\d+))|-(?:\.\d+([eE][+-]?\d+))|-(?:\d+([eE][+-]?\d+))")]
360    DOUBLE_NEGATIVE,
361    #[token("true")]
362    True,
363    #[token("false")]
364    False,
365    #[regex(r#"'[^'\u{27}\u{5C}\u{A}\u{D}]*'"#)]
366    STRING_LITERAL1,
367    #[regex(r#""([^"\\\x00-\x1F]|\\(["\\bnfrt/]|u[a-fA-F0-9]{4}))*""#)]
368    STRING_LITERAL2,
369    // [158]  	STRING_LITERAL_LONG1	  ::=  	"'''" ( ( "'" | "''" )? ( [^'\] | ECHAR ) )* "'''"
370    // [159]  	STRING_LITERAL_LONG2	  ::=  	'"""' ( ( '"' | '""' )? ( [^"\] | ECHAR ) )* '"""'
371    #[regex(r#"'''(?:(?:'|'')?(?:[^'\\]|[\\\r\n\f\r\t]))*'''"#)]
372    STRING_LITERAL_LONG1,
373    #[regex(r#""""(?:(?:"|"")?(?:[^"\\]|[\\\r\n\f\r\t]))*""""#)]
374    STRING_LITERAL_LONG2,
375    #[regex(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}])(?:(?:[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}]|\.)*(?:[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}]))?)?:)(?:(?:[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]|%(:?[0-9]|[A-F]|[a-f])(:?[0-9]|[A-F]|[a-f])|\\[_~.\-\!\$\&'\(\)\*\+,;=/\?#@%])(?:(?:[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}]|\.|:|%(:?[0-9]|[A-F]|[a-f])(:?[0-9]|[A-F]|[a-f])|\\[_~.\-\!\$\&'\(\)\*\+,;=/\?#@%])*(?:[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}]|:|%(:?[0-9]|[A-F]|[a-f])(:?[0-9]|[A-F]|[a-f])|\\[_~.\-\!\$\&'\(\)\*\+,;=/\?#@%]))?)")]
376    PNAME_LN,
377
378    #[regex(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}]|\.)*(?:[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}]))?")]
379    BLANK_NODE_LABEL,
380    #[regex(r"\[\s*\]")]
381    ANON,
382
383    // Composite nodes
384    /// QueryUnit => Query
385    QueryUnit,
386    /// Query => Prologue (SelectQuery | ConstructQuery | DescribeQuery | AskQuery) ValuesClause
387    Query,
388    /// Prologue => (BaseDecl | PrefixDecl)*
389    Prologue,
390    /// SelectQuery => SelectClause DatasetClause* WhereClause SolutionModifier
391    SelectQuery,
392    /// ConstructQuery => 'CONSTRUCT' (ConstructTemplate DatasetClause* WhereClause SolutionModifier | DatasetClause* 'WHERE' '{' TriplesTemplate? '}' SolutionModifier)
393    ConstructQuery,
394    /// DescribeQuery => 'DESCRIBE' (VarOrIri VarOrIri* | '*') DatasetClause* WhereClause? SolutionModifier
395    DescribeQuery,
396    /// AskQuery => 'ASK' DatasetClause* WhereClause SolutionModifier
397    AskQuery,
398    /// ValuesClause => ('VALUES' DataBlock)?
399    ValuesClause,
400    /// UpdateUnit => Update
401    UpdateUnit,
402    /// Update => Prologue (UpdateOne (';' Update)?)?
403    Update,
404    /// BaseDecl => 'BASE' 'IRIREF'
405    BaseDecl,
406    /// PrefixDecl => 'PREFIX' 'PNAME_NS' 'IRIREF'
407    PrefixDecl,
408    /// VersionDecl => 'VERSION' VersionSpecifier
409    VersionDecl,
410    /// VersionSpecifier = 'STRING_LITERAL1' | 'STRING_LITERAL2'
411    VersionSpecifier,
412    /// SelectClause => 'SELECT' ('DISTINCT' | 'REDUCED')? ((Var | '(' Expression 'AS' Var ')') (Var | '(' Expression 'AS' Var ')')* | '*')
413    SelectClause,
414    /// DatasetClause => 'FROM' (DefaultGraphClause | NamedGraphClause)
415    DatasetClause,
416    /// WhereClause => 'WHERE'? GroupGraphPattern
417    WhereClause,
418    /// SolutionModifier => GroupClause? HavingClause? OrderClause? LimitOffsetClauses?
419    SolutionModifier,
420    /// SubSelect => SelectClause WhereClause SolutionModifier ValuesClause
421    SubSelect,
422    /// Var => 'VAR1' | 'VAR2'
423    Var,
424    /// Expression => ConditionalOrExpression
425    Expression,
426    /// ConstructTemplate => '{' ConstructTriples? '}'
427    ConstructTemplate,
428    /// TriplesTemplate => TriplesSameSubject ('.' TriplesTemplate?)?
429    TriplesTemplate,
430    /// VarOrIri => Var | iri
431    VarOrIri,
432    /// DefaultGraphClause => SourceSelector
433    DefaultGraphClause,
434    /// NamedGraphClause => 'NAMED' SourceSelector
435    NamedGraphClause,
436    /// SourceSelector => iri
437    SourceSelector,
438    /// iri => 'IRIREF' | PrefixedName
439    iri,
440    /// GroupGraphPattern => '{' (SubSelect | GroupGraphPatternSub) '}'
441    GroupGraphPattern,
442    /// GroupClause => 'GROUP' 'BY' GroupCondition GroupCondition*
443    GroupClause,
444    /// HavingClause => 'HAVING' HavingCondition HavingCondition*
445    HavingClause,
446    /// OrderClause => 'ORDER' 'BY' OrderCondition OrderCondition*
447    OrderClause,
448    /// LimitOffsetClauses => LimitClause OffsetClause? | OffsetClause LimitClause?
449    LimitOffsetClauses,
450    /// GroupCondition => BuiltInCall | FunctionCall | '(' Expression ('AS' Var)? ')' | Var
451    GroupCondition,
452    /// BuiltInCall => Aggregate | 'STR' '(' Expression ')' | 'LANG' '(' Expression ')' | 'LANGMATCHES' '(' Expression ',' Expression ')' | 'DATATYPE' '(' Expression ')' | 'BOUND' '(' Var ')' | 'IRI' '(' Expression ')' | 'URI' '(' Expression ')' | 'BNODE' ('(' Expression ')' | 'NIL') | 'RAND' 'NIL' | 'ABS' '(' Expression ')' | 'CEIL' '(' Expression ')' | 'FLOOR' '(' Expression ')' | 'ROUND' '(' Expression ')' | 'CONCAT' ExpressionList | SubstringExpression | 'STRLEN' '(' Expression ')' | StrReplaceExpression | 'UCASE' '(' Expression ')' | 'LCASE' '(' Expression ')' | 'ENCODE_FOR_URI' '(' Expression ')' | 'CONTAINS' '(' Expression ',' Expression ')' | 'STRSTARTS' '(' Expression ',' Expression ')' | 'STRENDS' '(' Expression ',' Expression ')' | 'STRBEFORE' '(' Expression ',' Expression ')' | 'STRAFTER' '(' Expression ',' Expression ')' | 'YEAR' '(' Expression ')' | 'MONTH' '(' Expression ')' | 'DAY' '(' Expression ')' | 'HOURS' '(' Expression ')' | 'MINUTES' '(' Expression ')' | 'SECONDS' '(' Expression ')' | 'TIMEZONE' '(' Expression ')' | 'TZ' '(' Expression ')' | 'NOW' 'NIL' | 'UUID' 'NIL' | 'STRUUID' 'NIL' | 'MD5' '(' Expression ')' | 'SHA1' '(' Expression ')' | 'SHA256' '(' Expression ')' | 'SHA384' '(' Expression ')' | 'SHA512' '(' Expression ')' | 'COALESCE' ExpressionList | 'IF' '(' Expression ',' Expression ',' Expression ')' | 'STRLANG' '(' Expression ',' Expression ')' | 'STRDT' '(' Expression ',' Expression ')' | 'sameTerm' '(' Expression ',' Expression ')' | 'isIRI' '(' Expression ')' | 'isURI' '(' Expression ')' | 'isBLANK' '(' Expression ')' | 'isLITERAL' '(' Expression ')' | 'isNUMERIC' '(' Expression ')' | RegexExpression | ExistsFunc | NotExistsFunc
453    BuiltInCall,
454    /// FunctionCall => iri ArgList
455    FunctionCall,
456    /// HavingCondition => Constraint
457    HavingCondition,
458    /// Constraint => BrackettedExpression | BuiltInCall | FunctionCall
459    Constraint,
460    /// OrderCondition => ('ASC' | 'DESC') BrackettedExpression | Constraint | Var
461    OrderCondition,
462    /// BrackettedExpression => '(' Expression ')'
463    BrackettedExpression,
464    /// LimitClause => 'LIMIT' 'INTEGER'
465    LimitClause,
466    /// OffsetClause => 'OFFSET' 'INTEGER'
467    OffsetClause,
468    /// DataBlock => InlineDataOneVar | InlineDataFull
469    DataBlock,
470    /// UpdateOne => Load | Clear | Drop | Add | Move | Copy | Create | InsertData | DeleteData | DeleteWhere | Modify
471    UpdateOne,
472    /// Load => 'LOAD' 'SILENT'? iri ('INTO' GraphRef)?
473    Load,
474    /// Clear => 'CLEAR' 'SILENT'? GraphRefAll
475    Clear,
476    /// Drop => 'DROP' 'SILENT'? GraphRefAll
477    Drop,
478    /// Add => 'ADD' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
479    Add,
480    /// Move => 'MOVE' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
481    Move,
482    /// Copy => 'COPY' 'SILENT'? GraphOrDefault 'TO' GraphOrDefault
483    Copy,
484    /// Create => 'CREATE' 'SILENT'? GraphRef
485    Create,
486    /// InsertData => 'INSERT_DATA' QuadData
487    InsertData,
488    /// DeleteData => 'DELETE_DATA' QuadData
489    DeleteData,
490    /// DeleteWhere => 'DELETE_WHERE' QuadPattern
491    DeleteWhere,
492    /// Modify => ('WITH' iri)? (DeleteClause InsertClause? | InsertClause) UsingClause* 'WHERE' GroupGraphPattern
493    Modify,
494    /// GraphRef => 'GRAPH' iri
495    GraphRef,
496    /// GraphRefAll => GraphRef | 'DEFAULT' | 'NAMED' | 'ALL'
497    GraphRefAll,
498    /// GraphOrDefault => 'DEFAULT' | 'GRAPH'? iri
499    GraphOrDefault,
500    /// QuadData => '{' Quads '}'
501    QuadData,
502    /// QuadPattern => '{' Quads '}'
503    QuadPattern,
504    /// DeleteClause => 'DELETE' QuadPattern
505    DeleteClause,
506    /// InsertClause => 'INSERT' QuadPattern
507    InsertClause,
508    /// UsingClause => 'USING' (iri | 'NAMED' iri)
509    UsingClause,
510    /// Quads => TriplesTemplate? (QuadsNotTriples '.'? TriplesTemplate?)*
511    Quads,
512    /// QuadsNotTriples => 'GRAPH' VarOrIri '{' TriplesTemplate? '}'
513    QuadsNotTriples,
514    /// TriplesSameSubject => VarOrTerm PropertyListNotEmpty | TriplesNode PropertyList
515    TriplesSameSubject,
516    /// GroupGraphPatternSub => TriplesBlock? (GraphPatternNotTriples '.'? TriplesBlock?)*
517    GroupGraphPatternSub,
518    /// TriplesBlock => TriplesSameSubjectPath ('.' TriplesBlock?)?
519    TriplesBlock,
520    /// ReifiedTripleBlock = ReifiedTriple PropertyList
521    ReifiedTripleBlock,
522    /// ReifiedTripleBlockPath = ReifiedTriple PropertyListPath
523    ReifiedTripleBlockPath,
524    /// Reifier = '~' VarOrReifierId?
525    Reifier,
526    /// VarOrReifierId = Var | iri | BlankNode
527    VarOrReifierId,
528    /// AnnotationPath = ( Reifier | AnnotationBlockPath )*
529    AnnotationPath,
530    /// AnnotationBlockPath = '{|' PropertyListPathNotEmpty '|}'
531    AnnotationBlockPath,
532    /// Annotation = ( Reifier | AnnotationBlock )*
533    Annotation,
534    /// AnnotationBlock = '{|' PropertyListNotEmpty '|}'
535    AnnotationBlock,
536    /// GraphPatternNotTriples => GroupOrUnionGraphPattern | OptionalGraphPattern | MinusGraphPattern | GraphGraphPattern | ServiceGraphPattern | Filter | Bind | InlineData
537    GraphPatternNotTriples,
538    /// TriplesSameSubjectPath => VarOrTerm PropertyListPathNotEmpty | TriplesNodePath PropertyListPath
539    TriplesSameSubjectPath,
540    /// GroupOrUnionGraphPattern => GroupGraphPattern ('UNION' GroupGraphPattern)*
541    GroupOrUnionGraphPattern,
542    /// OptionalGraphPattern => 'OPTIONAL' GroupGraphPattern
543    OptionalGraphPattern,
544    /// MinusGraphPattern => 'MINUS' GroupGraphPattern
545    MinusGraphPattern,
546    /// GraphGraphPattern => 'GRAPH' VarOrIri GroupGraphPattern
547    GraphGraphPattern,
548    /// ServiceGraphPattern => 'SERVICE' 'SILENT'? VarOrIri GroupGraphPattern
549    ServiceGraphPattern,
550    /// Filter => 'FILTER' Constraint
551    Filter,
552    /// Bind => 'BIND' '(' Expression 'AS' Var ')'
553    Bind,
554    /// InlineData => 'VALUES' DataBlock
555    InlineData,
556    /// InlineDataOneVar => Var '{' DataBlockValue* '}'
557    InlineDataOneVar,
558    /// InlineDataFull => ('NIL' | '(' Var* ')') '{' ('(' DataBlockValue* ')' | 'NIL')* '}'
559    InlineDataFull,
560    /// DataBlockValue => iri | RDFLiteral | NumericLiteral | BooleanLiteral | 'UNDEF'
561    DataBlockValue,
562    /// RDFLiteral => String ('LANGTAG' | '^^' iri)?
563    RDFLiteral,
564    /// NumericLiteral => NumericLiteralUnsigned | NumericLiteralPositive | NumericLiteralNegative
565    NumericLiteral,
566    /// BooleanLiteral => 'true' | 'false'
567    BooleanLiteral,
568    /// ArgList => 'NIL' | '(' 'DISTINCT'? Expression (',' Expression)* ')'
569    ArgList,
570    /// ExpressionList => 'NIL' | '(' Expression (',' Expression)* ')'
571    ExpressionList,
572    /// ConstructTriples => TriplesSameSubject ('.' ConstructTriples?)?
573    ConstructTriples,
574    /// VarOrTerm => Var | GraphTerm
575    VarOrTerm,
576    /// ReifiedTriple = '<<' ReifiedTripleSubject Verb ReifiedTripleObject Reifier? '>>'
577    ReifiedTriple,
578    /// ReifiedTripleSubject = Var | iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | ReifiedTriple | TripleTerm
579    ReifiedTripleSubject,
580    /// ReifiedTripleObject = Var | iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | ReifiedTriple | TripleTerm
581    ReifiedTripleObject,
582    /// TripleTerm = '<<(' TripleTermSubject Verb TripleTermObject ')>>'
583    TripleTerm,
584    /// TripleTermSubject = Var | iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | TripleTerm
585    TripleTermSubject,
586    /// TripleTermObject = Var | iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | TripleTerm
587    TripleTermObject,
588    /// TripleTermData = '<<(' TripleTermDataSubject ( iri | 'a' ) TripleTermDataObject ')>>'
589    TripleTermData,
590    /// TripleTermDataSubject = iri
591    TripleTermDataSubject,
592    /// TripleTermDataObject = iri | RDFLiteral | NumericLiteral | BooleanLiteral | TripleTermData
593    TripleTermDataObject,
594    /// PropertyListNotEmpty => Verb ObjectList (';' (Verb ObjectList)?)*
595    PropertyListNotEmpty,
596    /// TriplesNode => Collection | BlankNodePropertyList
597    TriplesNode,
598    /// PropertyList => PropertyListNotEmpty?
599    PropertyList,
600    /// Verb => VarOrIri | 'a'
601    Verb,
602    /// ObjectList => Object (',' Object)*
603    ObjectList,
604    /// Object => GraphNode
605    Object,
606    /// GraphNode => VarOrTerm | TriplesNode
607    GraphNode,
608    /// PropertyListPathNotEmpty => (VerbPath | VerbSimple) ObjectListPath (';' ((VerbPath | VerbSimple) ObjectList)?)*
609    PropertyListPathNotEmpty,
610    /// TriplesNodePath => CollectionPath | BlankNodePropertyListPath
611    TriplesNodePath,
612    /// PropertyListPath => PropertyListPathNotEmpty?
613    PropertyListPath,
614    /// VerbPath => Path
615    VerbPath,
616    /// VerbSimple => Var
617    VerbSimple,
618    /// ObjectListPath => ObjectPath (',' ObjectPath)*
619    ObjectListPath,
620    /// Path => PathAlternative
621    Path,
622    /// ObjectPath => GraphNodePath
623    ObjectPath,
624    /// GraphNodePath => VarOrTerm | TriplesNodePath
625    GraphNodePath,
626    /// PathAlternative => PathSequence ('|' PathSequence)*
627    PathAlternative,
628    /// PathSequence => PathEltOrInverse ('/' PathEltOrInverse)*
629    PathSequence,
630    /// PathEltOrInverse => PathElt | '^' PathElt
631    PathEltOrInverse,
632    /// PathElt => PathPrimary PathMod?
633    PathElt,
634    /// PathPrimary => iri | 'a' | '!' PathNegatedPropertySet | '(' Path ')'
635    PathPrimary,
636    /// PathMod => '?' | '*' | '+'
637    PathMod,
638    /// PathNegatedPropertySet => PathOneInPropertySet | '(' (PathOneInPropertySet ('|' PathOneInPropertySet)*)? ')'
639    PathNegatedPropertySet,
640    /// PathOneInPropertySet => iri | 'a' | '^' (iri | 'a')
641    PathOneInPropertySet,
642    /// Integer => 'INTEGER'
643    Integer,
644    /// Collection => '(' GraphNode GraphNode* ')'
645    Collection,
646    /// BlankNodePropertyList => '[' PropertyListNotEmpty ']'
647    BlankNodePropertyList,
648    /// CollectionPath => '(' GraphNodePath GraphNodePath* ')'
649    CollectionPath,
650    /// BlankNodePropertyListPath => '[' PropertyListPathNotEmpty ']'
651    BlankNodePropertyListPath,
652    /// GraphTerm => iri | RDFLiteral | NumericLiteral | BooleanLiteral | BlankNode | 'NIL'
653    GraphTerm,
654    /// BlankNode => 'BLANK_NODE_LABEL' | 'ANON'
655    BlankNode,
656    /// ConditionalOrExpression => ConditionalAndExpression ('||' ConditionalAndExpression)*
657    ConditionalOrExpression,
658    /// ConditionalAndExpression => ValueLogical ('&&' ValueLogical)*
659    ConditionalAndExpression,
660    /// ValueLogical => RelationalExpression
661    ValueLogical,
662    /// RelationalExpression => NumericExpression ('=' NumericExpression | '!=' NumericExpression | '<' NumericExpression | '>' NumericExpression | '<=' NumericExpression | '>=' NumericExpression | 'IN' ExpressionList | 'NOT' 'IN' ExpressionList)?
663    RelationalExpression,
664    /// NumericExpression => AdditiveExpression
665    NumericExpression,
666    /// AdditiveExpression => MultiplicativeExpression ('+' MultiplicativeExpression | '-' MultiplicativeExpression | (NumericLiteralPositive | NumericLiteralNegative) ('*' UnaryExpression | '/' UnaryExpression)*)*
667    AdditiveExpression,
668    /// MultiplicativeExpression => UnaryExpression ('*' UnaryExpression | '/' UnaryExpression)*
669    MultiplicativeExpression,
670    /// NumericLiteralPositive => 'INTEGER_POSITIVE' | 'DECIMAL_POSITIVE' | 'DOUBLE_POSITIVE'
671    NumericLiteralPositive,
672    /// NumericLiteralNegative => 'INTEGER_NEGATIVE' | 'DECIMAL_NEGATIVE' | 'DOUBLE_NEGATIVE'
673    NumericLiteralNegative,
674    /// UnaryExpression => '!' PrimaryExpression | '+' PrimaryExpression | '-' PrimaryExpression | PrimaryExpression
675    UnaryExpression,
676    /// PrimaryExpression => BrackettedExpression | BuiltInCall | iriOrFunction | RDFLiteral | NumericLiteral | BooleanLiteral | Var
677    PrimaryExpression,
678    /// ExprTripleTerm = '<<(' ExprTripleTermSubject Verb ExprTripleTermObject ')>>'
679    ExprTripleTerm,
680    /// ExprTripleTermSubject = iri | Var
681    ExprTripleTermSubject,
682    /// ExprTripleTermObject = iri | RDFLiteral | NumericLiteral | BooleanLiteral | Var | ExprTripleTerm
683    ExprTripleTermObject,
684    /// iriOrFunction => iri ArgList?
685    iriOrFunction,
686    /// Aggregate => 'COUNT' '(' 'DISTINCT'? ('*' | Expression) ')' | 'SUM' '(' 'DISTINCT'? Expression ')' | 'MIN' '(' 'DISTINCT'? Expression ')' | 'MAX' '(' 'DISTINCT'? Expression ')' | 'AVG' '(' 'DISTINCT'? Expression ')' | 'SAMPLE' '(' 'DISTINCT'? Expression ')' | 'GROUP_CONCAT' '(' 'DISTINCT'? Expression (';' 'SEPARATOR' '=' String)? ')'
687    Aggregate,
688    /// SubstringExpression => 'SUBSTR' '(' Expression ',' Expression (',' Expression)? ')'
689    SubstringExpression,
690    /// StrReplaceExpression => 'REPLACE' '(' Expression ',' Expression ',' Expression (',' Expression)? ')'
691    StrReplaceExpression,
692    /// RegexExpression => 'REGEX' '(' Expression ',' Expression (',' Expression)? ')'
693    RegexExpression,
694    /// ExistsFunc => 'EXISTS' GroupGraphPattern
695    ExistsFunc,
696    /// NotExistsFunc => 'NOT' 'EXISTS' GroupGraphPattern
697    NotExistsFunc,
698    /// String => 'STRING_LITERAL1' | 'STRING_LITERAL2' | 'STRING_LITERAL_LONG1' | 'STRING_LITERAL_LONG2'
699    String,
700    /// NumericLiteralUnsigned => 'INTEGER' | 'DECIMAL' | 'DOUBLE'
701    NumericLiteralUnsigned,
702    /// PrefixedName => 'PNAME_LN' | 'PNAME_NS'
703    PrefixedName,
704}