From f8daf2ff95952e424e7f30891add751b5e80a009 Mon Sep 17 00:00:00 2001 From: "Levy A." Date: Thu, 21 Aug 2025 15:01:36 -0300 Subject: [PATCH] fix: copy TokenType's `as_str` from the old parser --- parser/src/token.rs | 332 +++++++++++++++++++++----------------------- 1 file changed, 160 insertions(+), 172 deletions(-) diff --git a/parser/src/token.rs b/parser/src/token.rs index e328e195e..34a7344e2 100644 --- a/parser/src/token.rs +++ b/parser/src/token.rs @@ -181,178 +181,166 @@ pub enum TokenType { } impl TokenType { - pub fn as_str(&self) -> Option<&'static str> { - Some(match self { - TokenType::TK_EOF => return None, - TokenType::TK_SEMI => ";", - TokenType::TK_EXPLAIN => "EXPLAIN", - TokenType::TK_QUERY => "QUERY", - TokenType::TK_PLAN => "PLAN", - TokenType::TK_BEGIN => "BEGIN", - TokenType::TK_TRANSACTION => "TRANSACTION", - TokenType::TK_DEFERRED => "DEFERRED", - TokenType::TK_IMMEDIATE => "IMMEDIATE", - TokenType::TK_EXCLUSIVE => "EXCLUSIVE", - TokenType::TK_COMMIT => "COMMIT", - TokenType::TK_END => "END", - TokenType::TK_ROLLBACK => "ROLLBACK", - TokenType::TK_SAVEPOINT => "SAVEPOINT", - TokenType::TK_RELEASE => "RELEASE", - TokenType::TK_TO => "TO", - TokenType::TK_TABLE => "TABLE", - TokenType::TK_CREATE => "CREATE", - TokenType::TK_IF => "IF", - TokenType::TK_NOT => "NOT", - TokenType::TK_EXISTS => "EXISTS", - TokenType::TK_TEMP => "TEMP", - TokenType::TK_LP => "(", - TokenType::TK_RP => ")", - TokenType::TK_AS => "AS", - TokenType::TK_COMMA => ",", - TokenType::TK_WITHOUT => "WITHOUT", - TokenType::TK_ABORT => "ABORT", - TokenType::TK_ACTION => "ACTION", - TokenType::TK_AFTER => "AFTER", - TokenType::TK_ANALYZE => "ANALYZE", - TokenType::TK_ASC => "ASC", - TokenType::TK_ATTACH => "ATTACH", - TokenType::TK_BEFORE => "BEFORE", - TokenType::TK_BY => "BY", - TokenType::TK_CASCADE => "CASCADE", - TokenType::TK_CAST => "CAST", - TokenType::TK_CONFLICT => "CONFLICT", - TokenType::TK_DATABASE => "DATABASE", - TokenType::TK_DESC => "DESC", - TokenType::TK_DETACH => "DETACH", - TokenType::TK_EACH => "EACH", - TokenType::TK_FAIL => "FAIL", - TokenType::TK_OR => "OR", - TokenType::TK_AND => "AND", - TokenType::TK_IS => "IS", - TokenType::TK_ISNOT => "IS NOT", - TokenType::TK_MATCH => "MATCH", - TokenType::TK_LIKE_KW => "LIKE", - TokenType::TK_BETWEEN => "BETWEEN", - TokenType::TK_IN => "IN", - TokenType::TK_ISNULL => "ISNULL", - TokenType::TK_NOTNULL => "NOTNULL", - TokenType::TK_NE => "!=", - TokenType::TK_EQ => "=", - TokenType::TK_GT => ">", - TokenType::TK_LE => "<=", - TokenType::TK_LT => "<", - TokenType::TK_GE => ">=", - TokenType::TK_ESCAPE => "ESCAPE", - TokenType::TK_ID => return None, - TokenType::TK_COLUMNKW => "COLUMN", - TokenType::TK_DO => "DO", - TokenType::TK_FOR => "FOR", - TokenType::TK_IGNORE => "IGNORE", - TokenType::TK_INITIALLY => "INITIALLY", - TokenType::TK_INSTEAD => "INSTEAD", - TokenType::TK_NO => "NO", - TokenType::TK_KEY => "KEY", - TokenType::TK_OF => "OF", - TokenType::TK_OFFSET => "OFFSET", - TokenType::TK_PRAGMA => "PRAGMA", - TokenType::TK_RAISE => "RAISE", - TokenType::TK_RECURSIVE => "RECURSIVE", - TokenType::TK_REPLACE => "REPLACE", - TokenType::TK_RESTRICT => "RESTRICT", - TokenType::TK_ROW => "ROW", - TokenType::TK_ROWS => "ROWS", - TokenType::TK_TRIGGER => "TRIGGER", - TokenType::TK_VACUUM => "VACUUM", - TokenType::TK_VIEW => "VIEW", - TokenType::TK_VIRTUAL => "VIRTUAL", - TokenType::TK_WITH => "WITH", - TokenType::TK_NULLS => "NULLS", - TokenType::TK_FIRST => "FIRST", - TokenType::TK_LAST => "LAST", - TokenType::TK_CURRENT => "CURRENT", - TokenType::TK_FOLLOWING => "FOLLOWING", - TokenType::TK_PARTITION => "PARTITION", - TokenType::TK_PRECEDING => "PRECEDING", - TokenType::TK_RANGE => "RANGE", - TokenType::TK_UNBOUNDED => "UNBOUNDED", - TokenType::TK_EXCLUDE => "EXCLUDE", - TokenType::TK_GROUPS => "GROUPS", - TokenType::TK_OTHERS => "OTHERS", - TokenType::TK_TIES => "TIES", - TokenType::TK_GENERATED => "GENERATED", - TokenType::TK_ALWAYS => "ALWAYS", - TokenType::TK_MATERIALIZED => "MATERIALIZED", - TokenType::TK_REINDEX => "REINDEX", - TokenType::TK_RENAME => "RENAME", - TokenType::TK_CTIME_KW => "CURRENT_TIME", - TokenType::TK_ANY => "ANY", - TokenType::TK_BITAND => "&", - TokenType::TK_BITOR => "|", - TokenType::TK_LSHIFT => "<<", - TokenType::TK_RSHIFT => ">>", - TokenType::TK_PLUS => "+", - TokenType::TK_MINUS => "-", - TokenType::TK_STAR => "*", - TokenType::TK_SLASH => "/", - TokenType::TK_REM => "%", - TokenType::TK_CONCAT => "||", - TokenType::TK_PTR => "->", - TokenType::TK_COLLATE => "COLLATE", - TokenType::TK_BITNOT => "~", - TokenType::TK_ON => "ON", - TokenType::TK_INDEXED => "INDEXED", - TokenType::TK_STRING => "STRING", - TokenType::TK_JOIN_KW => "JOIN", - TokenType::TK_CONSTRAINT => "CONSTRAINT", - TokenType::TK_DEFAULT => "DEFAULT", - TokenType::TK_NULL => "NULL", - TokenType::TK_PRIMARY => "PRIMARY", - TokenType::TK_UNIQUE => "UNIQUE", - TokenType::TK_CHECK => "CHECK", - TokenType::TK_REFERENCES => "REFERENCES", - TokenType::TK_AUTOINCR => "AUTOINCREMENT", - TokenType::TK_INSERT => "INSERT", - TokenType::TK_DELETE => "DELETE", - TokenType::TK_UPDATE => "UPDATE", - TokenType::TK_SET => "SET", - TokenType::TK_DEFERRABLE => "DEFERRABLE", - TokenType::TK_FOREIGN => "FOREIGN", - TokenType::TK_DROP => "DROP", - TokenType::TK_UNION => "UNION", - TokenType::TK_ALL => "ALL", - TokenType::TK_EXCEPT => "EXCEPT", - TokenType::TK_INTERSECT => "INTERSECT", - TokenType::TK_SELECT => "SELECT", - TokenType::TK_VALUES => "VALUES", - TokenType::TK_DISTINCT => "DISTINCT", - TokenType::TK_DOT => ".", - TokenType::TK_FROM => "FROM", - TokenType::TK_JOIN => "JOIN", - TokenType::TK_USING => "USING", - TokenType::TK_ORDER => "ORDER", - TokenType::TK_GROUP => "GROUP", - TokenType::TK_HAVING => "HAVING", - TokenType::TK_LIMIT => "LIMIT", - TokenType::TK_WHERE => "WHERE", - TokenType::TK_RETURNING => "RETURNING", - TokenType::TK_INTO => "INTO", - TokenType::TK_NOTHING => "NOTHING", - TokenType::TK_BLOB => "BLOB", - TokenType::TK_FLOAT => "FLOAT", - TokenType::TK_INTEGER => "INTEGER", - TokenType::TK_VARIABLE => "VARIABLE", - TokenType::TK_CASE => "CASE", - TokenType::TK_WHEN => "WHEN", - TokenType::TK_THEN => "THEN", - TokenType::TK_ELSE => "ELSE", - TokenType::TK_INDEX => "INDEX", - TokenType::TK_ALTER => "ALTER", - TokenType::TK_ADD => "ADD", - TokenType::TK_WINDOW => "WINDOW", - TokenType::TK_OVER => "OVER", - TokenType::TK_FILTER => "FILTER", - TokenType::TK_ILLEGAL => "ILLEGAL", - }) + /// Return the associated string (mainly for testing) + pub const fn as_str(&self) -> Option<&'static str> { + match self { + TokenType::TK_ABORT => Some("ABORT"), + TokenType::TK_ACTION => Some("ACTION"), + TokenType::TK_ADD => Some("ADD"), + TokenType::TK_AFTER => Some("AFTER"), + TokenType::TK_ALL => Some("ALL"), + TokenType::TK_ALTER => Some("ALTER"), + TokenType::TK_ANALYZE => Some("ANALYZE"), + TokenType::TK_ALWAYS => Some("ALWAYS"), + TokenType::TK_AND => Some("AND"), + TokenType::TK_AS => Some("AS"), + TokenType::TK_ASC => Some("ASC"), + TokenType::TK_ATTACH => Some("ATTACH"), + TokenType::TK_AUTOINCR => Some("AUTOINCREMENT"), + TokenType::TK_BEFORE => Some("BEFORE"), + TokenType::TK_BEGIN => Some("BEGIN"), + TokenType::TK_BETWEEN => Some("BETWEEN"), + TokenType::TK_BY => Some("BY"), + TokenType::TK_CASCADE => Some("CASCADE"), + TokenType::TK_CASE => Some("CASE"), + TokenType::TK_CAST => Some("CAST"), + TokenType::TK_CHECK => Some("CHECK"), + TokenType::TK_COLLATE => Some("COLLATE"), + TokenType::TK_COLUMNKW => Some("COLUMN"), + TokenType::TK_COMMIT => Some("COMMIT"), + TokenType::TK_CONFLICT => Some("CONFLICT"), + TokenType::TK_CONSTRAINT => Some("CONSTRAINT"), + TokenType::TK_CREATE => Some("CREATE"), + TokenType::TK_CURRENT => Some("CURRENT"), + TokenType::TK_DATABASE => Some("DATABASE"), + TokenType::TK_DEFAULT => Some("DEFAULT"), + TokenType::TK_DEFERRABLE => Some("DEFERRABLE"), + TokenType::TK_DEFERRED => Some("DEFERRED"), + TokenType::TK_DELETE => Some("DELETE"), + TokenType::TK_DESC => Some("DESC"), + TokenType::TK_DETACH => Some("DETACH"), + TokenType::TK_DISTINCT => Some("DISTINCT"), + TokenType::TK_DO => Some("DO"), + TokenType::TK_DROP => Some("DROP"), + TokenType::TK_EACH => Some("EACH"), + TokenType::TK_ELSE => Some("ELSE"), + TokenType::TK_END => Some("END"), + TokenType::TK_ESCAPE => Some("ESCAPE"), + TokenType::TK_EXCEPT => Some("EXCEPT"), + TokenType::TK_EXCLUDE => Some("EXCLUDE"), + TokenType::TK_EXCLUSIVE => Some("EXCLUSIVE"), + TokenType::TK_EXISTS => Some("EXISTS"), + TokenType::TK_EXPLAIN => Some("EXPLAIN"), + TokenType::TK_FAIL => Some("FAIL"), + TokenType::TK_FILTER => Some("FILTER"), + TokenType::TK_FIRST => Some("FIRST"), + TokenType::TK_FOLLOWING => Some("FOLLOWING"), + TokenType::TK_FOR => Some("FOR"), + TokenType::TK_FOREIGN => Some("FOREIGN"), + TokenType::TK_FROM => Some("FROM"), + TokenType::TK_GENERATED => Some("GENERATED"), + TokenType::TK_GROUP => Some("GROUP"), + TokenType::TK_GROUPS => Some("GROUPS"), + TokenType::TK_HAVING => Some("HAVING"), + TokenType::TK_IF => Some("IF"), + TokenType::TK_IGNORE => Some("IGNORE"), + TokenType::TK_IMMEDIATE => Some("IMMEDIATE"), + TokenType::TK_IN => Some("IN"), + TokenType::TK_INDEX => Some("INDEX"), + TokenType::TK_INDEXED => Some("INDEXED"), + TokenType::TK_INITIALLY => Some("INITIALLY"), + TokenType::TK_INSERT => Some("INSERT"), + TokenType::TK_INSTEAD => Some("INSTEAD"), + TokenType::TK_INTERSECT => Some("INTERSECT"), + TokenType::TK_INTO => Some("INTO"), + TokenType::TK_IS => Some("IS"), + TokenType::TK_ISNULL => Some("ISNULL"), + TokenType::TK_JOIN => Some("JOIN"), + TokenType::TK_KEY => Some("KEY"), + TokenType::TK_LAST => Some("LAST"), + TokenType::TK_LIMIT => Some("LIMIT"), + TokenType::TK_MATCH => Some("MATCH"), + TokenType::TK_MATERIALIZED => Some("MATERIALIZED"), + TokenType::TK_NO => Some("NO"), + TokenType::TK_NOT => Some("NOT"), + TokenType::TK_NOTHING => Some("NOTHING"), + TokenType::TK_NOTNULL => Some("NOTNULL"), + TokenType::TK_NULL => Some("NULL"), + TokenType::TK_NULLS => Some("NULLS"), + TokenType::TK_OF => Some("OF"), + TokenType::TK_OFFSET => Some("OFFSET"), + TokenType::TK_ON => Some("ON"), + TokenType::TK_OR => Some("OR"), + TokenType::TK_ORDER => Some("ORDER"), + TokenType::TK_OTHERS => Some("OTHERS"), + TokenType::TK_OVER => Some("OVER"), + TokenType::TK_PARTITION => Some("PARTITION"), + TokenType::TK_PLAN => Some("PLAN"), + TokenType::TK_PRAGMA => Some("PRAGMA"), + TokenType::TK_PRECEDING => Some("PRECEDING"), + TokenType::TK_PRIMARY => Some("PRIMARY"), + TokenType::TK_QUERY => Some("QUERY"), + TokenType::TK_RAISE => Some("RAISE"), + TokenType::TK_RANGE => Some("RANGE"), + TokenType::TK_RECURSIVE => Some("RECURSIVE"), + TokenType::TK_REFERENCES => Some("REFERENCES"), + TokenType::TK_REINDEX => Some("REINDEX"), + TokenType::TK_RELEASE => Some("RELEASE"), + TokenType::TK_RENAME => Some("RENAME"), + TokenType::TK_REPLACE => Some("REPLACE"), + TokenType::TK_RETURNING => Some("RETURNING"), + TokenType::TK_RESTRICT => Some("RESTRICT"), + TokenType::TK_ROLLBACK => Some("ROLLBACK"), + TokenType::TK_ROW => Some("ROW"), + TokenType::TK_ROWS => Some("ROWS"), + TokenType::TK_SAVEPOINT => Some("SAVEPOINT"), + TokenType::TK_SELECT => Some("SELECT"), + TokenType::TK_SET => Some("SET"), + TokenType::TK_TABLE => Some("TABLE"), + TokenType::TK_TEMP => Some("TEMP"), // or TEMPORARY + TokenType::TK_TIES => Some("TIES"), + TokenType::TK_THEN => Some("THEN"), + TokenType::TK_TO => Some("TO"), + TokenType::TK_TRANSACTION => Some("TRANSACTION"), + TokenType::TK_TRIGGER => Some("TRIGGER"), + TokenType::TK_UNBOUNDED => Some("UNBOUNDED"), + TokenType::TK_UNION => Some("UNION"), + TokenType::TK_UNIQUE => Some("UNIQUE"), + TokenType::TK_UPDATE => Some("UPDATE"), + TokenType::TK_USING => Some("USING"), + TokenType::TK_VACUUM => Some("VACUUM"), + TokenType::TK_VALUES => Some("VALUES"), + TokenType::TK_VIEW => Some("VIEW"), + TokenType::TK_VIRTUAL => Some("VIRTUAL"), + TokenType::TK_WHEN => Some("WHEN"), + TokenType::TK_WHERE => Some("WHERE"), + TokenType::TK_WINDOW => Some("WINDOW"), + TokenType::TK_WITH => Some("WITH"), + TokenType::TK_WITHOUT => Some("WITHOUT"), + TokenType::TK_BITAND => Some("&"), + TokenType::TK_BITNOT => Some("~"), + TokenType::TK_BITOR => Some("|"), + TokenType::TK_COMMA => Some(","), + TokenType::TK_CONCAT => Some("||"), + TokenType::TK_DOT => Some("."), + TokenType::TK_EQ => Some("="), // or == + TokenType::TK_GT => Some(">"), + TokenType::TK_GE => Some(">="), + TokenType::TK_LP => Some("("), + TokenType::TK_LSHIFT => Some("<<"), + TokenType::TK_LE => Some("<="), + TokenType::TK_LT => Some("<"), + TokenType::TK_MINUS => Some("-"), + TokenType::TK_NE => Some("!="), // or <> + TokenType::TK_PLUS => Some("+"), + TokenType::TK_REM => Some("%"), + TokenType::TK_RP => Some(")"), + TokenType::TK_RSHIFT => Some(">>"), + TokenType::TK_SEMI => Some(";"), + TokenType::TK_SLASH => Some("/"), + TokenType::TK_STAR => Some("*"), + _ => None, + } } }