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