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