use super::tables::token;
#[derive(Clone, Copy, PartialEq, Eq, Debug)]
pub enum Category {
Unreserved,
ColumnName,
TypeFuncName,
Reserved,
}
#[derive(Debug)]
pub struct Keyword {
pub name: &'static str,
pub token: u16,
pub category: Category,
pub bare_label: bool,
}
use Category::*;
pub(crate) const LONGEST: usize = 17;
const BUCKETS: u32 = 256;
const SLOT_BITS: u32 = 10;
#[rustfmt::skip]
pub(crate) static KEYWORDS: [Keyword; 499] = [
Keyword { name: "abort", token: token::ABORT_P, category: Unreserved, bare_label: true },
Keyword { name: "absent", token: token::ABSENT, category: Unreserved, bare_label: true },
Keyword { name: "absolute", token: token::ABSOLUTE_P, category: Unreserved, bare_label: true },
Keyword { name: "access", token: token::ACCESS, category: Unreserved, bare_label: true },
Keyword { name: "action", token: token::ACTION, category: Unreserved, bare_label: true },
Keyword { name: "add", token: token::ADD_P, category: Unreserved, bare_label: true },
Keyword { name: "admin", token: token::ADMIN, category: Unreserved, bare_label: true },
Keyword { name: "after", token: token::AFTER, category: Unreserved, bare_label: true },
Keyword { name: "aggregate", token: token::AGGREGATE, category: Unreserved, bare_label: true },
Keyword { name: "all", token: token::ALL, category: Reserved, bare_label: true },
Keyword { name: "also", token: token::ALSO, category: Unreserved, bare_label: true },
Keyword { name: "alter", token: token::ALTER, category: Unreserved, bare_label: true },
Keyword { name: "always", token: token::ALWAYS, category: Unreserved, bare_label: true },
Keyword { name: "analyse", token: token::ANALYSE, category: Reserved, bare_label: true },
Keyword { name: "analyze", token: token::ANALYZE, category: Reserved, bare_label: true },
Keyword { name: "and", token: token::AND, category: Reserved, bare_label: true },
Keyword { name: "any", token: token::ANY, category: Reserved, bare_label: true },
Keyword { name: "array", token: token::ARRAY, category: Reserved, bare_label: false },
Keyword { name: "as", token: token::AS, category: Reserved, bare_label: false },
Keyword { name: "asc", token: token::ASC, category: Reserved, bare_label: true },
Keyword { name: "asensitive", token: token::ASENSITIVE, category: Unreserved, bare_label: true },
Keyword { name: "assertion", token: token::ASSERTION, category: Unreserved, bare_label: true },
Keyword { name: "assignment", token: token::ASSIGNMENT, category: Unreserved, bare_label: true },
Keyword { name: "asymmetric", token: token::ASYMMETRIC, category: Reserved, bare_label: true },
Keyword { name: "at", token: token::AT, category: Unreserved, bare_label: true },
Keyword { name: "atomic", token: token::ATOMIC, category: Unreserved, bare_label: true },
Keyword { name: "attach", token: token::ATTACH, category: Unreserved, bare_label: true },
Keyword { name: "attribute", token: token::ATTRIBUTE, category: Unreserved, bare_label: true },
Keyword { name: "authorization", token: token::AUTHORIZATION, category: TypeFuncName, bare_label: true },
Keyword { name: "backward", token: token::BACKWARD, category: Unreserved, bare_label: true },
Keyword { name: "before", token: token::BEFORE, category: Unreserved, bare_label: true },
Keyword { name: "begin", token: token::BEGIN_P, category: Unreserved, bare_label: true },
Keyword { name: "between", token: token::BETWEEN, category: ColumnName, bare_label: true },
Keyword { name: "bigint", token: token::BIGINT, category: ColumnName, bare_label: true },
Keyword { name: "binary", token: token::BINARY, category: TypeFuncName, bare_label: true },
Keyword { name: "bit", token: token::BIT, category: ColumnName, bare_label: true },
Keyword { name: "boolean", token: token::BOOLEAN_P, category: ColumnName, bare_label: true },
Keyword { name: "both", token: token::BOTH, category: Reserved, bare_label: true },
Keyword { name: "breadth", token: token::BREADTH, category: Unreserved, bare_label: true },
Keyword { name: "by", token: token::BY, category: Unreserved, bare_label: true },
Keyword { name: "cache", token: token::CACHE, category: Unreserved, bare_label: true },
Keyword { name: "call", token: token::CALL, category: Unreserved, bare_label: true },
Keyword { name: "called", token: token::CALLED, category: Unreserved, bare_label: true },
Keyword { name: "cascade", token: token::CASCADE, category: Unreserved, bare_label: true },
Keyword { name: "cascaded", token: token::CASCADED, category: Unreserved, bare_label: true },
Keyword { name: "case", token: token::CASE, category: Reserved, bare_label: true },
Keyword { name: "cast", token: token::CAST, category: Reserved, bare_label: true },
Keyword { name: "catalog", token: token::CATALOG_P, category: Unreserved, bare_label: true },
Keyword { name: "chain", token: token::CHAIN, category: Unreserved, bare_label: true },
Keyword { name: "char", token: token::CHAR_P, category: ColumnName, bare_label: false },
Keyword { name: "character", token: token::CHARACTER, category: ColumnName, bare_label: false },
Keyword { name: "characteristics", token: token::CHARACTERISTICS, category: Unreserved, bare_label: true },
Keyword { name: "check", token: token::CHECK, category: Reserved, bare_label: true },
Keyword { name: "checkpoint", token: token::CHECKPOINT, category: Unreserved, bare_label: true },
Keyword { name: "class", token: token::CLASS, category: Unreserved, bare_label: true },
Keyword { name: "close", token: token::CLOSE, category: Unreserved, bare_label: true },
Keyword { name: "cluster", token: token::CLUSTER, category: Unreserved, bare_label: true },
Keyword { name: "coalesce", token: token::COALESCE, category: ColumnName, bare_label: true },
Keyword { name: "collate", token: token::COLLATE, category: Reserved, bare_label: true },
Keyword { name: "collation", token: token::COLLATION, category: TypeFuncName, bare_label: true },
Keyword { name: "column", token: token::COLUMN, category: Reserved, bare_label: true },
Keyword { name: "columns", token: token::COLUMNS, category: Unreserved, bare_label: true },
Keyword { name: "comment", token: token::COMMENT, category: Unreserved, bare_label: true },
Keyword { name: "comments", token: token::COMMENTS, category: Unreserved, bare_label: true },
Keyword { name: "commit", token: token::COMMIT, category: Unreserved, bare_label: true },
Keyword { name: "committed", token: token::COMMITTED, category: Unreserved, bare_label: true },
Keyword { name: "compression", token: token::COMPRESSION, category: Unreserved, bare_label: true },
Keyword { name: "concurrently", token: token::CONCURRENTLY, category: TypeFuncName, bare_label: true },
Keyword { name: "conditional", token: token::CONDITIONAL, category: Unreserved, bare_label: true },
Keyword { name: "configuration", token: token::CONFIGURATION, category: Unreserved, bare_label: true },
Keyword { name: "conflict", token: token::CONFLICT, category: Unreserved, bare_label: true },
Keyword { name: "connection", token: token::CONNECTION, category: Unreserved, bare_label: true },
Keyword { name: "constraint", token: token::CONSTRAINT, category: Reserved, bare_label: true },
Keyword { name: "constraints", token: token::CONSTRAINTS, category: Unreserved, bare_label: true },
Keyword { name: "content", token: token::CONTENT_P, category: Unreserved, bare_label: true },
Keyword { name: "continue", token: token::CONTINUE_P, category: Unreserved, bare_label: true },
Keyword { name: "conversion", token: token::CONVERSION_P, category: Unreserved, bare_label: true },
Keyword { name: "copy", token: token::COPY, category: Unreserved, bare_label: true },
Keyword { name: "cost", token: token::COST, category: Unreserved, bare_label: true },
Keyword { name: "create", token: token::CREATE, category: Reserved, bare_label: false },
Keyword { name: "cross", token: token::CROSS, category: TypeFuncName, bare_label: true },
Keyword { name: "csv", token: token::CSV, category: Unreserved, bare_label: true },
Keyword { name: "cube", token: token::CUBE, category: Unreserved, bare_label: true },
Keyword { name: "current", token: token::CURRENT_P, category: Unreserved, bare_label: true },
Keyword { name: "current_catalog", token: token::CURRENT_CATALOG, category: Reserved, bare_label: true },
Keyword { name: "current_date", token: token::CURRENT_DATE, category: Reserved, bare_label: true },
Keyword { name: "current_role", token: token::CURRENT_ROLE, category: Reserved, bare_label: true },
Keyword { name: "current_schema", token: token::CURRENT_SCHEMA, category: TypeFuncName, bare_label: true },
Keyword { name: "current_time", token: token::CURRENT_TIME, category: Reserved, bare_label: true },
Keyword { name: "current_timestamp", token: token::CURRENT_TIMESTAMP, category: Reserved, bare_label: true },
Keyword { name: "current_user", token: token::CURRENT_USER, category: Reserved, bare_label: true },
Keyword { name: "cursor", token: token::CURSOR, category: Unreserved, bare_label: true },
Keyword { name: "cycle", token: token::CYCLE, category: Unreserved, bare_label: true },
Keyword { name: "data", token: token::DATA_P, category: Unreserved, bare_label: true },
Keyword { name: "database", token: token::DATABASE, category: Unreserved, bare_label: true },
Keyword { name: "day", token: token::DAY_P, category: Unreserved, bare_label: false },
Keyword { name: "deallocate", token: token::DEALLOCATE, category: Unreserved, bare_label: true },
Keyword { name: "dec", token: token::DEC, category: ColumnName, bare_label: true },
Keyword { name: "decimal", token: token::DECIMAL_P, category: ColumnName, bare_label: true },
Keyword { name: "declare", token: token::DECLARE, category: Unreserved, bare_label: true },
Keyword { name: "default", token: token::DEFAULT, category: Reserved, bare_label: true },
Keyword { name: "defaults", token: token::DEFAULTS, category: Unreserved, bare_label: true },
Keyword { name: "deferrable", token: token::DEFERRABLE, category: Reserved, bare_label: true },
Keyword { name: "deferred", token: token::DEFERRED, category: Unreserved, bare_label: true },
Keyword { name: "definer", token: token::DEFINER, category: Unreserved, bare_label: true },
Keyword { name: "delete", token: token::DELETE_P, category: Unreserved, bare_label: true },
Keyword { name: "delimiter", token: token::DELIMITER, category: Unreserved, bare_label: true },
Keyword { name: "delimiters", token: token::DELIMITERS, category: Unreserved, bare_label: true },
Keyword { name: "depends", token: token::DEPENDS, category: Unreserved, bare_label: true },
Keyword { name: "depth", token: token::DEPTH, category: Unreserved, bare_label: true },
Keyword { name: "desc", token: token::DESC, category: Reserved, bare_label: true },
Keyword { name: "detach", token: token::DETACH, category: Unreserved, bare_label: true },
Keyword { name: "dictionary", token: token::DICTIONARY, category: Unreserved, bare_label: true },
Keyword { name: "disable", token: token::DISABLE_P, category: Unreserved, bare_label: true },
Keyword { name: "discard", token: token::DISCARD, category: Unreserved, bare_label: true },
Keyword { name: "distinct", token: token::DISTINCT, category: Reserved, bare_label: true },
Keyword { name: "do", token: token::DO, category: Reserved, bare_label: true },
Keyword { name: "document", token: token::DOCUMENT_P, category: Unreserved, bare_label: true },
Keyword { name: "domain", token: token::DOMAIN_P, category: Unreserved, bare_label: true },
Keyword { name: "double", token: token::DOUBLE_P, category: Unreserved, bare_label: true },
Keyword { name: "drop", token: token::DROP, category: Unreserved, bare_label: true },
Keyword { name: "each", token: token::EACH, category: Unreserved, bare_label: true },
Keyword { name: "else", token: token::ELSE, category: Reserved, bare_label: true },
Keyword { name: "empty", token: token::EMPTY_P, category: Unreserved, bare_label: true },
Keyword { name: "enable", token: token::ENABLE_P, category: Unreserved, bare_label: true },
Keyword { name: "encoding", token: token::ENCODING, category: Unreserved, bare_label: true },
Keyword { name: "encrypted", token: token::ENCRYPTED, category: Unreserved, bare_label: true },
Keyword { name: "end", token: token::END_P, category: Reserved, bare_label: true },
Keyword { name: "enforced", token: token::ENFORCED, category: Unreserved, bare_label: true },
Keyword { name: "enum", token: token::ENUM_P, category: Unreserved, bare_label: true },
Keyword { name: "error", token: token::ERROR_P, category: Unreserved, bare_label: true },
Keyword { name: "escape", token: token::ESCAPE, category: Unreserved, bare_label: true },
Keyword { name: "event", token: token::EVENT, category: Unreserved, bare_label: true },
Keyword { name: "except", token: token::EXCEPT, category: Reserved, bare_label: false },
Keyword { name: "exclude", token: token::EXCLUDE, category: Unreserved, bare_label: true },
Keyword { name: "excluding", token: token::EXCLUDING, category: Unreserved, bare_label: true },
Keyword { name: "exclusive", token: token::EXCLUSIVE, category: Unreserved, bare_label: true },
Keyword { name: "execute", token: token::EXECUTE, category: Unreserved, bare_label: true },
Keyword { name: "exists", token: token::EXISTS, category: ColumnName, bare_label: true },
Keyword { name: "explain", token: token::EXPLAIN, category: Unreserved, bare_label: true },
Keyword { name: "expression", token: token::EXPRESSION, category: Unreserved, bare_label: true },
Keyword { name: "extension", token: token::EXTENSION, category: Unreserved, bare_label: true },
Keyword { name: "external", token: token::EXTERNAL, category: Unreserved, bare_label: true },
Keyword { name: "extract", token: token::EXTRACT, category: ColumnName, bare_label: true },
Keyword { name: "false", token: token::FALSE_P, category: Reserved, bare_label: true },
Keyword { name: "family", token: token::FAMILY, category: Unreserved, bare_label: true },
Keyword { name: "fetch", token: token::FETCH, category: Reserved, bare_label: false },
Keyword { name: "filter", token: token::FILTER, category: Unreserved, bare_label: false },
Keyword { name: "finalize", token: token::FINALIZE, category: Unreserved, bare_label: true },
Keyword { name: "first", token: token::FIRST_P, category: Unreserved, bare_label: true },
Keyword { name: "float", token: token::FLOAT_P, category: ColumnName, bare_label: true },
Keyword { name: "following", token: token::FOLLOWING, category: Unreserved, bare_label: true },
Keyword { name: "for", token: token::FOR, category: Reserved, bare_label: false },
Keyword { name: "force", token: token::FORCE, category: Unreserved, bare_label: true },
Keyword { name: "foreign", token: token::FOREIGN, category: Reserved, bare_label: true },
Keyword { name: "format", token: token::FORMAT, category: Unreserved, bare_label: true },
Keyword { name: "forward", token: token::FORWARD, category: Unreserved, bare_label: true },
Keyword { name: "freeze", token: token::FREEZE, category: TypeFuncName, bare_label: true },
Keyword { name: "from", token: token::FROM, category: Reserved, bare_label: false },
Keyword { name: "full", token: token::FULL, category: TypeFuncName, bare_label: true },
Keyword { name: "function", token: token::FUNCTION, category: Unreserved, bare_label: true },
Keyword { name: "functions", token: token::FUNCTIONS, category: Unreserved, bare_label: true },
Keyword { name: "generated", token: token::GENERATED, category: Unreserved, bare_label: true },
Keyword { name: "global", token: token::GLOBAL, category: Unreserved, bare_label: true },
Keyword { name: "grant", token: token::GRANT, category: Reserved, bare_label: false },
Keyword { name: "granted", token: token::GRANTED, category: Unreserved, bare_label: true },
Keyword { name: "greatest", token: token::GREATEST, category: ColumnName, bare_label: true },
Keyword { name: "group", token: token::GROUP_P, category: Reserved, bare_label: false },
Keyword { name: "grouping", token: token::GROUPING, category: ColumnName, bare_label: true },
Keyword { name: "groups", token: token::GROUPS, category: Unreserved, bare_label: true },
Keyword { name: "handler", token: token::HANDLER, category: Unreserved, bare_label: true },
Keyword { name: "having", token: token::HAVING, category: Reserved, bare_label: false },
Keyword { name: "header", token: token::HEADER_P, category: Unreserved, bare_label: true },
Keyword { name: "hold", token: token::HOLD, category: Unreserved, bare_label: true },
Keyword { name: "hour", token: token::HOUR_P, category: Unreserved, bare_label: false },
Keyword { name: "identity", token: token::IDENTITY_P, category: Unreserved, bare_label: true },
Keyword { name: "if", token: token::IF_P, category: Unreserved, bare_label: true },
Keyword { name: "ignore", token: token::IGNORE_P, category: Unreserved, bare_label: false },
Keyword { name: "ilike", token: token::ILIKE, category: TypeFuncName, bare_label: true },
Keyword { name: "immediate", token: token::IMMEDIATE, category: Unreserved, bare_label: true },
Keyword { name: "immutable", token: token::IMMUTABLE, category: Unreserved, bare_label: true },
Keyword { name: "implicit", token: token::IMPLICIT_P, category: Unreserved, bare_label: true },
Keyword { name: "import", token: token::IMPORT_P, category: Unreserved, bare_label: true },
Keyword { name: "in", token: token::IN_P, category: Reserved, bare_label: true },
Keyword { name: "include", token: token::INCLUDE, category: Unreserved, bare_label: true },
Keyword { name: "including", token: token::INCLUDING, category: Unreserved, bare_label: true },
Keyword { name: "increment", token: token::INCREMENT, category: Unreserved, bare_label: true },
Keyword { name: "indent", token: token::INDENT, category: Unreserved, bare_label: true },
Keyword { name: "index", token: token::INDEX, category: Unreserved, bare_label: true },
Keyword { name: "indexes", token: token::INDEXES, category: Unreserved, bare_label: true },
Keyword { name: "inherit", token: token::INHERIT, category: Unreserved, bare_label: true },
Keyword { name: "inherits", token: token::INHERITS, category: Unreserved, bare_label: true },
Keyword { name: "initially", token: token::INITIALLY, category: Reserved, bare_label: true },
Keyword { name: "inline", token: token::INLINE_P, category: Unreserved, bare_label: true },
Keyword { name: "inner", token: token::INNER_P, category: TypeFuncName, bare_label: true },
Keyword { name: "inout", token: token::INOUT, category: ColumnName, bare_label: true },
Keyword { name: "input", token: token::INPUT_P, category: Unreserved, bare_label: true },
Keyword { name: "insensitive", token: token::INSENSITIVE, category: Unreserved, bare_label: true },
Keyword { name: "insert", token: token::INSERT, category: Unreserved, bare_label: true },
Keyword { name: "instead", token: token::INSTEAD, category: Unreserved, bare_label: true },
Keyword { name: "int", token: token::INT_P, category: ColumnName, bare_label: true },
Keyword { name: "integer", token: token::INTEGER, category: ColumnName, bare_label: true },
Keyword { name: "intersect", token: token::INTERSECT, category: Reserved, bare_label: false },
Keyword { name: "interval", token: token::INTERVAL, category: ColumnName, bare_label: true },
Keyword { name: "into", token: token::INTO, category: Reserved, bare_label: false },
Keyword { name: "invoker", token: token::INVOKER, category: Unreserved, bare_label: true },
Keyword { name: "is", token: token::IS, category: TypeFuncName, bare_label: true },
Keyword { name: "isnull", token: token::ISNULL, category: TypeFuncName, bare_label: false },
Keyword { name: "isolation", token: token::ISOLATION, category: Unreserved, bare_label: true },
Keyword { name: "join", token: token::JOIN, category: TypeFuncName, bare_label: true },
Keyword { name: "json", token: token::JSON, category: ColumnName, bare_label: true },
Keyword { name: "json_array", token: token::JSON_ARRAY, category: ColumnName, bare_label: true },
Keyword { name: "json_arrayagg", token: token::JSON_ARRAYAGG, category: ColumnName, bare_label: true },
Keyword { name: "json_exists", token: token::JSON_EXISTS, category: ColumnName, bare_label: true },
Keyword { name: "json_object", token: token::JSON_OBJECT, category: ColumnName, bare_label: true },
Keyword { name: "json_objectagg", token: token::JSON_OBJECTAGG, category: ColumnName, bare_label: true },
Keyword { name: "json_query", token: token::JSON_QUERY, category: ColumnName, bare_label: true },
Keyword { name: "json_scalar", token: token::JSON_SCALAR, category: ColumnName, bare_label: true },
Keyword { name: "json_serialize", token: token::JSON_SERIALIZE, category: ColumnName, bare_label: true },
Keyword { name: "json_table", token: token::JSON_TABLE, category: ColumnName, bare_label: true },
Keyword { name: "json_value", token: token::JSON_VALUE, category: ColumnName, bare_label: true },
Keyword { name: "keep", token: token::KEEP, category: Unreserved, bare_label: true },
Keyword { name: "key", token: token::KEY, category: Unreserved, bare_label: true },
Keyword { name: "keys", token: token::KEYS, category: Unreserved, bare_label: true },
Keyword { name: "label", token: token::LABEL, category: Unreserved, bare_label: true },
Keyword { name: "language", token: token::LANGUAGE, category: Unreserved, bare_label: true },
Keyword { name: "large", token: token::LARGE_P, category: Unreserved, bare_label: true },
Keyword { name: "last", token: token::LAST_P, category: Unreserved, bare_label: true },
Keyword { name: "lateral", token: token::LATERAL_P, category: Reserved, bare_label: true },
Keyword { name: "leading", token: token::LEADING, category: Reserved, bare_label: true },
Keyword { name: "leakproof", token: token::LEAKPROOF, category: Unreserved, bare_label: true },
Keyword { name: "least", token: token::LEAST, category: ColumnName, bare_label: true },
Keyword { name: "left", token: token::LEFT, category: TypeFuncName, bare_label: true },
Keyword { name: "level", token: token::LEVEL, category: Unreserved, bare_label: true },
Keyword { name: "like", token: token::LIKE, category: TypeFuncName, bare_label: true },
Keyword { name: "limit", token: token::LIMIT, category: Reserved, bare_label: false },
Keyword { name: "listen", token: token::LISTEN, category: Unreserved, bare_label: true },
Keyword { name: "load", token: token::LOAD, category: Unreserved, bare_label: true },
Keyword { name: "local", token: token::LOCAL, category: Unreserved, bare_label: true },
Keyword { name: "localtime", token: token::LOCALTIME, category: Reserved, bare_label: true },
Keyword { name: "localtimestamp", token: token::LOCALTIMESTAMP, category: Reserved, bare_label: true },
Keyword { name: "location", token: token::LOCATION, category: Unreserved, bare_label: true },
Keyword { name: "lock", token: token::LOCK_P, category: Unreserved, bare_label: true },
Keyword { name: "locked", token: token::LOCKED, category: Unreserved, bare_label: true },
Keyword { name: "logged", token: token::LOGGED, category: Unreserved, bare_label: true },
Keyword { name: "lsn", token: token::LSN_P, category: Unreserved, bare_label: true },
Keyword { name: "mapping", token: token::MAPPING, category: Unreserved, bare_label: true },
Keyword { name: "match", token: token::MATCH, category: Unreserved, bare_label: true },
Keyword { name: "matched", token: token::MATCHED, category: Unreserved, bare_label: true },
Keyword { name: "materialized", token: token::MATERIALIZED, category: Unreserved, bare_label: true },
Keyword { name: "maxvalue", token: token::MAXVALUE, category: Unreserved, bare_label: true },
Keyword { name: "merge", token: token::MERGE, category: Unreserved, bare_label: true },
Keyword { name: "merge_action", token: token::MERGE_ACTION, category: ColumnName, bare_label: true },
Keyword { name: "method", token: token::METHOD, category: Unreserved, bare_label: true },
Keyword { name: "minute", token: token::MINUTE_P, category: Unreserved, bare_label: false },
Keyword { name: "minvalue", token: token::MINVALUE, category: Unreserved, bare_label: true },
Keyword { name: "mode", token: token::MODE, category: Unreserved, bare_label: true },
Keyword { name: "month", token: token::MONTH_P, category: Unreserved, bare_label: false },
Keyword { name: "move", token: token::MOVE, category: Unreserved, bare_label: true },
Keyword { name: "name", token: token::NAME_P, category: Unreserved, bare_label: true },
Keyword { name: "names", token: token::NAMES, category: Unreserved, bare_label: true },
Keyword { name: "national", token: token::NATIONAL, category: ColumnName, bare_label: true },
Keyword { name: "natural", token: token::NATURAL, category: TypeFuncName, bare_label: true },
Keyword { name: "nchar", token: token::NCHAR, category: ColumnName, bare_label: true },
Keyword { name: "nested", token: token::NESTED, category: Unreserved, bare_label: true },
Keyword { name: "new", token: token::NEW, category: Unreserved, bare_label: true },
Keyword { name: "next", token: token::NEXT, category: Unreserved, bare_label: true },
Keyword { name: "nfc", token: token::NFC, category: Unreserved, bare_label: true },
Keyword { name: "nfd", token: token::NFD, category: Unreserved, bare_label: true },
Keyword { name: "nfkc", token: token::NFKC, category: Unreserved, bare_label: true },
Keyword { name: "nfkd", token: token::NFKD, category: Unreserved, bare_label: true },
Keyword { name: "no", token: token::NO, category: Unreserved, bare_label: true },
Keyword { name: "none", token: token::NONE, category: ColumnName, bare_label: true },
Keyword { name: "normalize", token: token::NORMALIZE, category: ColumnName, bare_label: true },
Keyword { name: "normalized", token: token::NORMALIZED, category: Unreserved, bare_label: true },
Keyword { name: "not", token: token::NOT, category: Reserved, bare_label: true },
Keyword { name: "nothing", token: token::NOTHING, category: Unreserved, bare_label: true },
Keyword { name: "notify", token: token::NOTIFY, category: Unreserved, bare_label: true },
Keyword { name: "notnull", token: token::NOTNULL, category: TypeFuncName, bare_label: false },
Keyword { name: "nowait", token: token::NOWAIT, category: Unreserved, bare_label: true },
Keyword { name: "null", token: token::NULL_P, category: Reserved, bare_label: true },
Keyword { name: "nullif", token: token::NULLIF, category: ColumnName, bare_label: true },
Keyword { name: "nulls", token: token::NULLS_P, category: Unreserved, bare_label: true },
Keyword { name: "numeric", token: token::NUMERIC, category: ColumnName, bare_label: true },
Keyword { name: "object", token: token::OBJECT_P, category: Unreserved, bare_label: true },
Keyword { name: "objects", token: token::OBJECTS_P, category: Unreserved, bare_label: true },
Keyword { name: "of", token: token::OF, category: Unreserved, bare_label: true },
Keyword { name: "off", token: token::OFF, category: Unreserved, bare_label: true },
Keyword { name: "offset", token: token::OFFSET, category: Reserved, bare_label: false },
Keyword { name: "oids", token: token::OIDS, category: Unreserved, bare_label: true },
Keyword { name: "old", token: token::OLD, category: Unreserved, bare_label: true },
Keyword { name: "omit", token: token::OMIT, category: Unreserved, bare_label: true },
Keyword { name: "on", token: token::ON, category: Reserved, bare_label: false },
Keyword { name: "only", token: token::ONLY, category: Reserved, bare_label: true },
Keyword { name: "operator", token: token::OPERATOR, category: Unreserved, bare_label: true },
Keyword { name: "option", token: token::OPTION, category: Unreserved, bare_label: true },
Keyword { name: "options", token: token::OPTIONS, category: Unreserved, bare_label: true },
Keyword { name: "or", token: token::OR, category: Reserved, bare_label: true },
Keyword { name: "order", token: token::ORDER, category: Reserved, bare_label: false },
Keyword { name: "ordinality", token: token::ORDINALITY, category: Unreserved, bare_label: true },
Keyword { name: "others", token: token::OTHERS, category: Unreserved, bare_label: true },
Keyword { name: "out", token: token::OUT_P, category: ColumnName, bare_label: true },
Keyword { name: "outer", token: token::OUTER_P, category: TypeFuncName, bare_label: true },
Keyword { name: "over", token: token::OVER, category: Unreserved, bare_label: false },
Keyword { name: "overlaps", token: token::OVERLAPS, category: TypeFuncName, bare_label: false },
Keyword { name: "overlay", token: token::OVERLAY, category: ColumnName, bare_label: true },
Keyword { name: "overriding", token: token::OVERRIDING, category: Unreserved, bare_label: true },
Keyword { name: "owned", token: token::OWNED, category: Unreserved, bare_label: true },
Keyword { name: "owner", token: token::OWNER, category: Unreserved, bare_label: true },
Keyword { name: "parallel", token: token::PARALLEL, category: Unreserved, bare_label: true },
Keyword { name: "parameter", token: token::PARAMETER, category: Unreserved, bare_label: true },
Keyword { name: "parser", token: token::PARSER, category: Unreserved, bare_label: true },
Keyword { name: "partial", token: token::PARTIAL, category: Unreserved, bare_label: true },
Keyword { name: "partition", token: token::PARTITION, category: Unreserved, bare_label: true },
Keyword { name: "passing", token: token::PASSING, category: Unreserved, bare_label: true },
Keyword { name: "password", token: token::PASSWORD, category: Unreserved, bare_label: true },
Keyword { name: "path", token: token::PATH, category: Unreserved, bare_label: true },
Keyword { name: "period", token: token::PERIOD, category: Unreserved, bare_label: true },
Keyword { name: "placing", token: token::PLACING, category: Reserved, bare_label: true },
Keyword { name: "plan", token: token::PLAN, category: Unreserved, bare_label: true },
Keyword { name: "plans", token: token::PLANS, category: Unreserved, bare_label: true },
Keyword { name: "policy", token: token::POLICY, category: Unreserved, bare_label: true },
Keyword { name: "position", token: token::POSITION, category: ColumnName, bare_label: true },
Keyword { name: "preceding", token: token::PRECEDING, category: Unreserved, bare_label: true },
Keyword { name: "precision", token: token::PRECISION, category: ColumnName, bare_label: false },
Keyword { name: "prepare", token: token::PREPARE, category: Unreserved, bare_label: true },
Keyword { name: "prepared", token: token::PREPARED, category: Unreserved, bare_label: true },
Keyword { name: "preserve", token: token::PRESERVE, category: Unreserved, bare_label: true },
Keyword { name: "primary", token: token::PRIMARY, category: Reserved, bare_label: true },
Keyword { name: "prior", token: token::PRIOR, category: Unreserved, bare_label: true },
Keyword { name: "privileges", token: token::PRIVILEGES, category: Unreserved, bare_label: true },
Keyword { name: "procedural", token: token::PROCEDURAL, category: Unreserved, bare_label: true },
Keyword { name: "procedure", token: token::PROCEDURE, category: Unreserved, bare_label: true },
Keyword { name: "procedures", token: token::PROCEDURES, category: Unreserved, bare_label: true },
Keyword { name: "program", token: token::PROGRAM, category: Unreserved, bare_label: true },
Keyword { name: "publication", token: token::PUBLICATION, category: Unreserved, bare_label: true },
Keyword { name: "quote", token: token::QUOTE, category: Unreserved, bare_label: true },
Keyword { name: "quotes", token: token::QUOTES, category: Unreserved, bare_label: true },
Keyword { name: "range", token: token::RANGE, category: Unreserved, bare_label: true },
Keyword { name: "read", token: token::READ, category: Unreserved, bare_label: true },
Keyword { name: "real", token: token::REAL, category: ColumnName, bare_label: true },
Keyword { name: "reassign", token: token::REASSIGN, category: Unreserved, bare_label: true },
Keyword { name: "recursive", token: token::RECURSIVE, category: Unreserved, bare_label: true },
Keyword { name: "ref", token: token::REF_P, category: Unreserved, bare_label: true },
Keyword { name: "references", token: token::REFERENCES, category: Reserved, bare_label: true },
Keyword { name: "referencing", token: token::REFERENCING, category: Unreserved, bare_label: true },
Keyword { name: "refresh", token: token::REFRESH, category: Unreserved, bare_label: true },
Keyword { name: "reindex", token: token::REINDEX, category: Unreserved, bare_label: true },
Keyword { name: "relative", token: token::RELATIVE_P, category: Unreserved, bare_label: true },
Keyword { name: "release", token: token::RELEASE, category: Unreserved, bare_label: true },
Keyword { name: "rename", token: token::RENAME, category: Unreserved, bare_label: true },
Keyword { name: "repack", token: token::REPACK, category: Unreserved, bare_label: true },
Keyword { name: "repeatable", token: token::REPEATABLE, category: Unreserved, bare_label: true },
Keyword { name: "replace", token: token::REPLACE, category: Unreserved, bare_label: true },
Keyword { name: "replica", token: token::REPLICA, category: Unreserved, bare_label: true },
Keyword { name: "reset", token: token::RESET, category: Unreserved, bare_label: true },
Keyword { name: "respect", token: token::RESPECT_P, category: Unreserved, bare_label: false },
Keyword { name: "restart", token: token::RESTART, category: Unreserved, bare_label: true },
Keyword { name: "restrict", token: token::RESTRICT, category: Unreserved, bare_label: true },
Keyword { name: "return", token: token::RETURN, category: Unreserved, bare_label: true },
Keyword { name: "returning", token: token::RETURNING, category: Reserved, bare_label: false },
Keyword { name: "returns", token: token::RETURNS, category: Unreserved, bare_label: true },
Keyword { name: "revoke", token: token::REVOKE, category: Unreserved, bare_label: true },
Keyword { name: "right", token: token::RIGHT, category: TypeFuncName, bare_label: true },
Keyword { name: "role", token: token::ROLE, category: Unreserved, bare_label: true },
Keyword { name: "rollback", token: token::ROLLBACK, category: Unreserved, bare_label: true },
Keyword { name: "rollup", token: token::ROLLUP, category: Unreserved, bare_label: true },
Keyword { name: "routine", token: token::ROUTINE, category: Unreserved, bare_label: true },
Keyword { name: "routines", token: token::ROUTINES, category: Unreserved, bare_label: true },
Keyword { name: "row", token: token::ROW, category: ColumnName, bare_label: true },
Keyword { name: "rows", token: token::ROWS, category: Unreserved, bare_label: true },
Keyword { name: "rule", token: token::RULE, category: Unreserved, bare_label: true },
Keyword { name: "savepoint", token: token::SAVEPOINT, category: Unreserved, bare_label: true },
Keyword { name: "scalar", token: token::SCALAR, category: Unreserved, bare_label: true },
Keyword { name: "schema", token: token::SCHEMA, category: Unreserved, bare_label: true },
Keyword { name: "schemas", token: token::SCHEMAS, category: Unreserved, bare_label: true },
Keyword { name: "scroll", token: token::SCROLL, category: Unreserved, bare_label: true },
Keyword { name: "search", token: token::SEARCH, category: Unreserved, bare_label: true },
Keyword { name: "second", token: token::SECOND_P, category: Unreserved, bare_label: false },
Keyword { name: "security", token: token::SECURITY, category: Unreserved, bare_label: true },
Keyword { name: "select", token: token::SELECT, category: Reserved, bare_label: true },
Keyword { name: "sequence", token: token::SEQUENCE, category: Unreserved, bare_label: true },
Keyword { name: "sequences", token: token::SEQUENCES, category: Unreserved, bare_label: true },
Keyword { name: "serializable", token: token::SERIALIZABLE, category: Unreserved, bare_label: true },
Keyword { name: "server", token: token::SERVER, category: Unreserved, bare_label: true },
Keyword { name: "session", token: token::SESSION, category: Unreserved, bare_label: true },
Keyword { name: "session_user", token: token::SESSION_USER, category: Reserved, bare_label: true },
Keyword { name: "set", token: token::SET, category: Unreserved, bare_label: true },
Keyword { name: "setof", token: token::SETOF, category: ColumnName, bare_label: true },
Keyword { name: "sets", token: token::SETS, category: Unreserved, bare_label: true },
Keyword { name: "share", token: token::SHARE, category: Unreserved, bare_label: true },
Keyword { name: "show", token: token::SHOW, category: Unreserved, bare_label: true },
Keyword { name: "similar", token: token::SIMILAR, category: TypeFuncName, bare_label: true },
Keyword { name: "simple", token: token::SIMPLE, category: Unreserved, bare_label: true },
Keyword { name: "skip", token: token::SKIP, category: Unreserved, bare_label: true },
Keyword { name: "smallint", token: token::SMALLINT, category: ColumnName, bare_label: true },
Keyword { name: "snapshot", token: token::SNAPSHOT, category: Unreserved, bare_label: true },
Keyword { name: "some", token: token::SOME, category: Reserved, bare_label: true },
Keyword { name: "source", token: token::SOURCE, category: Unreserved, bare_label: true },
Keyword { name: "sql", token: token::SQL_P, category: Unreserved, bare_label: true },
Keyword { name: "stable", token: token::STABLE, category: Unreserved, bare_label: true },
Keyword { name: "standalone", token: token::STANDALONE_P, category: Unreserved, bare_label: true },
Keyword { name: "start", token: token::START, category: Unreserved, bare_label: true },
Keyword { name: "statement", token: token::STATEMENT, category: Unreserved, bare_label: true },
Keyword { name: "statistics", token: token::STATISTICS, category: Unreserved, bare_label: true },
Keyword { name: "stdin", token: token::STDIN, category: Unreserved, bare_label: true },
Keyword { name: "stdout", token: token::STDOUT, category: Unreserved, bare_label: true },
Keyword { name: "storage", token: token::STORAGE, category: Unreserved, bare_label: true },
Keyword { name: "stored", token: token::STORED, category: Unreserved, bare_label: true },
Keyword { name: "strict", token: token::STRICT_P, category: Unreserved, bare_label: true },
Keyword { name: "string", token: token::STRING_P, category: Unreserved, bare_label: true },
Keyword { name: "strip", token: token::STRIP_P, category: Unreserved, bare_label: true },
Keyword { name: "subscription", token: token::SUBSCRIPTION, category: Unreserved, bare_label: true },
Keyword { name: "substring", token: token::SUBSTRING, category: ColumnName, bare_label: true },
Keyword { name: "support", token: token::SUPPORT, category: Unreserved, bare_label: true },
Keyword { name: "symmetric", token: token::SYMMETRIC, category: Reserved, bare_label: true },
Keyword { name: "sysid", token: token::SYSID, category: Unreserved, bare_label: true },
Keyword { name: "system", token: token::SYSTEM_P, category: Unreserved, bare_label: true },
Keyword { name: "system_user", token: token::SYSTEM_USER, category: Reserved, bare_label: true },
Keyword { name: "table", token: token::TABLE, category: Reserved, bare_label: true },
Keyword { name: "tables", token: token::TABLES, category: Unreserved, bare_label: true },
Keyword { name: "tablesample", token: token::TABLESAMPLE, category: TypeFuncName, bare_label: true },
Keyword { name: "tablespace", token: token::TABLESPACE, category: Unreserved, bare_label: true },
Keyword { name: "target", token: token::TARGET, category: Unreserved, bare_label: true },
Keyword { name: "temp", token: token::TEMP, category: Unreserved, bare_label: true },
Keyword { name: "template", token: token::TEMPLATE, category: Unreserved, bare_label: true },
Keyword { name: "temporary", token: token::TEMPORARY, category: Unreserved, bare_label: true },
Keyword { name: "text", token: token::TEXT_P, category: Unreserved, bare_label: true },
Keyword { name: "then", token: token::THEN, category: Reserved, bare_label: true },
Keyword { name: "ties", token: token::TIES, category: Unreserved, bare_label: true },
Keyword { name: "time", token: token::TIME, category: ColumnName, bare_label: true },
Keyword { name: "timestamp", token: token::TIMESTAMP, category: ColumnName, bare_label: true },
Keyword { name: "to", token: token::TO, category: Reserved, bare_label: false },
Keyword { name: "trailing", token: token::TRAILING, category: Reserved, bare_label: true },
Keyword { name: "transaction", token: token::TRANSACTION, category: Unreserved, bare_label: true },
Keyword { name: "transform", token: token::TRANSFORM, category: Unreserved, bare_label: true },
Keyword { name: "treat", token: token::TREAT, category: ColumnName, bare_label: true },
Keyword { name: "trigger", token: token::TRIGGER, category: Unreserved, bare_label: true },
Keyword { name: "trim", token: token::TRIM, category: ColumnName, bare_label: true },
Keyword { name: "true", token: token::TRUE_P, category: Reserved, bare_label: true },
Keyword { name: "truncate", token: token::TRUNCATE, category: Unreserved, bare_label: true },
Keyword { name: "trusted", token: token::TRUSTED, category: Unreserved, bare_label: true },
Keyword { name: "type", token: token::TYPE_P, category: Unreserved, bare_label: true },
Keyword { name: "types", token: token::TYPES_P, category: Unreserved, bare_label: true },
Keyword { name: "uescape", token: token::UESCAPE, category: Unreserved, bare_label: true },
Keyword { name: "unbounded", token: token::UNBOUNDED, category: Unreserved, bare_label: true },
Keyword { name: "uncommitted", token: token::UNCOMMITTED, category: Unreserved, bare_label: true },
Keyword { name: "unconditional", token: token::UNCONDITIONAL, category: Unreserved, bare_label: true },
Keyword { name: "unencrypted", token: token::UNENCRYPTED, category: Unreserved, bare_label: true },
Keyword { name: "union", token: token::UNION, category: Reserved, bare_label: false },
Keyword { name: "unique", token: token::UNIQUE, category: Reserved, bare_label: true },
Keyword { name: "unknown", token: token::UNKNOWN, category: Unreserved, bare_label: true },
Keyword { name: "unlisten", token: token::UNLISTEN, category: Unreserved, bare_label: true },
Keyword { name: "unlogged", token: token::UNLOGGED, category: Unreserved, bare_label: true },
Keyword { name: "until", token: token::UNTIL, category: Unreserved, bare_label: true },
Keyword { name: "update", token: token::UPDATE, category: Unreserved, bare_label: true },
Keyword { name: "user", token: token::USER, category: Reserved, bare_label: true },
Keyword { name: "using", token: token::USING, category: Reserved, bare_label: true },
Keyword { name: "vacuum", token: token::VACUUM, category: Unreserved, bare_label: true },
Keyword { name: "valid", token: token::VALID, category: Unreserved, bare_label: true },
Keyword { name: "validate", token: token::VALIDATE, category: Unreserved, bare_label: true },
Keyword { name: "validator", token: token::VALIDATOR, category: Unreserved, bare_label: true },
Keyword { name: "value", token: token::VALUE_P, category: Unreserved, bare_label: true },
Keyword { name: "values", token: token::VALUES, category: ColumnName, bare_label: true },
Keyword { name: "varchar", token: token::VARCHAR, category: ColumnName, bare_label: true },
Keyword { name: "variadic", token: token::VARIADIC, category: Reserved, bare_label: true },
Keyword { name: "varying", token: token::VARYING, category: Unreserved, bare_label: false },
Keyword { name: "verbose", token: token::VERBOSE, category: TypeFuncName, bare_label: true },
Keyword { name: "version", token: token::VERSION_P, category: Unreserved, bare_label: true },
Keyword { name: "view", token: token::VIEW, category: Unreserved, bare_label: true },
Keyword { name: "views", token: token::VIEWS, category: Unreserved, bare_label: true },
Keyword { name: "virtual", token: token::VIRTUAL, category: Unreserved, bare_label: true },
Keyword { name: "volatile", token: token::VOLATILE, category: Unreserved, bare_label: true },
Keyword { name: "wait", token: token::WAIT, category: Unreserved, bare_label: true },
Keyword { name: "when", token: token::WHEN, category: Reserved, bare_label: true },
Keyword { name: "where", token: token::WHERE, category: Reserved, bare_label: false },
Keyword { name: "whitespace", token: token::WHITESPACE_P, category: Unreserved, bare_label: true },
Keyword { name: "window", token: token::WINDOW, category: Reserved, bare_label: false },
Keyword { name: "with", token: token::WITH, category: Reserved, bare_label: false },
Keyword { name: "within", token: token::WITHIN, category: Unreserved, bare_label: false },
Keyword { name: "without", token: token::WITHOUT, category: Unreserved, bare_label: false },
Keyword { name: "work", token: token::WORK, category: Unreserved, bare_label: true },
Keyword { name: "wrapper", token: token::WRAPPER, category: Unreserved, bare_label: true },
Keyword { name: "write", token: token::WRITE, category: Unreserved, bare_label: true },
Keyword { name: "xml", token: token::XML_P, category: Unreserved, bare_label: true },
Keyword { name: "xmlattributes", token: token::XMLATTRIBUTES, category: ColumnName, bare_label: true },
Keyword { name: "xmlconcat", token: token::XMLCONCAT, category: ColumnName, bare_label: true },
Keyword { name: "xmlelement", token: token::XMLELEMENT, category: ColumnName, bare_label: true },
Keyword { name: "xmlexists", token: token::XMLEXISTS, category: ColumnName, bare_label: true },
Keyword { name: "xmlforest", token: token::XMLFOREST, category: ColumnName, bare_label: true },
Keyword { name: "xmlnamespaces", token: token::XMLNAMESPACES, category: ColumnName, bare_label: true },
Keyword { name: "xmlparse", token: token::XMLPARSE, category: ColumnName, bare_label: true },
Keyword { name: "xmlpi", token: token::XMLPI, category: ColumnName, bare_label: true },
Keyword { name: "xmlroot", token: token::XMLROOT, category: ColumnName, bare_label: true },
Keyword { name: "xmlserialize", token: token::XMLSERIALIZE, category: ColumnName, bare_label: true },
Keyword { name: "xmltable", token: token::XMLTABLE, category: ColumnName, bare_label: true },
Keyword { name: "year", token: token::YEAR_P, category: Unreserved, bare_label: false },
Keyword { name: "yes", token: token::YES_P, category: Unreserved, bare_label: true },
Keyword { name: "zone", token: token::ZONE, category: Unreserved, bare_label: true },
];
#[rustfmt::skip]
pub(crate) static DISPLACEMENT: [u16; 256] = [
1, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 3, 0, 0, 0, 0,
1, 1, 0, 0, 0, 2, 1, 2, 0, 3, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 2, 0, 3, 0, 0,
1, 2, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 2, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0,
0, 2, 0, 4, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0,
3, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0, 1, 0, 1, 0, 1, 0, 1, 2,
0, 0, 0, 0, 3, 0, 2, 0, 0, 4, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 3, 0, 0, 1, 0, 5, 2, 3, 0, 0, 0, 0,
0, 0, 1, 1, 4, 0, 1, 0, 2, 7, 1, 1, 0, 5, 1, 0,
1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 4, 0, 0, 5, 0, 1, 0, 6, 0, 4, 9, 1, 1, 0, 0,
5, 0, 0, 4, 1, 1, 0, 0, 3, 2, 1, 1, 5, 0, 3, 0,
0, 1, 2, 0, 2, 0, 2, 0, 1, 4, 2, 0, 0, 3, 2, 3,
];
#[rustfmt::skip]
pub(crate) static SLOTS: [u16; 1024] = [
367, 0, 418, 259, 23, 304, 0, 272, 11, 0, 0, 60, 0, 0, 202, 246,
0, 414, 0, 0, 0, 0, 0, 0, 63, 19, 0, 420, 0, 0, 0, 0,
495, 30, 42, 0, 0, 306, 0, 0, 156, 236, 0, 382, 476, 0, 0, 0,
0, 0, 157, 0, 0, 228, 77, 0, 0, 325, 0, 208, 21, 0, 222, 69,
0, 0, 494, 0, 0, 399, 102, 0, 0, 492, 0, 279, 392, 0, 61, 0,
0, 244, 0, 0, 0, 242, 0, 25, 0, 149, 0, 0, 451, 0, 0, 493,
0, 0, 217, 53, 371, 0, 473, 57, 0, 0, 0, 480, 0, 195, 158, 0,
0, 270, 0, 121, 72, 0, 0, 0, 375, 487, 0, 179, 0, 169, 0, 245,
0, 0, 0, 249, 0, 27, 481, 0, 296, 341, 0, 0, 0, 0, 458, 478,
426, 445, 166, 116, 0, 0, 0, 0, 0, 123, 159, 346, 0, 142, 396, 363,
0, 0, 423, 329, 460, 0, 477, 0, 361, 0, 0, 0, 302, 247, 0, 0,
230, 0, 0, 0, 138, 235, 15, 0, 0, 0, 206, 405, 4, 252, 449, 275,
194, 92, 0, 0, 207, 415, 390, 0, 0, 74, 0, 0, 0, 431, 301, 0,
0, 219, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 411, 0, 0,
65, 0, 0, 0, 0, 0, 178, 0, 0, 223, 0, 20, 283, 0, 203, 83,
0, 0, 0, 0, 143, 0, 113, 317, 358, 0, 0, 0, 457, 108, 0, 0,
0, 0, 425, 0, 347, 0, 59, 58, 0, 0, 0, 416, 79, 401, 498, 0,
0, 471, 0, 0, 278, 0, 289, 0, 0, 0, 324, 0, 196, 155, 0, 220,
264, 0, 225, 0, 384, 0, 0, 0, 474, 0, 0, 0, 335, 0, 292, 165,
0, 469, 0, 465, 0, 118, 0, 16, 0, 214, 0, 0, 0, 456, 32, 0,
0, 0, 0, 0, 0, 453, 0, 499, 0, 55, 5, 280, 199, 120, 387, 0,
176, 0, 0, 0, 314, 0, 0, 0, 0, 175, 0, 0, 0, 254, 182, 326,
435, 0, 84, 89, 0, 268, 0, 0, 374, 408, 171, 210, 0, 0, 13, 0,
0, 295, 0, 184, 0, 88, 229, 0, 0, 0, 0, 322, 241, 0, 0, 300,
0, 0, 440, 133, 0, 323, 0, 299, 0, 0, 0, 172, 0, 0, 212, 0,
0, 0, 130, 0, 0, 105, 443, 0, 355, 0, 26, 0, 0, 0, 309, 463,
201, 0, 0, 339, 0, 0, 0, 0, 257, 313, 0, 0, 0, 0, 397, 0,
0, 393, 0, 234, 0, 66, 321, 0, 0, 424, 0, 0, 439, 0, 0, 124,
75, 162, 0, 0, 128, 256, 455, 93, 0, 316, 0, 0, 0, 0, 386, 0,
0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 378, 312,
0, 0, 0, 0, 22, 404, 129, 0, 233, 0, 0, 0, 78, 472, 0, 0,
0, 475, 0, 37, 0, 0, 191, 0, 441, 288, 0, 0, 127, 0, 285, 402,
0, 0, 448, 348, 0, 308, 1, 160, 434, 291, 428, 39, 41, 442, 0, 0,
366, 491, 0, 0, 227, 0, 0, 213, 12, 281, 0, 0, 34, 0, 320, 0,
0, 193, 0, 421, 109, 71, 28, 0, 0, 318, 0, 0, 0, 0, 0, 232,
0, 0, 0, 46, 0, 45, 0, 0, 0, 0, 96, 147, 357, 99, 0, 139,
122, 0, 0, 80, 251, 67, 218, 0, 464, 44, 0, 0, 350, 0, 0, 250,
290, 0, 0, 98, 95, 0, 18, 52, 0, 137, 417, 0, 394, 0, 0, 0,
177, 0, 273, 0, 0, 354, 100, 0, 0, 154, 388, 0, 0, 0, 400, 0,
224, 0, 48, 0, 0, 0, 0, 0, 298, 168, 372, 0, 0, 38, 352, 0,
135, 0, 303, 31, 0, 0, 36, 419, 0, 0, 0, 319, 141, 0, 353, 81,
0, 0, 260, 239, 125, 0, 14, 0, 0, 0, 486, 186, 0, 56, 0, 490,
0, 114, 215, 0, 0, 0, 0, 51, 0, 0, 47, 315, 0, 0, 338, 436,
0, 0, 173, 183, 0, 211, 0, 381, 0, 0, 489, 0, 0, 0, 0, 248,
17, 146, 437, 0, 370, 0, 190, 0, 0, 0, 433, 0, 188, 0, 422, 395,
0, 276, 0, 0, 0, 0, 0, 0, 294, 0, 403, 164, 444, 253, 0, 106,
274, 163, 488, 343, 0, 0, 0, 0, 153, 0, 35, 0, 0, 406, 0, 0,
54, 0, 497, 62, 340, 68, 336, 0, 412, 205, 0, 429, 332, 484, 0, 226,
144, 0, 376, 0, 181, 49, 446, 0, 231, 0, 307, 189, 0, 0, 485, 0,
0, 461, 334, 0, 132, 0, 409, 0, 351, 432, 282, 413, 24, 221, 450, 452,
344, 150, 328, 0, 0, 293, 0, 0, 0, 0, 0, 349, 8, 0, 0, 337,
0, 0, 197, 10, 269, 107, 0, 0, 0, 0, 0, 9, 0, 50, 0, 82,
192, 255, 0, 368, 6, 0, 0, 263, 454, 0, 0, 359, 0, 151, 91, 174,
0, 310, 0, 398, 0, 70, 185, 94, 410, 0, 0, 362, 391, 152, 0, 0,
0, 237, 0, 0, 148, 0, 0, 0, 287, 76, 430, 0, 187, 0, 0, 97,
379, 216, 3, 483, 496, 427, 145, 73, 0, 103, 238, 467, 240, 470, 389, 90,
243, 87, 0, 0, 0, 0, 0, 356, 482, 466, 101, 134, 0, 0, 297, 0,
0, 331, 0, 170, 0, 305, 0, 161, 0, 0, 286, 468, 0, 0, 330, 126,
33, 0, 311, 0, 342, 136, 119, 198, 277, 0, 115, 0, 131, 0, 0, 364,
0, 112, 40, 261, 0, 265, 0, 209, 380, 0, 140, 200, 117, 0, 479, 262,
29, 258, 2, 0, 0, 0, 0, 0, 0, 327, 333, 0, 0, 0, 369, 267,
0, 86, 407, 360, 0, 271, 0, 0, 385, 0, 0, 0, 462, 0, 365, 0,
0, 0, 383, 7, 266, 0, 0, 373, 0, 459, 345, 0, 0, 85, 0, 377,
0, 447, 0, 0, 167, 0, 180, 0, 438, 111, 110, 284, 0, 0, 204, 0,
];
const fn hash(word: &[u8]) -> u32 {
let mut h: u32 = 0x811c_9dc5;
let mut at = 0;
while at < word.len() {
h ^= word[at].to_ascii_lowercase() as u32;
h = h.wrapping_mul(0x0100_0193);
at += 1;
}
h
}
pub(crate) fn lookup(word: &[u8]) -> Option<&'static Keyword> {
if word.len() > LONGEST {
return None;
}
let h = hash(word);
let d = u32::from(DISPLACEMENT[(h % BUCKETS) as usize]);
let mut x = h ^ d.wrapping_mul(0x9e37_79b9);
x ^= x >> 16;
x = x.wrapping_mul(0x85eb_ca6b);
x ^= x >> 13;
x = x.wrapping_mul(0xc2b2_ae35);
x ^= x >> 16;
let index = SLOTS[(x >> (32 - SLOT_BITS)) as usize];
if index == 0 {
return None;
}
let keyword = &KEYWORDS[usize::from(index) - 1];
keyword.name.as_bytes().eq_ignore_ascii_case(word).then_some(keyword)
}