1#[derive(Debug, Clone, Copy)]
2pub enum Token {
3 ABORT,
4 ACTION,
5 ADD,
6 AFTER,
7 ALL,
8 ALTER,
9 ALWAYS,
10 ANALYZE,
11 AND,
12 ANY,
13 AS,
14 ASC,
15 ATTACH,
16 AUTOINCR,
17 BEFORE,
18 BEGIN,
19 BETWEEN,
20 BITAND,
21 BITNOT,
22 BITOR,
23 BLOB,
24 BY,
25 CASCADE,
26 CASE,
27 CAST,
28 CHECK,
29 COLLATE,
30 COLUMN,
31 COMMA,
32 COMMIT,
33 CONCAT,
34 CONCURRENTLY,
35 CONFLICT,
36 CONSTRAINT,
37 CREATE,
38 CTIME,
39 CURRENT,
40 DATA,
41 DATABASE,
42 DEFAULT,
43 DEFERRABLE,
44 DEFERRED,
45 DELETE,
46 DESC,
47 DETACH,
48 DISTINCT,
49 DO,
50 DOT,
51 DROP,
52 EACH,
53 ELSE,
54 END,
55 EOF,
56 EQ,
57 ESCAPE,
58 EXCEPT,
59 EXCLUDE,
60 EXCLUSIVE,
61 EXISTS,
62 EXPLAIN,
63 FAIL,
64 FILTER,
65 FIRST,
66 FLOAT,
67 FOLLOWING,
68 FOR,
69 FOREIGN,
70 FROM,
71 GE,
72 GENERATED,
73 GROUP,
74 GROUPS,
75 GT,
76 HAVING,
77 ID,
78 IF,
79 IGNORE,
80 ILLEGAL,
81 IMMEDIATE,
82 IN,
83 INDEX,
84 INDEXED,
85 INITIALLY,
86 INSERT,
87 INSTEAD,
88 INTEGER,
89 INTERSECT,
90 INTO,
91 IS,
92 ISNOT,
93 ISNULL,
94 JOIN,
95 KEY,
96 LAST,
97 LE,
98 LIKE,
99 LIMIT,
100 LOCKED,
101 LPAREN,
102 LSHIFT,
103 LT,
104 MATCH,
105 MATERIALIZED,
106 MINUS,
107 NE,
108 NO,
109 NOT,
110 NOTHING,
111 NOTNULL,
112 NOWAIT,
113 NULL,
114 NULLS,
115 OF,
116 OFFSET,
117 ON,
118 OR,
119 ORDER,
120 OTHERS,
121 OVER,
122 PARTITION,
123 PLAN,
124 PLUS,
125 PRAGMA,
126 PRECEDING,
127 PRIMARY,
128 PTR,
129 QUERY,
130 RAISE,
131 RANGE,
132 RECURSIVE,
133 REFRESH,
134 REFERENCES,
135 REINDEX,
136 RELEASE,
137 REM,
138 RENAME,
139 REPLACE,
140 RESTRICT,
141 RETURNING,
142 ROLLBACK,
143 ROW,
144 ROWS,
145 RPAREN,
146 RSHIFT,
147 SAVEPOINT,
148 SELECT,
149 SEMI,
150 SET,
151 SHARE,
152 SKIP,
153 SLASH,
154 STAR,
155 STRING,
156 TABLE,
157 TEMP,
158 THEN,
159 TIES,
160 TO,
161 TRANSACTION,
162 TRIGGER,
163 UNBOUNDED,
164 UNION,
165 UNIQUE,
166 UPDATE,
167 USING,
168 VACUUM,
169 VALUES,
170 VARIABLE,
171 VIEW,
172 VIRTUAL,
173 WHEN,
174 WHERE,
175 WINDOW,
176 WITH,
177 WITHOUT,
178}
179
180impl Token {
181 #[inline]
183 pub const fn is_operator(&self) -> bool {
184 matches!(
185 self,
186 Token::EQ
187 | Token::NE
188 | Token::LT
189 | Token::GT
190 | Token::LE
191 | Token::GE
192 | Token::PLUS
193 | Token::MINUS
194 | Token::STAR
195 | Token::SLASH
196 | Token::REM
197 | Token::CONCAT
198 | Token::BITAND
199 | Token::BITOR
200 | Token::LSHIFT
201 | Token::RSHIFT
202 )
203 }
204
205 #[inline]
207 pub const fn is_punctuation(&self) -> bool {
208 matches!(
209 self,
210 Token::LPAREN | Token::RPAREN | Token::COMMA | Token::SEMI | Token::DOT
211 )
212 }
213
214 pub const fn as_str(&self) -> &'static str {
215 match self {
216 Token::ABORT => "ABORT",
217 Token::ACTION => "ACTION",
218 Token::ADD => "ADD",
219 Token::AFTER => "AFTER",
220 Token::ALL => "ALL",
221 Token::ALTER => "ALTER",
222 Token::ALWAYS => "ALWAYS",
223 Token::ANALYZE => "ANALYZE",
224 Token::AND => "AND",
225 Token::ANY => "ANY",
226 Token::AS => "AS",
227 Token::ASC => "ASC",
228 Token::ATTACH => "ATTACH",
229 Token::AUTOINCR => "AUTOINCREMENT",
230 Token::BEFORE => "BEFORE",
231 Token::BEGIN => "BEGIN",
232 Token::BETWEEN => "BETWEEN",
233 Token::BITAND => "&",
234 Token::BITNOT => "~",
235 Token::BITOR => "|",
236 Token::BLOB => "BLOB",
237 Token::BY => "BY",
238 Token::CASCADE => "CASCADE",
239 Token::CASE => "CASE",
240 Token::CAST => "CAST",
241 Token::CHECK => "CHECK",
242 Token::COLLATE => "COLLATE",
243 Token::COLUMN => "COLUMN",
244 Token::COMMA => ",",
245 Token::COMMIT => "COMMIT",
246 Token::CONCAT => "||",
247 Token::CONCURRENTLY => "CONCURRENTLY",
248 Token::CONFLICT => "CONFLICT",
249 Token::CONSTRAINT => "CONSTRAINT",
250 Token::CREATE => "CREATE",
251 Token::CTIME => "CTIME",
252 Token::CURRENT => "CURRENT",
253 Token::DATA => "DATA",
254 Token::DATABASE => "DATABASE",
255 Token::DEFAULT => "DEFAULT",
256 Token::DEFERRABLE => "DEFERRABLE",
257 Token::DEFERRED => "DEFERRED",
258 Token::DELETE => "DELETE",
259 Token::DESC => "DESC",
260 Token::DETACH => "DETACH",
261 Token::DISTINCT => "DISTINCT",
262 Token::DO => "DO",
263 Token::DOT => ".",
264 Token::DROP => "DROP",
265 Token::EACH => "EACH",
266 Token::ELSE => "ELSE",
267 Token::END => "END",
268 Token::EOF => "EOF",
269 Token::EQ => "=",
270 Token::ESCAPE => "ESCAPE",
271 Token::EXCEPT => "EXCEPT",
272 Token::EXCLUDE => "EXCLUDE",
273 Token::EXCLUSIVE => "EXCLUSIVE",
274 Token::EXISTS => "EXISTS",
275 Token::EXPLAIN => "EXPLAIN",
276 Token::FAIL => "FAIL",
277 Token::FILTER => "FILTER",
278 Token::FIRST => "FIRST",
279 Token::FLOAT => "FLOAT",
280 Token::FOLLOWING => "FOLLOWING",
281 Token::FOR => "FOR",
282 Token::FOREIGN => "FOREIGN",
283 Token::FROM => "FROM",
284 Token::GE => ">=",
285 Token::GENERATED => "GENERATED",
286 Token::GROUP => "GROUP",
287 Token::GROUPS => "GROUPS",
288 Token::GT => ">",
289 Token::HAVING => "HAVING",
290 Token::ID => "ID",
291 Token::IF => "IF",
292 Token::IGNORE => "IGNORE",
293 Token::ILLEGAL => "ILLEGAL",
294 Token::IMMEDIATE => "IMMEDIATE",
295 Token::IN => "IN",
296 Token::INDEX => "INDEX",
297 Token::INDEXED => "INDEXED",
298 Token::INITIALLY => "INITIALLY",
299 Token::INSERT => "INSERT",
300 Token::INSTEAD => "INSTEAD",
301 Token::INTEGER => "INTEGER",
302 Token::INTERSECT => "INTERSECT",
303 Token::INTO => "INTO",
304 Token::IS => "IS",
305 Token::ISNOT => "IS NOT",
306 Token::ISNULL => "ISNULL",
307 Token::JOIN => "JOIN",
308 Token::KEY => "KEY",
309 Token::LAST => "LAST",
310 Token::LE => "<=",
311 Token::LIKE => "LIKE",
312 Token::LIMIT => "LIMIT",
313 Token::LOCKED => "LOCKED",
314 Token::LPAREN => "(",
315 Token::LSHIFT => "<<",
316 Token::LT => "<",
317 Token::MATCH => "MATCH",
318 Token::MATERIALIZED => "MATERIALIZED",
319 Token::MINUS => "-",
320 Token::NE => "<>",
321 Token::NO => "NO",
322 Token::NOT => "NOT",
323 Token::NOTHING => "NOTHING",
324 Token::NOTNULL => "NOTNULL",
325 Token::NOWAIT => "NOWAIT",
326 Token::NULL => "NULL",
327 Token::NULLS => "NULLS",
328 Token::OF => "OF",
329 Token::OFFSET => "OFFSET",
330 Token::ON => "ON",
331 Token::OR => "OR",
332 Token::ORDER => "ORDER",
333 Token::OTHERS => "OTHERS",
334 Token::OVER => "OVER",
335 Token::PARTITION => "PARTITION",
336 Token::PLAN => "PLAN",
337 Token::PLUS => "+",
338 Token::PRAGMA => "PRAGMA",
339 Token::PRECEDING => "PRECEDING",
340 Token::PRIMARY => "PRIMARY",
341 Token::PTR => "PTR",
342 Token::QUERY => "QUERY",
343 Token::RAISE => "RAISE",
344 Token::RANGE => "RANGE",
345 Token::RECURSIVE => "RECURSIVE",
346 Token::REFRESH => "REFRESH",
347 Token::REFERENCES => "REFERENCES",
348 Token::REINDEX => "REINDEX",
349 Token::RELEASE => "RELEASE",
350 Token::REM => "%",
351 Token::RENAME => "RENAME",
352 Token::REPLACE => "REPLACE",
353 Token::RESTRICT => "RESTRICT",
354 Token::RETURNING => "RETURNING",
355 Token::ROLLBACK => "ROLLBACK",
356 Token::ROW => "ROW",
357 Token::ROWS => "ROWS",
358 Token::RPAREN => ")",
359 Token::RSHIFT => ">>",
360 Token::SAVEPOINT => "SAVEPOINT",
361 Token::SELECT => "SELECT",
362 Token::SEMI => ";",
363 Token::SET => "SET",
364 Token::SHARE => "SHARE",
365 Token::SKIP => "SKIP",
366 Token::SLASH => "/",
367 Token::STAR => "*",
368 Token::STRING => "STRING",
369 Token::TABLE => "TABLE",
370 Token::TEMP => "TEMP",
371 Token::THEN => "THEN",
372 Token::TIES => "TIES",
373 Token::TO => "TO",
374 Token::TRANSACTION => "TRANSACTION",
375 Token::TRIGGER => "TRIGGER",
376 Token::UNBOUNDED => "UNBOUNDED",
377 Token::UNION => "UNION",
378 Token::UNIQUE => "UNIQUE",
379 Token::UPDATE => "UPDATE",
380 Token::USING => "USING",
381 Token::VACUUM => "VACUUM",
382 Token::VALUES => "VALUES",
383 Token::VARIABLE => "VARIABLE",
384 Token::VIEW => "VIEW",
385 Token::VIRTUAL => "VIRTUAL",
386 Token::WHEN => "WHEN",
387 Token::WHERE => "WHERE",
388 Token::WINDOW => "WINDOW",
389 Token::WITH => "WITH",
390 Token::WITHOUT => "WITHOUT",
391 }
392 }
393}
394
395impl core::fmt::Display for Token {
396 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
397 write!(f, "{}", self.as_str())
398 }
399}