use std::fmt::Display; /// Token classes // Generated by lemon (parse.h). // Renamed manually. // To be keep in sync. #[non_exhaustive] #[allow(non_camel_case_types, missing_docs)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd)] #[repr(u16)] pub enum TokenType { TK_EOF = 0, TK_SEMI = 1, TK_EXPLAIN = 2, TK_QUERY = 3, TK_PLAN = 4, TK_BEGIN = 5, TK_TRANSACTION = 6, TK_DEFERRED = 7, TK_IMMEDIATE = 8, TK_EXCLUSIVE = 9, TK_COMMIT = 10, TK_END = 11, TK_ROLLBACK = 12, TK_SAVEPOINT = 13, TK_RELEASE = 14, TK_TO = 15, TK_TABLE = 16, TK_CREATE = 17, TK_IF = 18, TK_NOT = 19, TK_EXISTS = 20, TK_TEMP = 21, TK_LP = 22, TK_RP = 23, TK_AS = 24, TK_COMMA = 25, TK_WITHOUT = 26, TK_ABORT = 27, TK_ACTION = 28, TK_AFTER = 29, TK_ANALYZE = 30, TK_ASC = 31, TK_ATTACH = 32, TK_BEFORE = 33, TK_BY = 34, TK_CASCADE = 35, TK_CAST = 36, TK_CONFLICT = 37, TK_DATABASE = 38, TK_DESC = 39, TK_DETACH = 40, TK_EACH = 41, TK_FAIL = 42, TK_OR = 43, TK_AND = 44, TK_IS = 45, TK_ISNOT = 46, TK_MATCH = 47, TK_LIKE_KW = 48, TK_BETWEEN = 49, TK_IN = 50, TK_ISNULL = 51, TK_NOTNULL = 52, TK_NE = 53, TK_EQ = 54, TK_GT = 55, TK_LE = 56, TK_LT = 57, TK_GE = 58, TK_ESCAPE = 59, TK_ID = 60, TK_COLUMNKW = 61, TK_DO = 62, TK_FOR = 63, TK_IGNORE = 64, TK_INITIALLY = 65, TK_INSTEAD = 66, TK_NO = 67, TK_KEY = 68, TK_OF = 69, TK_OFFSET = 70, TK_PRAGMA = 71, TK_RAISE = 72, TK_RECURSIVE = 73, TK_REPLACE = 74, TK_RESTRICT = 75, TK_ROW = 76, TK_ROWS = 77, TK_TRIGGER = 78, TK_VACUUM = 79, TK_VIEW = 80, TK_VIRTUAL = 81, TK_WITH = 82, TK_NULLS = 83, TK_FIRST = 84, TK_LAST = 85, TK_CURRENT = 86, TK_FOLLOWING = 87, TK_PARTITION = 88, TK_PRECEDING = 89, TK_RANGE = 90, TK_UNBOUNDED = 91, TK_EXCLUDE = 92, TK_GROUPS = 93, TK_OTHERS = 94, TK_TIES = 95, TK_GENERATED = 96, TK_ALWAYS = 97, TK_MATERIALIZED = 98, TK_REINDEX = 99, TK_RENAME = 100, TK_CTIME_KW = 101, TK_ANY = 102, TK_BITAND = 103, TK_BITOR = 104, TK_LSHIFT = 105, TK_RSHIFT = 106, TK_PLUS = 107, TK_MINUS = 108, TK_STAR = 109, TK_SLASH = 110, TK_REM = 111, TK_CONCAT = 112, TK_PTR = 113, TK_COLLATE = 114, TK_BITNOT = 115, TK_ON = 116, TK_INDEXED = 117, TK_STRING = 118, TK_JOIN_KW = 119, TK_CONSTRAINT = 120, TK_DEFAULT = 121, TK_NULL = 122, TK_PRIMARY = 123, TK_UNIQUE = 124, TK_CHECK = 125, TK_REFERENCES = 126, TK_AUTOINCR = 127, TK_INSERT = 128, TK_DELETE = 129, TK_UPDATE = 130, TK_SET = 131, TK_DEFERRABLE = 132, TK_FOREIGN = 133, TK_DROP = 134, TK_UNION = 135, TK_ALL = 136, TK_EXCEPT = 137, TK_INTERSECT = 138, TK_SELECT = 139, TK_VALUES = 140, TK_DISTINCT = 141, TK_DOT = 142, TK_FROM = 143, TK_JOIN = 144, TK_USING = 145, TK_ORDER = 146, TK_GROUP = 147, TK_HAVING = 148, TK_LIMIT = 149, TK_WHERE = 150, TK_RETURNING = 151, TK_INTO = 152, TK_NOTHING = 153, TK_BLOB = 154, TK_FLOAT = 155, TK_INTEGER = 156, TK_VARIABLE = 157, TK_CASE = 158, TK_WHEN = 159, TK_THEN = 160, TK_ELSE = 161, TK_INDEX = 162, TK_ALTER = 163, TK_ADD = 164, TK_WINDOW = 165, TK_OVER = 166, TK_FILTER = 167, TK_ILLEGAL = 185, } impl Display for TokenType { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { use TokenType::*; let s = match self { TK_ABORT => "ABORT", TK_ACTION => "ACTION", TK_ADD => "ADD", TK_AFTER => "AFTER", TK_ALL => "ALL", TK_ALTER => "ALTER", TK_ANALYZE => "ANALYZE", TK_ALWAYS => "ALWAYS", TK_AND => "AND", TK_AS => "AS", TK_ASC => "ASC", TK_ATTACH => "ATTACH", TK_AUTOINCR => "AUTOINCREMENT", TK_BEFORE => "BEFORE", TK_BEGIN => "BEGIN", TK_BETWEEN => "BETWEEN", TK_BY => "BY", TK_CASCADE => "CASCADE", TK_CASE => "CASE", TK_CAST => "CAST", TK_CHECK => "CHECK", TK_COLLATE => "COLLATE", TK_COLUMNKW => "COLUMN", TK_COMMIT => "COMMIT", TK_CONFLICT => "CONFLICT", TK_CONSTRAINT => "CONSTRAINT", TK_CREATE => "CREATE", TK_CURRENT => "CURRENT", TK_DATABASE => "DATABASE", TK_DEFAULT => "DEFAULT", TK_DEFERRABLE => "DEFERRABLE", TK_DEFERRED => "DEFERRED", TK_DELETE => "DELETE", TK_DESC => "DESC", TK_DETACH => "DETACH", TK_DISTINCT => "DISTINCT", TK_DO => "DO", TK_DROP => "DROP", TK_EACH => "EACH", TK_ELSE => "ELSE", TK_END => "END", TK_ESCAPE => "ESCAPE", TK_EXCEPT => "EXCEPT", TK_EXCLUDE => "EXCLUDE", TK_EXCLUSIVE => "EXCLUSIVE", TK_EXISTS => "EXISTS", TK_EXPLAIN => "EXPLAIN", TK_FAIL => "FAIL", TK_FILTER => "FILTER", TK_FIRST => "FIRST", TK_FOLLOWING => "FOLLOWING", TK_FOR => "FOR", TK_FOREIGN => "FOREIGN", TK_FROM => "FROM", TK_GENERATED => "GENERATED", TK_GROUP => "GROUP", TK_GROUPS => "GROUPS", TK_HAVING => "HAVING", TK_IF => "IF", TK_IGNORE => "IGNORE", TK_IMMEDIATE => "IMMEDIATE", TK_IN => "IN", TK_INDEX => "INDEX", TK_INDEXED => "INDEXED", TK_INITIALLY => "INITIALLY", TK_INSERT => "INSERT", TK_INSTEAD => "INSTEAD", TK_INTERSECT => "INTERSECT", TK_INTO => "INTO", TK_IS => "IS", TK_ISNULL => "ISNULL", TK_JOIN => "JOIN", TK_KEY => "KEY", TK_LAST => "LAST", TK_LIMIT => "LIMIT", TK_MATCH => "MATCH", TK_MATERIALIZED => "MATERIALIZED", TK_NO => "NO", TK_NOT => "NOT", TK_NOTHING => "NOTHING", TK_NOTNULL => "NOTNULL", TK_NULL => "NULL", TK_NULLS => "NULLS", TK_OF => "OF", TK_OFFSET => "OFFSET", TK_ON => "ON", TK_OR => "OR", TK_ORDER => "ORDER", TK_OTHERS => "OTHERS", TK_OVER => "OVER", TK_PARTITION => "PARTITION", TK_PLAN => "PLAN", TK_PRAGMA => "PRAGMA", TK_PRECEDING => "PRECEDING", TK_PRIMARY => "PRIMARY", TK_QUERY => "QUERY", TK_RAISE => "RAISE", TK_RANGE => "RANGE", TK_RECURSIVE => "RECURSIVE", TK_REFERENCES => "REFERENCES", TK_REINDEX => "REINDEX", TK_RELEASE => "RELEASE", TK_RENAME => "RENAME", TK_REPLACE => "REPLACE", TK_RETURNING => "RETURNING", TK_RESTRICT => "RESTRICT", TK_ROLLBACK => "ROLLBACK", TK_ROW => "ROW", TK_ROWS => "ROWS", TK_SAVEPOINT => "SAVEPOINT", TK_SELECT => "SELECT", TK_SET => "SET", TK_TABLE => "TABLE", TK_TEMP => "TEMP", // or TEMPORARY TK_TIES => "TIES", TK_THEN => "THEN", TK_TO => "TO", TK_TRANSACTION => "TRANSACTION", TK_TRIGGER => "TRIGGER", TK_UNBOUNDED => "UNBOUNDED", TK_UNION => "UNION", TK_UNIQUE => "UNIQUE", TK_UPDATE => "UPDATE", TK_USING => "USING", TK_VACUUM => "VACUUM", TK_VALUES => "VALUES", TK_VIEW => "VIEW", TK_VIRTUAL => "VIRTUAL", TK_WHEN => "WHEN", TK_WHERE => "WHERE", TK_WINDOW => "WINDOW", TK_WITH => "WITH", TK_WITHOUT => "WITHOUT", TK_BITAND => "&", TK_BITNOT => "~", TK_BITOR => "|", TK_COMMA => ",", TK_CONCAT => "||", TK_DOT => ".", TK_EQ => "=", // or == TK_GT => ">", TK_GE => ">=", TK_LP => "(", TK_LSHIFT => "<<", TK_LE => "<=", TK_LT => "<", TK_MINUS => "-", TK_NE => "!=", // or <> TK_PLUS => "+", TK_REM => "%", TK_RP => ")", TK_RSHIFT => ">>", TK_SEMI => ";", TK_SLASH => "/", TK_STAR => "*", _ => "unknown", }; write!(f, "{s}") } } impl TokenType { /// if your parsing process expects next token to be TK_ID, remember to call this function !!! pub fn fallback_id_if_ok(self) -> Self { use TokenType::*; match self { TK_ABORT | TK_ACTION | TK_AFTER | TK_ANALYZE | TK_ASC | TK_ATTACH | TK_BEFORE | TK_BEGIN | TK_BY | TK_CASCADE | TK_CAST | TK_COLUMNKW | TK_CONFLICT | TK_DATABASE | TK_DEFERRED | TK_DESC | TK_DETACH | TK_DO | TK_EACH | TK_END | TK_EXCLUSIVE | TK_EXPLAIN | TK_FAIL | TK_FOR | TK_IGNORE | TK_IMMEDIATE | TK_INITIALLY | TK_INSTEAD | TK_LIKE_KW | TK_MATCH | TK_NO | TK_PLAN | TK_QUERY | TK_KEY | TK_OF | TK_OFFSET | TK_PRAGMA | TK_RAISE | TK_RECURSIVE | TK_RELEASE | TK_REPLACE | TK_RESTRICT | TK_ROW | TK_ROWS | TK_ROLLBACK | TK_SAVEPOINT | TK_TEMP | TK_TRIGGER | TK_VACUUM | TK_VIEW | TK_VIRTUAL | TK_WITH | TK_WITHOUT | TK_NULLS | TK_FIRST | TK_LAST | TK_EXCEPT | TK_INTERSECT | TK_UNION | TK_CURRENT | TK_FOLLOWING | TK_PARTITION | TK_PRECEDING | TK_RANGE | TK_UNBOUNDED | TK_EXCLUDE | TK_GROUPS | TK_OTHERS | TK_TIES | TK_GENERATED | TK_ALWAYS | TK_MATERIALIZED | TK_REINDEX | TK_RENAME | TK_CTIME_KW | TK_IF => TK_ID, _ => self, } } }