1use crate::{
2 sql::{language::Language, Algorithm},
3 syn::token::{DistanceKind, Keyword, TokenKind, VectorTypeKind},
4};
5use phf::{phf_map, phf_set};
6use unicase::UniCase;
7
8pub static RESERVED_KEYWORD: phf::Set<UniCase<&'static str>> = phf_set! {
10 UniCase::ascii("ALTER"),
11 UniCase::ascii("ANALYZE"),
12 UniCase::ascii("BEGIN"),
13 UniCase::ascii("BREAK"),
14 UniCase::ascii("CANCEL"),
15 UniCase::ascii("COMMIT"),
16 UniCase::ascii("CONTINUE"),
17 UniCase::ascii("CREATE"),
18 UniCase::ascii("DEFINE"),
19 UniCase::ascii("FOR"),
20 UniCase::ascii("IF"),
21 UniCase::ascii("INFO"),
22 UniCase::ascii("INSERT"),
23 UniCase::ascii("KILL"),
24 UniCase::ascii("LIVE"),
25 UniCase::ascii("OPTION"),
26 UniCase::ascii("REBUILD"),
27 UniCase::ascii("RETURN"),
28 UniCase::ascii("RELATE"),
29 UniCase::ascii("REMOVE"),
30 UniCase::ascii("SELECT"),
31 UniCase::ascii("LET"),
32 UniCase::ascii("SHOW"),
33 UniCase::ascii("SLEEP"),
34 UniCase::ascii("THROW"),
35 UniCase::ascii("UPDATE"),
36 UniCase::ascii("UPSERT"),
37 UniCase::ascii("USE"),
38 UniCase::ascii("DIFF"),
39 UniCase::ascii("RAND"),
40 UniCase::ascii("NONE"),
41 UniCase::ascii("NULL"),
42 UniCase::ascii("AFTER"),
43 UniCase::ascii("BEFORE"),
44 UniCase::ascii("VALUE"),
45 UniCase::ascii("BY"),
46 UniCase::ascii("ALL"),
47 UniCase::ascii("TRUE"),
48 UniCase::ascii("FALSE"),
49 UniCase::ascii("WHERE"),
50 UniCase::ascii("TABLE"),
51};
52
53pub fn could_be_reserved(s: &str) -> bool {
54 RESERVED_KEYWORD.contains(&UniCase::ascii(s))
55}
56
57pub(crate) static KEYWORDS: phf::Map<UniCase<&'static str>, TokenKind> = phf_map! {
59 UniCase::ascii("ACCESS") => TokenKind::Keyword(Keyword::Access),
61 UniCase::ascii("AFTER") => TokenKind::Keyword(Keyword::After),
62 UniCase::ascii("ALGORITHM") => TokenKind::Keyword(Keyword::Algorithm),
63 UniCase::ascii("ALL") => TokenKind::Keyword(Keyword::All),
64 UniCase::ascii("Alter") => TokenKind::Keyword(Keyword::Alter),
65 UniCase::ascii("ALWAYS") => TokenKind::Keyword(Keyword::Always),
66 UniCase::ascii("ANALYZE") => TokenKind::Keyword(Keyword::Analyze),
67 UniCase::ascii("ANALYZER") => TokenKind::Keyword(Keyword::Analyzer),
68 UniCase::ascii("API") => TokenKind::Keyword(Keyword::Api),
69 UniCase::ascii("AS") => TokenKind::Keyword(Keyword::As),
70 UniCase::ascii("ASCENDING") => TokenKind::Keyword(Keyword::Ascending),
71 UniCase::ascii("ASC") => TokenKind::Keyword(Keyword::Ascending),
72 UniCase::ascii("ASCII") => TokenKind::Keyword(Keyword::Ascii),
73 UniCase::ascii("ASSERT") => TokenKind::Keyword(Keyword::Assert),
74 UniCase::ascii("AT") => TokenKind::Keyword(Keyword::At),
75 UniCase::ascii("AUTHENTICATE") => TokenKind::Keyword(Keyword::Authenticate),
76 UniCase::ascii("AUTO") => TokenKind::Keyword(Keyword::Auto),
77 UniCase::ascii("BEARER") => TokenKind::Keyword(Keyword::Bearer),
78 UniCase::ascii("BEFORE") => TokenKind::Keyword(Keyword::Before),
79 UniCase::ascii("BEGIN") => TokenKind::Keyword(Keyword::Begin),
80 UniCase::ascii("BLANK") => TokenKind::Keyword(Keyword::Blank),
81 UniCase::ascii("BM25") => TokenKind::Keyword(Keyword::Bm25),
82 UniCase::ascii("BREAK") => TokenKind::Keyword(Keyword::Break),
83 UniCase::ascii("BY") => TokenKind::Keyword(Keyword::By),
84 UniCase::ascii("CAMEL") => TokenKind::Keyword(Keyword::Camel),
85 UniCase::ascii("CANCEL") => TokenKind::Keyword(Keyword::Cancel),
86 UniCase::ascii("CASCADE") => TokenKind::Keyword(Keyword::Cascade),
87 UniCase::ascii("CHANGEFEED") => TokenKind::Keyword(Keyword::ChangeFeed),
88 UniCase::ascii("CHANGES") => TokenKind::Keyword(Keyword::Changes),
89 UniCase::ascii("CAPACITY") => TokenKind::Keyword(Keyword::Capacity),
90 UniCase::ascii("CLASS") => TokenKind::Keyword(Keyword::Class),
91 UniCase::ascii("COMMENT") => TokenKind::Keyword(Keyword::Comment),
92 UniCase::ascii("COMMIT") => TokenKind::Keyword(Keyword::Commit),
93 UniCase::ascii("CONCURRENTLY") => TokenKind::Keyword(Keyword::Concurrently),
94 UniCase::ascii("CONFIG") => TokenKind::Keyword(Keyword::Config),
95 UniCase::ascii("CONTENT") => TokenKind::Keyword(Keyword::Content),
96 UniCase::ascii("CONTINUE") => TokenKind::Keyword(Keyword::Continue),
97 UniCase::ascii("CREATE") => TokenKind::Keyword(Keyword::Create),
98 UniCase::ascii("DATABASE") => TokenKind::Keyword(Keyword::Database),
99 UniCase::ascii("DB") => TokenKind::Keyword(Keyword::Database),
100 UniCase::ascii("DEFAULT") => TokenKind::Keyword(Keyword::Default),
101 UniCase::ascii("DEFINE") => TokenKind::Keyword(Keyword::Define),
102 UniCase::ascii("DELETE") => TokenKind::Keyword(Keyword::Delete),
103 UniCase::ascii("DESCENDING") => TokenKind::Keyword(Keyword::Descending),
104 UniCase::ascii("DESC") => TokenKind::Keyword(Keyword::Descending),
105 UniCase::ascii("DIFF") => TokenKind::Keyword(Keyword::Diff),
106 UniCase::ascii("DIMENSION") => TokenKind::Keyword(Keyword::Dimension),
107 UniCase::ascii("DISTANCE") => TokenKind::Keyword(Keyword::Distance),
108 UniCase::ascii("DIST") => TokenKind::Keyword(Keyword::Distance),
109 UniCase::ascii("DOC_IDS_CACHE") => TokenKind::Keyword(Keyword::DocIdsCache),
110 UniCase::ascii("DOC_IDS_ORDER") => TokenKind::Keyword(Keyword::DocIdsOrder),
111 UniCase::ascii("DOC_LENGTHS_CACHE") => TokenKind::Keyword(Keyword::DocLengthsCache),
112 UniCase::ascii("DOC_LENGTHS_ORDER") => TokenKind::Keyword(Keyword::DocLengthsOrder),
113 UniCase::ascii("DROP") => TokenKind::Keyword(Keyword::Drop),
114 UniCase::ascii("DUPLICATE") => TokenKind::Keyword(Keyword::Duplicate),
115 UniCase::ascii("EDGENGRAM") => TokenKind::Keyword(Keyword::Edgengram),
116 UniCase::ascii("EFC") => TokenKind::Keyword(Keyword::Efc),
117 UniCase::ascii("EVENT") => TokenKind::Keyword(Keyword::Event),
118 UniCase::ascii("ELSE") => TokenKind::Keyword(Keyword::Else),
119 UniCase::ascii("END") => TokenKind::Keyword(Keyword::End),
120 UniCase::ascii("ENFORCED") => TokenKind::Keyword(Keyword::Enforced),
121 UniCase::ascii("EXCLUDE") => TokenKind::Keyword(Keyword::Exclude),
122 UniCase::ascii("EXISTS") => TokenKind::Keyword(Keyword::Exists),
123 UniCase::ascii("EXPIRED") => TokenKind::Keyword(Keyword::Expired),
124 UniCase::ascii("EXPLAIN") => TokenKind::Keyword(Keyword::Explain),
125 UniCase::ascii("EXPUNGE") => TokenKind::Keyword(Keyword::Expunge),
126 UniCase::ascii("EXTEND_CANDIDATES") => TokenKind::Keyword(Keyword::ExtendCandidates),
127 UniCase::ascii("false") => TokenKind::Keyword(Keyword::False),
128 UniCase::ascii("FETCH") => TokenKind::Keyword(Keyword::Fetch),
129 UniCase::ascii("FIELD") => TokenKind::Keyword(Keyword::Field),
130 UniCase::ascii("FIELDS") => TokenKind::Keyword(Keyword::Fields),
131 UniCase::ascii("COLUMNS") => TokenKind::Keyword(Keyword::Fields),
132 UniCase::ascii("FILTERS") => TokenKind::Keyword(Keyword::Filters),
133 UniCase::ascii("FLEXIBLE") => TokenKind::Keyword(Keyword::Flexible),
134 UniCase::ascii("FLEXI") => TokenKind::Keyword(Keyword::Flexible),
135 UniCase::ascii("FLEX") => TokenKind::Keyword(Keyword::Flexible),
136 UniCase::ascii("FOR") => TokenKind::Keyword(Keyword::For),
137 UniCase::ascii("FROM") => TokenKind::Keyword(Keyword::From),
138 UniCase::ascii("FULL") => TokenKind::Keyword(Keyword::Full),
139 UniCase::ascii("FUNCTION") => TokenKind::Keyword(Keyword::Function),
140 UniCase::ascii("FUNCTIONS") => TokenKind::Keyword(Keyword::Functions),
141 UniCase::ascii("GRANT") => TokenKind::Keyword(Keyword::Grant),
142 UniCase::ascii("GRAPHQL") => TokenKind::Keyword(Keyword::Graphql),
143 UniCase::ascii("GROUP") => TokenKind::Keyword(Keyword::Group),
144 UniCase::ascii("HEADERS") => TokenKind::Keyword(Keyword::Headers),
145 UniCase::ascii("HIGHLIGHTS") => TokenKind::Keyword(Keyword::Highlights),
146 UniCase::ascii("HNSW") => TokenKind::Keyword(Keyword::Hnsw),
147 UniCase::ascii("IGNORE") => TokenKind::Keyword(Keyword::Ignore),
148 UniCase::ascii("INCLUDE") => TokenKind::Keyword(Keyword::Include),
149 UniCase::ascii("INDEX") => TokenKind::Keyword(Keyword::Index),
150 UniCase::ascii("INFO") => TokenKind::Keyword(Keyword::Info),
151 UniCase::ascii("INSERT") => TokenKind::Keyword(Keyword::Insert),
152 UniCase::ascii("INTO") => TokenKind::Keyword(Keyword::Into),
153 UniCase::ascii("IF") => TokenKind::Keyword(Keyword::If),
154 UniCase::ascii("IS") => TokenKind::Keyword(Keyword::Is),
155 UniCase::ascii("ISSUER") => TokenKind::Keyword(Keyword::Issuer),
156 UniCase::ascii("JWT") => TokenKind::Keyword(Keyword::Jwt),
157 UniCase::ascii("JWKS") => TokenKind::Keyword(Keyword::Jwks),
158 UniCase::ascii("KEY") => TokenKind::Keyword(Keyword::Key),
159 UniCase::ascii("KEEP_PRUNED_CONNECTIONS") => TokenKind::Keyword(Keyword::KeepPrunedConnections),
160 UniCase::ascii("KILL") => TokenKind::Keyword(Keyword::Kill),
161 UniCase::ascii("LET") => TokenKind::Keyword(Keyword::Let),
162 UniCase::ascii("LIMIT") => TokenKind::Keyword(Keyword::Limit),
163 UniCase::ascii("LIVE") => TokenKind::Keyword(Keyword::Live),
164 UniCase::ascii("LOWERCASE") => TokenKind::Keyword(Keyword::Lowercase),
165 UniCase::ascii("LM") => TokenKind::Keyword(Keyword::Lm),
166 UniCase::ascii("M") => TokenKind::Keyword(Keyword::M),
167 UniCase::ascii("M0") => TokenKind::Keyword(Keyword::M0),
168 UniCase::ascii("MAPPER") => TokenKind::Keyword(Keyword::Mapper),
169 UniCase::ascii("MIDDLEWARE") => TokenKind::Keyword(Keyword::Middleware),
170 UniCase::ascii("ML") => TokenKind::Keyword(Keyword::ML),
171 UniCase::ascii("MERGE") => TokenKind::Keyword(Keyword::Merge),
172 UniCase::ascii("MODEL") => TokenKind::Keyword(Keyword::Model),
173 UniCase::ascii("MTREE") => TokenKind::Keyword(Keyword::MTree),
174 UniCase::ascii("MTREE_CACHE") => TokenKind::Keyword(Keyword::MTreeCache),
175 UniCase::ascii("NAMESPACE") => TokenKind::Keyword(Keyword::Namespace),
176 UniCase::ascii("NS") => TokenKind::Keyword(Keyword::Namespace),
177 UniCase::ascii("NGRAM") => TokenKind::Keyword(Keyword::Ngram),
178 UniCase::ascii("NO") => TokenKind::Keyword(Keyword::No),
179 UniCase::ascii("NOINDEX") => TokenKind::Keyword(Keyword::NoIndex),
180 UniCase::ascii("NONE") => TokenKind::Keyword(Keyword::None),
181 UniCase::ascii("NULL") => TokenKind::Keyword(Keyword::Null),
182 UniCase::ascii("NUMERIC") => TokenKind::Keyword(Keyword::Numeric),
183 UniCase::ascii("OMIT") => TokenKind::Keyword(Keyword::Omit),
184 UniCase::ascii("ON") => TokenKind::Keyword(Keyword::On),
185 UniCase::ascii("ONLY") => TokenKind::Keyword(Keyword::Only),
186 UniCase::ascii("OPTION") => TokenKind::Keyword(Keyword::Option),
187 UniCase::ascii("ORDER") => TokenKind::Keyword(Keyword::Order),
188 UniCase::ascii("ORIGINAL") => TokenKind::Keyword(Keyword::Original),
189 UniCase::ascii("OVERWRITE") => TokenKind::Keyword(Keyword::Overwrite),
190 UniCase::ascii("PARALLEL") => TokenKind::Keyword(Keyword::Parallel),
191 UniCase::ascii("PARAM") => TokenKind::Keyword(Keyword::Param),
192 UniCase::ascii("PASSHASH") => TokenKind::Keyword(Keyword::Passhash),
193 UniCase::ascii("PASSWORD") => TokenKind::Keyword(Keyword::Password),
194 UniCase::ascii("PATCH") => TokenKind::Keyword(Keyword::Patch),
195 UniCase::ascii("PERMISSIONS") => TokenKind::Keyword(Keyword::Permissions),
196 UniCase::ascii("POSTINGS_CACHE") => TokenKind::Keyword(Keyword::PostingsCache),
197 UniCase::ascii("POSTINGS_ORDER") => TokenKind::Keyword(Keyword::PostingsOrder),
198 UniCase::ascii("PUNCT") => TokenKind::Keyword(Keyword::Punct),
199 UniCase::ascii("PURGE") => TokenKind::Keyword(Keyword::Purge),
200 UniCase::ascii("RANGE") => TokenKind::Keyword(Keyword::Range),
201 UniCase::ascii("READONLY") => TokenKind::Keyword(Keyword::Readonly),
202 UniCase::ascii("REJECT") => TokenKind::Keyword(Keyword::Reject),
203 UniCase::ascii("RELATE") => TokenKind::Keyword(Keyword::Relate),
204 UniCase::ascii("RELATION") => TokenKind::Keyword(Keyword::Relation),
205 UniCase::ascii("REBUILD") => TokenKind::Keyword(Keyword::Rebuild),
206 UniCase::ascii("REFERENCE") => TokenKind::Keyword(Keyword::Reference),
207 UniCase::ascii("REFRESH") => TokenKind::Keyword(Keyword::Refresh),
208 UniCase::ascii("REMOVE") => TokenKind::Keyword(Keyword::Remove),
209 UniCase::ascii("REPLACE") => TokenKind::Keyword(Keyword::Replace),
210 UniCase::ascii("RETURN") => TokenKind::Keyword(Keyword::Return),
211 UniCase::ascii("REVOKE") => TokenKind::Keyword(Keyword::Revoke),
212 UniCase::ascii("REVOKED") => TokenKind::Keyword(Keyword::Revoked),
213 UniCase::ascii("ROLES") => TokenKind::Keyword(Keyword::Roles),
214 UniCase::ascii("ROOT") => TokenKind::Keyword(Keyword::Root),
215 UniCase::ascii("KV") => TokenKind::Keyword(Keyword::Root),
216 UniCase::ascii("SCHEMAFULL") => TokenKind::Keyword(Keyword::Schemafull),
217 UniCase::ascii("SCHEMAFUL") => TokenKind::Keyword(Keyword::Schemafull),
218 UniCase::ascii("SCHEMALESS") => TokenKind::Keyword(Keyword::Schemaless),
219 UniCase::ascii("SCOPE") => TokenKind::Keyword(Keyword::Scope),
220 UniCase::ascii("SC") => TokenKind::Keyword(Keyword::Scope),
221 UniCase::ascii("SEARCH") => TokenKind::Keyword(Keyword::Search),
222 UniCase::ascii("SELECT") => TokenKind::Keyword(Keyword::Select),
223 UniCase::ascii("SESSION") => TokenKind::Keyword(Keyword::Session),
224 UniCase::ascii("SET") => TokenKind::Keyword(Keyword::Set),
225 UniCase::ascii("SHOW") => TokenKind::Keyword(Keyword::Show),
226 UniCase::ascii("SIGNIN") => TokenKind::Keyword(Keyword::Signin),
227 UniCase::ascii("SIGNUP") => TokenKind::Keyword(Keyword::Signup),
228 UniCase::ascii("SINCE") => TokenKind::Keyword(Keyword::Since),
229 UniCase::ascii("SLEEP") => TokenKind::Keyword(Keyword::Sleep),
230 UniCase::ascii("SNOWBALL") => TokenKind::Keyword(Keyword::Snowball),
231 UniCase::ascii("SPLIT") => TokenKind::Keyword(Keyword::Split),
232 UniCase::ascii("START") => TokenKind::Keyword(Keyword::Start),
233 UniCase::ascii("STRUCTURE") => TokenKind::Keyword(Keyword::Structure),
234 UniCase::ascii("TABLE") => TokenKind::Keyword(Keyword::Table),
235 UniCase::ascii("TABLES") => TokenKind::Keyword(Keyword::Tables),
236 UniCase::ascii("TB") => TokenKind::Keyword(Keyword::Table),
237 UniCase::ascii("TEMPFILES") => TokenKind::Keyword(Keyword::TempFiles),
238 UniCase::ascii("TERMS_CACHE") => TokenKind::Keyword(Keyword::TermsCache),
239 UniCase::ascii("TERMS_ORDER") => TokenKind::Keyword(Keyword::TermsOrder),
240 UniCase::ascii("THEN") => TokenKind::Keyword(Keyword::Then),
241 UniCase::ascii("THROW") => TokenKind::Keyword(Keyword::Throw),
242 UniCase::ascii("TIMEOUT") => TokenKind::Keyword(Keyword::Timeout),
243 UniCase::ascii("TO") => TokenKind::Keyword(Keyword::To),
244 UniCase::ascii("TOKENIZERS") => TokenKind::Keyword(Keyword::Tokenizers),
245 UniCase::ascii("TOKEN") => TokenKind::Keyword(Keyword::Token),
246 UniCase::ascii("TRANSACTION") => TokenKind::Keyword(Keyword::Transaction),
247 UniCase::ascii("true") => TokenKind::Keyword(Keyword::True),
248 UniCase::ascii("TYPE") => TokenKind::Keyword(Keyword::Type),
249 UniCase::ascii("UNIQUE") => TokenKind::Keyword(Keyword::Unique),
250 UniCase::ascii("UNSET") => TokenKind::Keyword(Keyword::Unset),
251 UniCase::ascii("UPDATE") => TokenKind::Keyword(Keyword::Update),
252 UniCase::ascii("UPSERT") => TokenKind::Keyword(Keyword::Upsert),
253 UniCase::ascii("UPPERCASE") => TokenKind::Keyword(Keyword::Uppercase),
254 UniCase::ascii("URL") => TokenKind::Keyword(Keyword::Url),
255 UniCase::ascii("USE") => TokenKind::Keyword(Keyword::Use),
256 UniCase::ascii("USER") => TokenKind::Keyword(Keyword::User),
257 UniCase::ascii("VALUE") => TokenKind::Keyword(Keyword::Value),
258 UniCase::ascii("VALUES") => TokenKind::Keyword(Keyword::Values),
259 UniCase::ascii("VERSION") => TokenKind::Keyword(Keyword::Version),
260 UniCase::ascii("VS") => TokenKind::Keyword(Keyword::Vs),
261 UniCase::ascii("WHEN") => TokenKind::Keyword(Keyword::When),
262 UniCase::ascii("WHERE") => TokenKind::Keyword(Keyword::Where),
263 UniCase::ascii("WITH") => TokenKind::Keyword(Keyword::With),
264 UniCase::ascii("ALLINSIDE") => TokenKind::Keyword(Keyword::AllInside),
265 UniCase::ascii("ANDKW") => TokenKind::Keyword(Keyword::AndKw),
266 UniCase::ascii("ANYINSIDE") => TokenKind::Keyword(Keyword::AnyInside),
267 UniCase::ascii("INSIDE") => TokenKind::Keyword(Keyword::Inside),
268 UniCase::ascii("INTERSECTS") => TokenKind::Keyword(Keyword::Intersects),
269 UniCase::ascii("NONEINSIDE") => TokenKind::Keyword(Keyword::NoneInside),
270 UniCase::ascii("NOTINSIDE") => TokenKind::Keyword(Keyword::NotInside),
271 UniCase::ascii("OR") => TokenKind::Keyword(Keyword::OrKw),
272 UniCase::ascii("OUTSIDE") => TokenKind::Keyword(Keyword::Outside),
273 UniCase::ascii("NOT") => TokenKind::Keyword(Keyword::Not),
274 UniCase::ascii("AND") => TokenKind::Keyword(Keyword::And),
275 UniCase::ascii("COLLATE") => TokenKind::Keyword(Keyword::Collate),
276 UniCase::ascii("CONTAINSALL") => TokenKind::Keyword(Keyword::ContainsAll),
277 UniCase::ascii("CONTAINSANY") => TokenKind::Keyword(Keyword::ContainsAny),
278 UniCase::ascii("CONTAINSNONE") => TokenKind::Keyword(Keyword::ContainsNone),
279 UniCase::ascii("CONTAINSNOT") => TokenKind::Keyword(Keyword::ContainsNot),
280 UniCase::ascii("CONTAINS") => TokenKind::Keyword(Keyword::Contains),
281 UniCase::ascii("IN") => TokenKind::Keyword(Keyword::In),
282 UniCase::ascii("OUT") => TokenKind::Keyword(Keyword::Out),
283 UniCase::ascii("NORMAL") => TokenKind::Keyword(Keyword::Normal),
284
285 UniCase::ascii("ANY") => TokenKind::Keyword(Keyword::Any),
287 UniCase::ascii("ARRAY") => TokenKind::Keyword(Keyword::Array),
288 UniCase::ascii("GEOMETRY") => TokenKind::Keyword(Keyword::Geometry),
289 UniCase::ascii("RECORD") => TokenKind::Keyword(Keyword::Record),
290 UniCase::ascii("FUTURE") => TokenKind::Keyword(Keyword::Future),
291 UniCase::ascii("BOOL") => TokenKind::Keyword(Keyword::Bool),
292 UniCase::ascii("BYTES") => TokenKind::Keyword(Keyword::Bytes),
293 UniCase::ascii("DATETIME") => TokenKind::Keyword(Keyword::Datetime),
294 UniCase::ascii("DECIMAL") => TokenKind::Keyword(Keyword::Decimal),
295 UniCase::ascii("DURATION") => TokenKind::Keyword(Keyword::Duration),
296 UniCase::ascii("FLOAT") => TokenKind::Keyword(Keyword::Float),
297 UniCase::ascii("fn") => TokenKind::Keyword(Keyword::Fn),
298 UniCase::ascii("INT") => TokenKind::Keyword(Keyword::Int),
299 UniCase::ascii("NUMBER") => TokenKind::Keyword(Keyword::Number),
300 UniCase::ascii("OBJECT") => TokenKind::Keyword(Keyword::Object),
301 UniCase::ascii("STRING") => TokenKind::Keyword(Keyword::String),
302 UniCase::ascii("UUID") => TokenKind::Keyword(Keyword::Uuid),
303 UniCase::ascii("ULID") => TokenKind::Keyword(Keyword::Ulid),
304 UniCase::ascii("RAND") => TokenKind::Keyword(Keyword::Rand),
305 UniCase::ascii("REFERENCES") => TokenKind::Keyword(Keyword::References),
306 UniCase::ascii("FEATURE") => TokenKind::Keyword(Keyword::Feature),
307 UniCase::ascii("LINE") => TokenKind::Keyword(Keyword::Line),
308 UniCase::ascii("POINT") => TokenKind::Keyword(Keyword::Point),
309 UniCase::ascii("POLYGON") => TokenKind::Keyword(Keyword::Polygon),
310 UniCase::ascii("MULTIPOINT") => TokenKind::Keyword(Keyword::MultiPoint),
311 UniCase::ascii("MULTILINE") => TokenKind::Keyword(Keyword::MultiLine),
312 UniCase::ascii("MULTIPOLYGON") => TokenKind::Keyword(Keyword::MultiPolygon),
313 UniCase::ascii("COLLECTION") => TokenKind::Keyword(Keyword::Collection),
314
315 UniCase::ascii("ARABIC") => TokenKind::Language(Language::Arabic),
317 UniCase::ascii("ARA") => TokenKind::Language(Language::Arabic),
318 UniCase::ascii("AR") => TokenKind::Language(Language::Arabic),
319 UniCase::ascii("DANISH") => TokenKind::Language(Language::Danish),
320 UniCase::ascii("DAN") => TokenKind::Language(Language::Danish),
321 UniCase::ascii("DA") => TokenKind::Language(Language::Danish),
322 UniCase::ascii("DUTCH") => TokenKind::Language(Language::Dutch),
323 UniCase::ascii("NLD") => TokenKind::Language(Language::Dutch),
324 UniCase::ascii("NL") => TokenKind::Language(Language::Dutch),
325 UniCase::ascii("ENGLISH") => TokenKind::Language(Language::English),
326 UniCase::ascii("ENG") => TokenKind::Language(Language::English),
327 UniCase::ascii("EN") => TokenKind::Language(Language::English),
328 UniCase::ascii("FRENCH") => TokenKind::Language(Language::French),
329 UniCase::ascii("FRA") => TokenKind::Language(Language::French),
330 UniCase::ascii("FR") => TokenKind::Language(Language::French),
331 UniCase::ascii("GERMAN") => TokenKind::Language(Language::German),
332 UniCase::ascii("DEU") => TokenKind::Language(Language::German),
333 UniCase::ascii("DE") => TokenKind::Language(Language::German),
334 UniCase::ascii("GREEK") => TokenKind::Language(Language::Greek),
335 UniCase::ascii("ELL") => TokenKind::Language(Language::Greek),
336 UniCase::ascii("EL") => TokenKind::Language(Language::Greek),
337 UniCase::ascii("HUNGARIAN") => TokenKind::Language(Language::Hungarian),
338 UniCase::ascii("HUN") => TokenKind::Language(Language::Hungarian),
339 UniCase::ascii("HU") => TokenKind::Language(Language::Hungarian),
340 UniCase::ascii("ITALIAN") => TokenKind::Language(Language::Italian),
341 UniCase::ascii("ITA") => TokenKind::Language(Language::Italian),
342 UniCase::ascii("IT") => TokenKind::Language(Language::Italian),
343 UniCase::ascii("NORWEGIAN") => TokenKind::Language(Language::Norwegian),
344 UniCase::ascii("NOR") => TokenKind::Language(Language::Norwegian),
345 UniCase::ascii("PORTUGUESE") => TokenKind::Language(Language::Portuguese),
346 UniCase::ascii("POR") => TokenKind::Language(Language::Portuguese),
347 UniCase::ascii("PT") => TokenKind::Language(Language::Portuguese),
348 UniCase::ascii("ROMANIAN") => TokenKind::Language(Language::Romanian),
349 UniCase::ascii("RON") => TokenKind::Language(Language::Romanian),
350 UniCase::ascii("RO") => TokenKind::Language(Language::Romanian),
351 UniCase::ascii("RUSSIAN") => TokenKind::Language(Language::Russian),
352 UniCase::ascii("RUS") => TokenKind::Language(Language::Russian),
353 UniCase::ascii("RU") => TokenKind::Language(Language::Russian),
354 UniCase::ascii("SPANISH") => TokenKind::Language(Language::Spanish),
355 UniCase::ascii("SPA") => TokenKind::Language(Language::Spanish),
356 UniCase::ascii("ES") => TokenKind::Language(Language::Spanish),
357 UniCase::ascii("SWEDISH") => TokenKind::Language(Language::Swedish),
358 UniCase::ascii("SWE") => TokenKind::Language(Language::Swedish),
359 UniCase::ascii("SV") => TokenKind::Language(Language::Swedish),
360 UniCase::ascii("TAMIL") => TokenKind::Language(Language::Tamil),
361 UniCase::ascii("TAM") => TokenKind::Language(Language::Tamil),
362 UniCase::ascii("TA") => TokenKind::Language(Language::Tamil),
363 UniCase::ascii("TURKISH") => TokenKind::Language(Language::Turkish),
364 UniCase::ascii("TUR") => TokenKind::Language(Language::Turkish),
365 UniCase::ascii("TR") => TokenKind::Language(Language::Turkish),
366
367 UniCase::ascii("EDDSA") => TokenKind::Algorithm(Algorithm::EdDSA),
369 UniCase::ascii("ES256") => TokenKind::Algorithm(Algorithm::Es256),
370 UniCase::ascii("ES384") => TokenKind::Algorithm(Algorithm::Es384),
371 UniCase::ascii("ES512") => TokenKind::Algorithm(Algorithm::Es512),
372 UniCase::ascii("HS256") => TokenKind::Algorithm(Algorithm::Hs256),
373 UniCase::ascii("HS384") => TokenKind::Algorithm(Algorithm::Hs384),
374 UniCase::ascii("HS512") => TokenKind::Algorithm(Algorithm::Hs512),
375 UniCase::ascii("PS256") => TokenKind::Algorithm(Algorithm::Ps256),
376 UniCase::ascii("PS384") => TokenKind::Algorithm(Algorithm::Ps384),
377 UniCase::ascii("PS512") => TokenKind::Algorithm(Algorithm::Ps512),
378 UniCase::ascii("RS256") => TokenKind::Algorithm(Algorithm::Rs256),
379 UniCase::ascii("RS384") => TokenKind::Algorithm(Algorithm::Rs384),
380 UniCase::ascii("RS512") => TokenKind::Algorithm(Algorithm::Rs512),
381
382 UniCase::ascii("CHEBYSHEV") => TokenKind::Distance(DistanceKind::Chebyshev),
384 UniCase::ascii("COSINE") => TokenKind::Distance(DistanceKind::Cosine),
385 UniCase::ascii("EUCLIDEAN") => TokenKind::Distance(DistanceKind::Euclidean),
386 UniCase::ascii("JACCARD") => TokenKind::Distance(DistanceKind::Jaccard),
387 UniCase::ascii("HAMMING") => TokenKind::Distance(DistanceKind::Hamming),
388 UniCase::ascii("MANHATTAN") => TokenKind::Distance(DistanceKind::Manhattan),
389 UniCase::ascii("MINKOWSKI") => TokenKind::Distance(DistanceKind::Minkowski),
390 UniCase::ascii("PEARSON") => TokenKind::Distance(DistanceKind::Pearson),
391
392 UniCase::ascii("F64") => TokenKind::VectorType(VectorTypeKind::F64),
394 UniCase::ascii("F32") => TokenKind::VectorType(VectorTypeKind::F32),
395 UniCase::ascii("I64") => TokenKind::VectorType(VectorTypeKind::I64),
396 UniCase::ascii("I32") => TokenKind::VectorType(VectorTypeKind::I32),
397 UniCase::ascii("I16") => TokenKind::VectorType(VectorTypeKind::I16),
398
399 UniCase::ascii("GET") => TokenKind::Keyword(Keyword::Get),
401 UniCase::ascii("POST") => TokenKind::Keyword(Keyword::Post),
402 UniCase::ascii("PUT") => TokenKind::Keyword(Keyword::Put),
403 UniCase::ascii("TRACE") => TokenKind::Keyword(Keyword::Trace)
404};