From 6336cd5e74b8626a6a014085423798f257b86740 Mon Sep 17 00:00:00 2001 From: Taishi Naka <62321668+lemonadern@users.noreply.github.com> Date: Tue, 23 Jun 2026 15:13:42 +0900 Subject: [PATCH 1/2] fix: handle unknown parser tokens as parse errors --- .../parser-generator/src/parser_generator.rs | 23 +- .../templates/parser_template.rs | 4 +- crates/postgresql-cst-parser/src/cst.rs | 17 +- crates/postgresql-cst-parser/src/lib.rs | 14 + crates/postgresql-cst-parser/src/parser.rs | 1076 ++++++++--------- 5 files changed, 581 insertions(+), 553 deletions(-) diff --git a/crates/parser-generator/src/parser_generator.rs b/crates/parser-generator/src/parser_generator.rs index 5017cde..e84c682 100644 --- a/crates/parser-generator/src/parser_generator.rs +++ b/crates/parser-generator/src/parser_generator.rs @@ -296,16 +296,19 @@ fn generate_parser_source_code( Component::Terminal(s) => s.to_id(), _ => unreachable!(), }, - if matches!( - s, - Component::Terminal(TokenKind::C_COMMENT) - | Component::Terminal(TokenKind::SQL_COMMENT) - ) { - // Comments are not included in the parser lookahead tokens, so offset them by the number of non-terminal symbols - i + non_terminal_symbols.len() - } else { - i - } + format!( + "Some({})", + if matches!( + s, + Component::Terminal(TokenKind::C_COMMENT) + | Component::Terminal(TokenKind::SQL_COMMENT) + ) { + // Comments are not included in the parser lookahead tokens, so offset them by the number of non-terminal symbols + i + non_terminal_symbols.len() + } else { + i + } + ) ) }) .collect::>() diff --git a/crates/parser-generator/templates/parser_template.rs b/crates/parser-generator/templates/parser_template.rs index 547f5d3..b216354 100644 --- a/crates/parser-generator/templates/parser_template.rs +++ b/crates/parser-generator/templates/parser_template.rs @@ -33,9 +33,9 @@ pub(crate) fn end_rule_kind() -> TokenKind {{end_rule_kind}} pub(crate) fn end_rule_id() -> u32 {{end_rule_id}} -pub(crate) fn token_kind_to_component_id(kind: &TokenKind) -> u32 { +pub(crate) fn token_kind_to_component_id(kind: &TokenKind) -> Option { match kind {{token_to_component_id} - _ => unreachable!(), + _ => None, } } diff --git a/crates/postgresql-cst-parser/src/cst.rs b/crates/postgresql-cst-parser/src/cst.rs index 45301b8..2f65deb 100644 --- a/crates/postgresql-cst-parser/src/cst.rs +++ b/crates/postgresql-cst-parser/src/cst.rs @@ -247,7 +247,16 @@ pub fn parse_with_transformer( } }; - let mut cid = token_kind_to_component_id(&token.kind); + let mut cid = match token_kind_to_component_id(&token.kind) { + Some(cid) => cid, + None => { + return Err(ParserError::ParseError { + message: format!("unexpected token: {}", token.value), + start_byte_pos: token.start_byte_pos, + end_byte_pos: token.end_byte_pos, + }); + } + }; if matches!(token.kind, TokenKind::C_COMMENT | TokenKind::SQL_COMMENT) { if last_pos < token.start_byte_pos { @@ -297,7 +306,8 @@ pub fn parse_with_transformer( ParseTransform::InsertToken(token_kind) => { let last_extra = extras.last().unwrap(); - cid = token_kind_to_component_id(&token_kind); + cid = token_kind_to_component_id(&token_kind) + .expect("inserted token should map to a syntax kind"); token = Token { start_byte_pos: last_extra.end_byte_pos, end_byte_pos: last_extra.end_byte_pos, @@ -454,7 +464,8 @@ pub fn parse_with_transformer( break; } - let cid = token_kind_to_component_id(&token.kind); + let cid = token_kind_to_component_id(&token.kind) + .expect("remaining token should map to a syntax kind"); let kind = SyntaxKind::from_raw(RawSyntaxKind(cid)); extras.push(Extra { kind, diff --git a/crates/postgresql-cst-parser/src/lib.rs b/crates/postgresql-cst-parser/src/lib.rs index 1a6b346..f4f606f 100644 --- a/crates/postgresql-cst-parser/src/lib.rs +++ b/crates/postgresql-cst-parser/src/lib.rs @@ -203,6 +203,20 @@ mod tests { assert_eq!(actual, expected); } + + #[test] + fn test_unexpected_brace_token() { + let input = "{}"; + let actual = parse(input); + + let expected = Err(ParserError::ParseError { + message: "unexpected token: {".to_string(), + start_byte_pos: 0, + end_byte_pos: 1, + }); + + assert_eq!(actual, expected); + } } #[cfg(test)] diff --git a/crates/postgresql-cst-parser/src/parser.rs b/crates/postgresql-cst-parser/src/parser.rs index ffbfb7d..f22552d 100644 --- a/crates/postgresql-cst-parser/src/parser.rs +++ b/crates/postgresql-cst-parser/src/parser.rs @@ -33032,545 +33032,545 @@ pub(crate) fn end_rule_id() -> u32 { 126 } -pub(crate) fn token_kind_to_component_id(kind: &TokenKind) -> u32 { +pub(crate) fn token_kind_to_component_id(kind: &TokenKind) -> Option { match kind { - TokenKind::KEYWORD(s) if s == "ABORT_P" => 0, - TokenKind::KEYWORD(s) if s == "ABSENT" => 1, - TokenKind::KEYWORD(s) if s == "ABSOLUTE_P" => 2, - TokenKind::KEYWORD(s) if s == "ACCESS" => 3, - TokenKind::KEYWORD(s) if s == "ACTION" => 4, - TokenKind::KEYWORD(s) if s == "ADD_P" => 5, - TokenKind::KEYWORD(s) if s == "ADMIN" => 6, - TokenKind::KEYWORD(s) if s == "AFTER" => 7, - TokenKind::KEYWORD(s) if s == "AGGREGATE" => 8, - TokenKind::KEYWORD(s) if s == "ALL" => 9, - TokenKind::KEYWORD(s) if s == "ALSO" => 10, - TokenKind::KEYWORD(s) if s == "ALTER" => 11, - TokenKind::KEYWORD(s) if s == "ALWAYS" => 12, - TokenKind::KEYWORD(s) if s == "ANALYSE" => 13, - TokenKind::KEYWORD(s) if s == "ANALYZE" => 14, - TokenKind::KEYWORD(s) if s == "AND" => 15, - TokenKind::KEYWORD(s) if s == "ANY" => 16, - TokenKind::KEYWORD(s) if s == "ARRAY" => 17, - TokenKind::KEYWORD(s) if s == "AS" => 18, - TokenKind::KEYWORD(s) if s == "ASC" => 19, - TokenKind::KEYWORD(s) if s == "ASENSITIVE" => 20, - TokenKind::KEYWORD(s) if s == "ASSERTION" => 21, - TokenKind::KEYWORD(s) if s == "ASSIGNMENT" => 22, - TokenKind::KEYWORD(s) if s == "ASYMMETRIC" => 23, - TokenKind::KEYWORD(s) if s == "AT" => 24, - TokenKind::KEYWORD(s) if s == "ATOMIC" => 25, - TokenKind::KEYWORD(s) if s == "ATTACH" => 26, - TokenKind::KEYWORD(s) if s == "ATTRIBUTE" => 27, - TokenKind::KEYWORD(s) if s == "AUTHORIZATION" => 28, - TokenKind::KEYWORD(s) if s == "BACKWARD" => 29, - TokenKind::BCONST => 30, - TokenKind::KEYWORD(s) if s == "BEFORE" => 31, - TokenKind::KEYWORD(s) if s == "BEGIN_P" => 32, - TokenKind::KEYWORD(s) if s == "BETWEEN" => 33, - TokenKind::KEYWORD(s) if s == "BIGINT" => 34, - TokenKind::KEYWORD(s) if s == "BINARY" => 35, - TokenKind::KEYWORD(s) if s == "BIT" => 36, - TokenKind::KEYWORD(s) if s == "BOOLEAN_P" => 37, - TokenKind::KEYWORD(s) if s == "BOTH" => 38, - TokenKind::KEYWORD(s) if s == "BREADTH" => 39, - TokenKind::KEYWORD(s) if s == "BY" => 40, - TokenKind::KEYWORD(s) if s == "CACHE" => 41, - TokenKind::KEYWORD(s) if s == "CALL" => 42, - TokenKind::KEYWORD(s) if s == "CALLED" => 43, - TokenKind::KEYWORD(s) if s == "CASCADE" => 44, - TokenKind::KEYWORD(s) if s == "CASCADED" => 45, - TokenKind::KEYWORD(s) if s == "CASE" => 46, - TokenKind::KEYWORD(s) if s == "CAST" => 47, - TokenKind::KEYWORD(s) if s == "CATALOG_P" => 48, - TokenKind::KEYWORD(s) if s == "CHAIN" => 49, - TokenKind::KEYWORD(s) if s == "CHARACTER" => 50, - TokenKind::KEYWORD(s) if s == "CHARACTERISTICS" => 51, - TokenKind::KEYWORD(s) if s == "CHAR_P" => 52, - TokenKind::KEYWORD(s) if s == "CHECK" => 53, - TokenKind::KEYWORD(s) if s == "CHECKPOINT" => 54, - TokenKind::KEYWORD(s) if s == "CLASS" => 55, - TokenKind::KEYWORD(s) if s == "CLOSE" => 56, - TokenKind::KEYWORD(s) if s == "CLUSTER" => 57, - TokenKind::KEYWORD(s) if s == "COALESCE" => 58, - TokenKind::KEYWORD(s) if s == "COLLATE" => 59, - TokenKind::KEYWORD(s) if s == "COLLATION" => 60, - TokenKind::COLON_EQUALS => 61, - TokenKind::KEYWORD(s) if s == "COLUMN" => 62, - TokenKind::KEYWORD(s) if s == "COLUMNS" => 63, - TokenKind::KEYWORD(s) if s == "COMMENT" => 64, - TokenKind::KEYWORD(s) if s == "COMMENTS" => 65, - TokenKind::KEYWORD(s) if s == "COMMIT" => 66, - TokenKind::KEYWORD(s) if s == "COMMITTED" => 67, - TokenKind::KEYWORD(s) if s == "COMPRESSION" => 68, - TokenKind::KEYWORD(s) if s == "CONCURRENTLY" => 69, - TokenKind::KEYWORD(s) if s == "CONDITIONAL" => 70, - TokenKind::KEYWORD(s) if s == "CONFIGURATION" => 71, - TokenKind::KEYWORD(s) if s == "CONFLICT" => 72, - TokenKind::KEYWORD(s) if s == "CONNECTION" => 73, - TokenKind::KEYWORD(s) if s == "CONSTRAINT" => 74, - TokenKind::KEYWORD(s) if s == "CONSTRAINTS" => 75, - TokenKind::KEYWORD(s) if s == "CONTENT_P" => 76, - TokenKind::KEYWORD(s) if s == "CONTINUE_P" => 77, - TokenKind::KEYWORD(s) if s == "CONVERSION_P" => 78, - TokenKind::KEYWORD(s) if s == "COPY" => 79, - TokenKind::KEYWORD(s) if s == "COST" => 80, - TokenKind::KEYWORD(s) if s == "CREATE" => 81, - TokenKind::KEYWORD(s) if s == "CROSS" => 82, - TokenKind::KEYWORD(s) if s == "CSV" => 83, - TokenKind::KEYWORD(s) if s == "CUBE" => 84, - TokenKind::KEYWORD(s) if s == "CURRENT_CATALOG" => 85, - TokenKind::KEYWORD(s) if s == "CURRENT_DATE" => 86, - TokenKind::KEYWORD(s) if s == "CURRENT_P" => 87, - TokenKind::KEYWORD(s) if s == "CURRENT_ROLE" => 88, - TokenKind::KEYWORD(s) if s == "CURRENT_SCHEMA" => 89, - TokenKind::KEYWORD(s) if s == "CURRENT_TIME" => 90, - TokenKind::KEYWORD(s) if s == "CURRENT_TIMESTAMP" => 91, - TokenKind::KEYWORD(s) if s == "CURRENT_USER" => 92, - TokenKind::KEYWORD(s) if s == "CURSOR" => 93, - TokenKind::KEYWORD(s) if s == "CYCLE" => 94, - TokenKind::RAW(s) if s == "^" => 95, - TokenKind::RAW(s) if s == ":" => 96, - TokenKind::RAW(s) if s == "," => 97, - TokenKind::KEYWORD(s) if s == "DATABASE" => 98, - TokenKind::KEYWORD(s) if s == "DATA_P" => 99, - TokenKind::KEYWORD(s) if s == "DAY_P" => 100, - TokenKind::KEYWORD(s) if s == "DEALLOCATE" => 101, - TokenKind::KEYWORD(s) if s == "DEC" => 102, - TokenKind::KEYWORD(s) if s == "DECIMAL_P" => 103, - TokenKind::KEYWORD(s) if s == "DECLARE" => 104, - TokenKind::KEYWORD(s) if s == "DEFAULT" => 105, - TokenKind::KEYWORD(s) if s == "DEFAULTS" => 106, - TokenKind::KEYWORD(s) if s == "DEFERRABLE" => 107, - TokenKind::KEYWORD(s) if s == "DEFERRED" => 108, - TokenKind::KEYWORD(s) if s == "DEFINER" => 109, - TokenKind::KEYWORD(s) if s == "DELETE_P" => 110, - TokenKind::KEYWORD(s) if s == "DELIMITER" => 111, - TokenKind::KEYWORD(s) if s == "DELIMITERS" => 112, - TokenKind::KEYWORD(s) if s == "DEPENDS" => 113, - TokenKind::KEYWORD(s) if s == "DEPTH" => 114, - TokenKind::KEYWORD(s) if s == "DESC" => 115, - TokenKind::KEYWORD(s) if s == "DETACH" => 116, - TokenKind::KEYWORD(s) if s == "DICTIONARY" => 117, - TokenKind::KEYWORD(s) if s == "DISABLE_P" => 118, - TokenKind::KEYWORD(s) if s == "DISCARD" => 119, - TokenKind::KEYWORD(s) if s == "DISTINCT" => 120, - TokenKind::KEYWORD(s) if s == "DO" => 121, - TokenKind::KEYWORD(s) if s == "DOCUMENT_P" => 122, - TokenKind::KEYWORD(s) if s == "DOMAIN_P" => 123, - TokenKind::KEYWORD(s) if s == "DOUBLE_P" => 124, - TokenKind::KEYWORD(s) if s == "DROP" => 125, - TokenKind::RAW(s) if s == "$end" => 126, - TokenKind::RAW(s) if s == "." => 127, - TokenKind::KEYWORD(s) if s == "EACH" => 128, - TokenKind::KEYWORD(s) if s == "ELSE" => 129, - TokenKind::KEYWORD(s) if s == "EMPTY_P" => 130, - TokenKind::KEYWORD(s) if s == "ENABLE_P" => 131, - TokenKind::KEYWORD(s) if s == "ENCODING" => 132, - TokenKind::KEYWORD(s) if s == "ENCRYPTED" => 133, - TokenKind::KEYWORD(s) if s == "END_P" => 134, - TokenKind::KEYWORD(s) if s == "ENUM_P" => 135, - TokenKind::EQUALS_GREATER => 136, - TokenKind::KEYWORD(s) if s == "ERROR_P" => 137, - TokenKind::KEYWORD(s) if s == "ESCAPE" => 138, - TokenKind::KEYWORD(s) if s == "EVENT" => 139, - TokenKind::KEYWORD(s) if s == "EXCEPT" => 140, - TokenKind::KEYWORD(s) if s == "EXCLUDE" => 141, - TokenKind::KEYWORD(s) if s == "EXCLUDING" => 142, - TokenKind::KEYWORD(s) if s == "EXCLUSIVE" => 143, - TokenKind::KEYWORD(s) if s == "EXECUTE" => 144, - TokenKind::KEYWORD(s) if s == "EXISTS" => 145, - TokenKind::KEYWORD(s) if s == "EXPLAIN" => 146, - TokenKind::KEYWORD(s) if s == "EXPRESSION" => 147, - TokenKind::KEYWORD(s) if s == "EXTENSION" => 148, - TokenKind::KEYWORD(s) if s == "EXTERNAL" => 149, - TokenKind::KEYWORD(s) if s == "EXTRACT" => 150, - TokenKind::RAW(s) if s == "=" => 151, - TokenKind::KEYWORD(s) if s == "FALSE_P" => 152, - TokenKind::KEYWORD(s) if s == "FAMILY" => 153, - TokenKind::FCONST => 154, - TokenKind::KEYWORD(s) if s == "FETCH" => 155, - TokenKind::KEYWORD(s) if s == "FILTER" => 156, - TokenKind::KEYWORD(s) if s == "FINALIZE" => 157, - TokenKind::KEYWORD(s) if s == "FIRST_P" => 158, - TokenKind::KEYWORD(s) if s == "FLOAT_P" => 159, - TokenKind::KEYWORD(s) if s == "FOLLOWING" => 160, - TokenKind::KEYWORD(s) if s == "FOR" => 161, - TokenKind::KEYWORD(s) if s == "FORCE" => 162, - TokenKind::KEYWORD(s) if s == "FOREIGN" => 163, - TokenKind::KEYWORD(s) if s == "FORMAT" => 164, - TokenKind::KEYWORD(s) if s == "FORMAT_LA" => 165, - TokenKind::KEYWORD(s) if s == "FORWARD" => 166, - TokenKind::KEYWORD(s) if s == "FREEZE" => 167, - TokenKind::KEYWORD(s) if s == "FROM" => 168, - TokenKind::KEYWORD(s) if s == "FULL" => 169, - TokenKind::KEYWORD(s) if s == "FUNCTION" => 170, - TokenKind::KEYWORD(s) if s == "FUNCTIONS" => 171, - TokenKind::KEYWORD(s) if s == "GENERATED" => 172, - TokenKind::KEYWORD(s) if s == "GLOBAL" => 173, - TokenKind::KEYWORD(s) if s == "GRANT" => 174, - TokenKind::KEYWORD(s) if s == "GRANTED" => 175, - TokenKind::GREATER_EQUALS => 176, - TokenKind::KEYWORD(s) if s == "GREATEST" => 177, - TokenKind::KEYWORD(s) if s == "GROUPING" => 178, - TokenKind::KEYWORD(s) if s == "GROUPS" => 179, - TokenKind::KEYWORD(s) if s == "GROUP_P" => 180, - TokenKind::RAW(s) if s == ">" => 181, - TokenKind::KEYWORD(s) if s == "HANDLER" => 182, - TokenKind::KEYWORD(s) if s == "HAVING" => 183, - TokenKind::KEYWORD(s) if s == "HEADER_P" => 184, - TokenKind::KEYWORD(s) if s == "HOLD" => 185, - TokenKind::KEYWORD(s) if s == "HOUR_P" => 186, - TokenKind::ICONST => 187, - TokenKind::IDENT => 188, - TokenKind::KEYWORD(s) if s == "IDENTITY_P" => 189, - TokenKind::KEYWORD(s) if s == "IF_P" => 190, - TokenKind::KEYWORD(s) if s == "ILIKE" => 191, - TokenKind::KEYWORD(s) if s == "IMMEDIATE" => 192, - TokenKind::KEYWORD(s) if s == "IMMUTABLE" => 193, - TokenKind::KEYWORD(s) if s == "IMPLICIT_P" => 194, - TokenKind::KEYWORD(s) if s == "IMPORT_P" => 195, - TokenKind::KEYWORD(s) if s == "INCLUDE" => 196, - TokenKind::KEYWORD(s) if s == "INCLUDING" => 197, - TokenKind::KEYWORD(s) if s == "INCREMENT" => 198, - TokenKind::KEYWORD(s) if s == "INDENT" => 199, - TokenKind::KEYWORD(s) if s == "INDEX" => 200, - TokenKind::KEYWORD(s) if s == "INDEXES" => 201, - TokenKind::KEYWORD(s) if s == "INHERIT" => 202, - TokenKind::KEYWORD(s) if s == "INHERITS" => 203, - TokenKind::KEYWORD(s) if s == "INITIALLY" => 204, - TokenKind::KEYWORD(s) if s == "INLINE_P" => 205, - TokenKind::KEYWORD(s) if s == "INNER_P" => 206, - TokenKind::KEYWORD(s) if s == "INOUT" => 207, - TokenKind::KEYWORD(s) if s == "INPUT_P" => 208, - TokenKind::KEYWORD(s) if s == "INSENSITIVE" => 209, - TokenKind::KEYWORD(s) if s == "INSERT" => 210, - TokenKind::KEYWORD(s) if s == "INSTEAD" => 211, - TokenKind::KEYWORD(s) if s == "INTEGER" => 212, - TokenKind::KEYWORD(s) if s == "INTERSECT" => 213, - TokenKind::KEYWORD(s) if s == "INTERVAL" => 214, - TokenKind::KEYWORD(s) if s == "INTO" => 215, - TokenKind::KEYWORD(s) if s == "INT_P" => 216, - TokenKind::KEYWORD(s) if s == "INVOKER" => 217, - TokenKind::KEYWORD(s) if s == "IN_P" => 218, - TokenKind::KEYWORD(s) if s == "IS" => 219, - TokenKind::KEYWORD(s) if s == "ISNULL" => 220, - TokenKind::KEYWORD(s) if s == "ISOLATION" => 221, - TokenKind::KEYWORD(s) if s == "JOIN" => 222, - TokenKind::KEYWORD(s) if s == "JSON" => 223, - TokenKind::KEYWORD(s) if s == "JSON_ARRAY" => 224, - TokenKind::KEYWORD(s) if s == "JSON_ARRAYAGG" => 225, - TokenKind::KEYWORD(s) if s == "JSON_EXISTS" => 226, - TokenKind::KEYWORD(s) if s == "JSON_OBJECT" => 227, - TokenKind::KEYWORD(s) if s == "JSON_OBJECTAGG" => 228, - TokenKind::KEYWORD(s) if s == "JSON_QUERY" => 229, - TokenKind::KEYWORD(s) if s == "JSON_SCALAR" => 230, - TokenKind::KEYWORD(s) if s == "JSON_SERIALIZE" => 231, - TokenKind::KEYWORD(s) if s == "JSON_TABLE" => 232, - TokenKind::KEYWORD(s) if s == "JSON_VALUE" => 233, - TokenKind::KEYWORD(s) if s == "KEEP" => 234, - TokenKind::KEYWORD(s) if s == "KEY" => 235, - TokenKind::KEYWORD(s) if s == "KEYS" => 236, - TokenKind::KEYWORD(s) if s == "LABEL" => 237, - TokenKind::KEYWORD(s) if s == "LANGUAGE" => 238, - TokenKind::KEYWORD(s) if s == "LARGE_P" => 239, - TokenKind::KEYWORD(s) if s == "LAST_P" => 240, - TokenKind::KEYWORD(s) if s == "LATERAL_P" => 241, - TokenKind::RAW(s) if s == "[" => 242, - TokenKind::KEYWORD(s) if s == "LEADING" => 243, - TokenKind::KEYWORD(s) if s == "LEAKPROOF" => 244, - TokenKind::KEYWORD(s) if s == "LEAST" => 245, - TokenKind::KEYWORD(s) if s == "LEFT" => 246, - TokenKind::LESS_EQUALS => 247, - TokenKind::KEYWORD(s) if s == "LEVEL" => 248, - TokenKind::KEYWORD(s) if s == "LIKE" => 249, - TokenKind::KEYWORD(s) if s == "LIMIT" => 250, - TokenKind::KEYWORD(s) if s == "LISTEN" => 251, - TokenKind::KEYWORD(s) if s == "LOAD" => 252, - TokenKind::KEYWORD(s) if s == "LOCAL" => 253, - TokenKind::KEYWORD(s) if s == "LOCALTIME" => 254, - TokenKind::KEYWORD(s) if s == "LOCALTIMESTAMP" => 255, - TokenKind::KEYWORD(s) if s == "LOCATION" => 256, - TokenKind::KEYWORD(s) if s == "LOCKED" => 257, - TokenKind::KEYWORD(s) if s == "LOCK_P" => 258, - TokenKind::KEYWORD(s) if s == "LOGGED" => 259, - TokenKind::RAW(s) if s == "(" => 260, - TokenKind::RAW(s) if s == "<" => 261, - TokenKind::KEYWORD(s) if s == "MAPPING" => 262, - TokenKind::KEYWORD(s) if s == "MATCH" => 263, - TokenKind::KEYWORD(s) if s == "MATCHED" => 264, - TokenKind::KEYWORD(s) if s == "MATERIALIZED" => 265, - TokenKind::KEYWORD(s) if s == "MAXVALUE" => 266, - TokenKind::KEYWORD(s) if s == "MERGE" => 267, - TokenKind::KEYWORD(s) if s == "MERGE_ACTION" => 268, - TokenKind::KEYWORD(s) if s == "METHOD" => 269, - TokenKind::KEYWORD(s) if s == "MINUTE_P" => 270, - TokenKind::KEYWORD(s) if s == "MINVALUE" => 271, - TokenKind::KEYWORD(s) if s == "MODE" => 272, - TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN1" => 273, - TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN2" => 274, - TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN3" => 275, - TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_EXPR" => 276, - TokenKind::KEYWORD(s) if s == "MODE_TYPE_NAME" => 277, - TokenKind::KEYWORD(s) if s == "MONTH_P" => 278, - TokenKind::KEYWORD(s) if s == "MOVE" => 279, - TokenKind::RAW(s) if s == "-" => 280, - TokenKind::KEYWORD(s) if s == "NAMES" => 281, - TokenKind::KEYWORD(s) if s == "NAME_P" => 282, - TokenKind::KEYWORD(s) if s == "NATIONAL" => 283, - TokenKind::KEYWORD(s) if s == "NATURAL" => 284, - TokenKind::KEYWORD(s) if s == "NCHAR" => 285, - TokenKind::KEYWORD(s) if s == "NESTED" => 286, - TokenKind::KEYWORD(s) if s == "NEW" => 287, - TokenKind::KEYWORD(s) if s == "NEXT" => 288, - TokenKind::KEYWORD(s) if s == "NFC" => 289, - TokenKind::KEYWORD(s) if s == "NFD" => 290, - TokenKind::KEYWORD(s) if s == "NFKC" => 291, - TokenKind::KEYWORD(s) if s == "NFKD" => 292, - TokenKind::KEYWORD(s) if s == "NO" => 293, - TokenKind::KEYWORD(s) if s == "NONE" => 294, - TokenKind::KEYWORD(s) if s == "NORMALIZE" => 295, - TokenKind::KEYWORD(s) if s == "NORMALIZED" => 296, - TokenKind::KEYWORD(s) if s == "NOT" => 297, - TokenKind::KEYWORD(s) if s == "NOTHING" => 298, - TokenKind::KEYWORD(s) if s == "NOTIFY" => 299, - TokenKind::KEYWORD(s) if s == "NOTNULL" => 300, - TokenKind::NOT_EQUALS => 301, - TokenKind::KEYWORD(s) if s == "NOT_LA" => 302, - TokenKind::KEYWORD(s) if s == "NOWAIT" => 303, - TokenKind::KEYWORD(s) if s == "NULLIF" => 304, - TokenKind::KEYWORD(s) if s == "NULLS_LA" => 305, - TokenKind::KEYWORD(s) if s == "NULLS_P" => 306, - TokenKind::KEYWORD(s) if s == "NULL_P" => 307, - TokenKind::KEYWORD(s) if s == "NUMERIC" => 308, - TokenKind::KEYWORD(s) if s == "OBJECT_P" => 309, - TokenKind::KEYWORD(s) if s == "OF" => 310, - TokenKind::KEYWORD(s) if s == "OFF" => 311, - TokenKind::KEYWORD(s) if s == "OFFSET" => 312, - TokenKind::KEYWORD(s) if s == "OIDS" => 313, - TokenKind::KEYWORD(s) if s == "OLD" => 314, - TokenKind::KEYWORD(s) if s == "OMIT" => 315, - TokenKind::KEYWORD(s) if s == "ON" => 316, - TokenKind::KEYWORD(s) if s == "ONLY" => 317, - TokenKind::KEYWORD(s) if s == "OPERATOR" => 318, - TokenKind::KEYWORD(s) if s == "OPTION" => 319, - TokenKind::KEYWORD(s) if s == "OPTIONS" => 320, - TokenKind::KEYWORD(s) if s == "OR" => 321, - TokenKind::KEYWORD(s) if s == "ORDER" => 322, - TokenKind::KEYWORD(s) if s == "ORDINALITY" => 323, - TokenKind::KEYWORD(s) if s == "OTHERS" => 324, - TokenKind::KEYWORD(s) if s == "OUTER_P" => 325, - TokenKind::KEYWORD(s) if s == "OUT_P" => 326, - TokenKind::KEYWORD(s) if s == "OVER" => 327, - TokenKind::KEYWORD(s) if s == "OVERLAPS" => 328, - TokenKind::KEYWORD(s) if s == "OVERLAY" => 329, - TokenKind::KEYWORD(s) if s == "OVERRIDING" => 330, - TokenKind::KEYWORD(s) if s == "OWNED" => 331, - TokenKind::KEYWORD(s) if s == "OWNER" => 332, - TokenKind::Op => 333, - TokenKind::KEYWORD(s) if s == "PARALLEL" => 334, - TokenKind::PARAM => 335, - TokenKind::KEYWORD(s) if s == "PARAMETER" => 336, - TokenKind::KEYWORD(s) if s == "PARSER" => 337, - TokenKind::KEYWORD(s) if s == "PARTIAL" => 338, - TokenKind::KEYWORD(s) if s == "PARTITION" => 339, - TokenKind::KEYWORD(s) if s == "PASSING" => 340, - TokenKind::KEYWORD(s) if s == "PASSWORD" => 341, - TokenKind::KEYWORD(s) if s == "PATH" => 342, - TokenKind::KEYWORD(s) if s == "PLACING" => 343, - TokenKind::KEYWORD(s) if s == "PLAN" => 344, - TokenKind::KEYWORD(s) if s == "PLANS" => 345, - TokenKind::KEYWORD(s) if s == "POLICY" => 346, - TokenKind::KEYWORD(s) if s == "POSITION" => 347, - TokenKind::KEYWORD(s) if s == "PRECEDING" => 348, - TokenKind::KEYWORD(s) if s == "PRECISION" => 349, - TokenKind::KEYWORD(s) if s == "PREPARE" => 350, - TokenKind::KEYWORD(s) if s == "PREPARED" => 351, - TokenKind::KEYWORD(s) if s == "PRESERVE" => 352, - TokenKind::KEYWORD(s) if s == "PRIMARY" => 353, - TokenKind::KEYWORD(s) if s == "PRIOR" => 354, - TokenKind::KEYWORD(s) if s == "PRIVILEGES" => 355, - TokenKind::KEYWORD(s) if s == "PROCEDURAL" => 356, - TokenKind::KEYWORD(s) if s == "PROCEDURE" => 357, - TokenKind::KEYWORD(s) if s == "PROCEDURES" => 358, - TokenKind::KEYWORD(s) if s == "PROGRAM" => 359, - TokenKind::KEYWORD(s) if s == "PUBLICATION" => 360, - TokenKind::RAW(s) if s == "%" => 361, - TokenKind::RAW(s) if s == "+" => 362, - TokenKind::KEYWORD(s) if s == "QUOTE" => 363, - TokenKind::KEYWORD(s) if s == "QUOTES" => 364, - TokenKind::KEYWORD(s) if s == "RANGE" => 365, - TokenKind::RAW(s) if s == "]" => 366, - TokenKind::KEYWORD(s) if s == "READ" => 367, - TokenKind::KEYWORD(s) if s == "REAL" => 368, - TokenKind::KEYWORD(s) if s == "REASSIGN" => 369, - TokenKind::KEYWORD(s) if s == "RECHECK" => 370, - TokenKind::KEYWORD(s) if s == "RECURSIVE" => 371, - TokenKind::KEYWORD(s) if s == "REFERENCES" => 372, - TokenKind::KEYWORD(s) if s == "REFERENCING" => 373, - TokenKind::KEYWORD(s) if s == "REFRESH" => 374, - TokenKind::KEYWORD(s) if s == "REF_P" => 375, - TokenKind::KEYWORD(s) if s == "REINDEX" => 376, - TokenKind::KEYWORD(s) if s == "RELATIVE_P" => 377, - TokenKind::KEYWORD(s) if s == "RELEASE" => 378, - TokenKind::KEYWORD(s) if s == "RENAME" => 379, - TokenKind::KEYWORD(s) if s == "REPEATABLE" => 380, - TokenKind::KEYWORD(s) if s == "REPLACE" => 381, - TokenKind::KEYWORD(s) if s == "REPLICA" => 382, - TokenKind::KEYWORD(s) if s == "RESET" => 383, - TokenKind::KEYWORD(s) if s == "RESTART" => 384, - TokenKind::KEYWORD(s) if s == "RESTRICT" => 385, - TokenKind::KEYWORD(s) if s == "RETURN" => 386, - TokenKind::KEYWORD(s) if s == "RETURNING" => 387, - TokenKind::KEYWORD(s) if s == "RETURNS" => 388, - TokenKind::KEYWORD(s) if s == "REVOKE" => 389, - TokenKind::KEYWORD(s) if s == "RIGHT" => 390, - TokenKind::KEYWORD(s) if s == "ROLE" => 391, - TokenKind::KEYWORD(s) if s == "ROLLBACK" => 392, - TokenKind::KEYWORD(s) if s == "ROLLUP" => 393, - TokenKind::KEYWORD(s) if s == "ROUTINE" => 394, - TokenKind::KEYWORD(s) if s == "ROUTINES" => 395, - TokenKind::KEYWORD(s) if s == "ROW" => 396, - TokenKind::KEYWORD(s) if s == "ROWS" => 397, - TokenKind::RAW(s) if s == ")" => 398, - TokenKind::KEYWORD(s) if s == "RULE" => 399, - TokenKind::KEYWORD(s) if s == "SAVEPOINT" => 400, - TokenKind::KEYWORD(s) if s == "SCALAR" => 401, - TokenKind::KEYWORD(s) if s == "SCHEMA" => 402, - TokenKind::KEYWORD(s) if s == "SCHEMAS" => 403, - TokenKind::SCONST => 404, - TokenKind::KEYWORD(s) if s == "SCROLL" => 405, - TokenKind::KEYWORD(s) if s == "SEARCH" => 406, - TokenKind::KEYWORD(s) if s == "SECOND_P" => 407, - TokenKind::KEYWORD(s) if s == "SECURITY" => 408, - TokenKind::KEYWORD(s) if s == "SELECT" => 409, - TokenKind::KEYWORD(s) if s == "SEQUENCE" => 410, - TokenKind::KEYWORD(s) if s == "SEQUENCES" => 411, - TokenKind::KEYWORD(s) if s == "SERIALIZABLE" => 412, - TokenKind::KEYWORD(s) if s == "SERVER" => 413, - TokenKind::KEYWORD(s) if s == "SESSION" => 414, - TokenKind::KEYWORD(s) if s == "SESSION_USER" => 415, - TokenKind::KEYWORD(s) if s == "SET" => 416, - TokenKind::KEYWORD(s) if s == "SETOF" => 417, - TokenKind::KEYWORD(s) if s == "SETS" => 418, - TokenKind::KEYWORD(s) if s == "SHARE" => 419, - TokenKind::KEYWORD(s) if s == "SHOW" => 420, - TokenKind::KEYWORD(s) if s == "SIMILAR" => 421, - TokenKind::KEYWORD(s) if s == "SIMPLE" => 422, - TokenKind::KEYWORD(s) if s == "SKIP" => 423, - TokenKind::KEYWORD(s) if s == "SMALLINT" => 424, - TokenKind::KEYWORD(s) if s == "SNAPSHOT" => 425, - TokenKind::KEYWORD(s) if s == "SOME" => 426, - TokenKind::KEYWORD(s) if s == "SOURCE" => 427, - TokenKind::KEYWORD(s) if s == "SQL_P" => 428, - TokenKind::KEYWORD(s) if s == "STABLE" => 429, - TokenKind::KEYWORD(s) if s == "STANDALONE_P" => 430, - TokenKind::KEYWORD(s) if s == "START" => 431, - TokenKind::KEYWORD(s) if s == "STATEMENT" => 432, - TokenKind::KEYWORD(s) if s == "STATISTICS" => 433, - TokenKind::KEYWORD(s) if s == "STDIN" => 434, - TokenKind::KEYWORD(s) if s == "STDOUT" => 435, - TokenKind::KEYWORD(s) if s == "STORAGE" => 436, - TokenKind::KEYWORD(s) if s == "STORED" => 437, - TokenKind::KEYWORD(s) if s == "STRICT_P" => 438, - TokenKind::KEYWORD(s) if s == "STRING_P" => 439, - TokenKind::KEYWORD(s) if s == "STRIP_P" => 440, - TokenKind::KEYWORD(s) if s == "SUBSCRIPTION" => 441, - TokenKind::KEYWORD(s) if s == "SUBSTRING" => 442, - TokenKind::KEYWORD(s) if s == "SUPPORT" => 443, - TokenKind::KEYWORD(s) if s == "SYMMETRIC" => 444, - TokenKind::KEYWORD(s) if s == "SYSID" => 445, - TokenKind::KEYWORD(s) if s == "SYSTEM_P" => 446, - TokenKind::KEYWORD(s) if s == "SYSTEM_USER" => 447, - TokenKind::RAW(s) if s == ";" => 448, - TokenKind::RAW(s) if s == "/" => 449, - TokenKind::RAW(s) if s == "*" => 450, - TokenKind::KEYWORD(s) if s == "TABLE" => 451, - TokenKind::KEYWORD(s) if s == "TABLES" => 452, - TokenKind::KEYWORD(s) if s == "TABLESAMPLE" => 453, - TokenKind::KEYWORD(s) if s == "TABLESPACE" => 454, - TokenKind::KEYWORD(s) if s == "TARGET" => 455, - TokenKind::KEYWORD(s) if s == "TEMP" => 456, - TokenKind::KEYWORD(s) if s == "TEMPLATE" => 457, - TokenKind::KEYWORD(s) if s == "TEMPORARY" => 458, - TokenKind::KEYWORD(s) if s == "TEXT_P" => 459, - TokenKind::KEYWORD(s) if s == "THEN" => 460, - TokenKind::KEYWORD(s) if s == "TIES" => 461, - TokenKind::KEYWORD(s) if s == "TIME" => 462, - TokenKind::KEYWORD(s) if s == "TIMESTAMP" => 463, - TokenKind::KEYWORD(s) if s == "TO" => 464, - TokenKind::KEYWORD(s) if s == "TRAILING" => 465, - TokenKind::KEYWORD(s) if s == "TRANSACTION" => 466, - TokenKind::KEYWORD(s) if s == "TRANSFORM" => 467, - TokenKind::KEYWORD(s) if s == "TREAT" => 468, - TokenKind::KEYWORD(s) if s == "TRIGGER" => 469, - TokenKind::KEYWORD(s) if s == "TRIM" => 470, - TokenKind::KEYWORD(s) if s == "TRUE_P" => 471, - TokenKind::KEYWORD(s) if s == "TRUNCATE" => 472, - TokenKind::KEYWORD(s) if s == "TRUSTED" => 473, - TokenKind::TYPECAST => 474, - TokenKind::KEYWORD(s) if s == "TYPES_P" => 475, - TokenKind::KEYWORD(s) if s == "TYPE_P" => 476, - TokenKind::KEYWORD(s) if s == "UESCAPE" => 477, - TokenKind::KEYWORD(s) if s == "UMINUS" => 478, - TokenKind::KEYWORD(s) if s == "UNBOUNDED" => 479, - TokenKind::KEYWORD(s) if s == "UNCOMMITTED" => 480, - TokenKind::KEYWORD(s) if s == "UNCONDITIONAL" => 481, - TokenKind::KEYWORD(s) if s == "UNENCRYPTED" => 482, - TokenKind::KEYWORD(s) if s == "UNION" => 483, - TokenKind::KEYWORD(s) if s == "UNIQUE" => 484, - TokenKind::KEYWORD(s) if s == "UNKNOWN" => 485, - TokenKind::KEYWORD(s) if s == "UNLISTEN" => 486, - TokenKind::KEYWORD(s) if s == "UNLOGGED" => 487, - TokenKind::KEYWORD(s) if s == "UNTIL" => 488, - TokenKind::KEYWORD(s) if s == "UPDATE" => 489, - TokenKind::KEYWORD(s) if s == "USER" => 490, - TokenKind::KEYWORD(s) if s == "USING" => 491, - TokenKind::KEYWORD(s) if s == "VACUUM" => 492, - TokenKind::KEYWORD(s) if s == "VALID" => 493, - TokenKind::KEYWORD(s) if s == "VALIDATE" => 494, - TokenKind::KEYWORD(s) if s == "VALIDATOR" => 495, - TokenKind::KEYWORD(s) if s == "VALUES" => 496, - TokenKind::KEYWORD(s) if s == "VALUE_P" => 497, - TokenKind::KEYWORD(s) if s == "VARCHAR" => 498, - TokenKind::KEYWORD(s) if s == "VARIADIC" => 499, - TokenKind::KEYWORD(s) if s == "VARYING" => 500, - TokenKind::KEYWORD(s) if s == "VERBOSE" => 501, - TokenKind::KEYWORD(s) if s == "VERSION_P" => 502, - TokenKind::KEYWORD(s) if s == "VIEW" => 503, - TokenKind::KEYWORD(s) if s == "VIEWS" => 504, - TokenKind::KEYWORD(s) if s == "VOLATILE" => 505, - TokenKind::KEYWORD(s) if s == "WHEN" => 506, - TokenKind::KEYWORD(s) if s == "WHERE" => 507, - TokenKind::KEYWORD(s) if s == "WHITESPACE_P" => 508, - TokenKind::KEYWORD(s) if s == "WINDOW" => 509, - TokenKind::KEYWORD(s) if s == "WITH" => 510, - TokenKind::KEYWORD(s) if s == "WITHIN" => 511, - TokenKind::KEYWORD(s) if s == "WITHOUT" => 512, - TokenKind::KEYWORD(s) if s == "WITHOUT_LA" => 513, - TokenKind::KEYWORD(s) if s == "WITH_LA" => 514, - TokenKind::KEYWORD(s) if s == "WORK" => 515, - TokenKind::KEYWORD(s) if s == "WRAPPER" => 516, - TokenKind::KEYWORD(s) if s == "WRITE" => 517, - TokenKind::XCONST => 518, - TokenKind::KEYWORD(s) if s == "XMLATTRIBUTES" => 519, - TokenKind::KEYWORD(s) if s == "XMLCONCAT" => 520, - TokenKind::KEYWORD(s) if s == "XMLELEMENT" => 521, - TokenKind::KEYWORD(s) if s == "XMLEXISTS" => 522, - TokenKind::KEYWORD(s) if s == "XMLFOREST" => 523, - TokenKind::KEYWORD(s) if s == "XMLNAMESPACES" => 524, - TokenKind::KEYWORD(s) if s == "XMLPARSE" => 525, - TokenKind::KEYWORD(s) if s == "XMLPI" => 526, - TokenKind::KEYWORD(s) if s == "XMLROOT" => 527, - TokenKind::KEYWORD(s) if s == "XMLSERIALIZE" => 528, - TokenKind::KEYWORD(s) if s == "XMLTABLE" => 529, - TokenKind::KEYWORD(s) if s == "XML_P" => 530, - TokenKind::KEYWORD(s) if s == "YEAR_P" => 531, - TokenKind::KEYWORD(s) if s == "YES_P" => 532, - TokenKind::KEYWORD(s) if s == "ZONE" => 533, - TokenKind::C_COMMENT => 1262, - TokenKind::SQL_COMMENT => 1263, - _ => unreachable!(), + TokenKind::KEYWORD(s) if s == "ABORT_P" => Some(0), + TokenKind::KEYWORD(s) if s == "ABSENT" => Some(1), + TokenKind::KEYWORD(s) if s == "ABSOLUTE_P" => Some(2), + TokenKind::KEYWORD(s) if s == "ACCESS" => Some(3), + TokenKind::KEYWORD(s) if s == "ACTION" => Some(4), + TokenKind::KEYWORD(s) if s == "ADD_P" => Some(5), + TokenKind::KEYWORD(s) if s == "ADMIN" => Some(6), + TokenKind::KEYWORD(s) if s == "AFTER" => Some(7), + TokenKind::KEYWORD(s) if s == "AGGREGATE" => Some(8), + TokenKind::KEYWORD(s) if s == "ALL" => Some(9), + TokenKind::KEYWORD(s) if s == "ALSO" => Some(10), + TokenKind::KEYWORD(s) if s == "ALTER" => Some(11), + TokenKind::KEYWORD(s) if s == "ALWAYS" => Some(12), + TokenKind::KEYWORD(s) if s == "ANALYSE" => Some(13), + TokenKind::KEYWORD(s) if s == "ANALYZE" => Some(14), + TokenKind::KEYWORD(s) if s == "AND" => Some(15), + TokenKind::KEYWORD(s) if s == "ANY" => Some(16), + TokenKind::KEYWORD(s) if s == "ARRAY" => Some(17), + TokenKind::KEYWORD(s) if s == "AS" => Some(18), + TokenKind::KEYWORD(s) if s == "ASC" => Some(19), + TokenKind::KEYWORD(s) if s == "ASENSITIVE" => Some(20), + TokenKind::KEYWORD(s) if s == "ASSERTION" => Some(21), + TokenKind::KEYWORD(s) if s == "ASSIGNMENT" => Some(22), + TokenKind::KEYWORD(s) if s == "ASYMMETRIC" => Some(23), + TokenKind::KEYWORD(s) if s == "AT" => Some(24), + TokenKind::KEYWORD(s) if s == "ATOMIC" => Some(25), + TokenKind::KEYWORD(s) if s == "ATTACH" => Some(26), + TokenKind::KEYWORD(s) if s == "ATTRIBUTE" => Some(27), + TokenKind::KEYWORD(s) if s == "AUTHORIZATION" => Some(28), + TokenKind::KEYWORD(s) if s == "BACKWARD" => Some(29), + TokenKind::BCONST => Some(30), + TokenKind::KEYWORD(s) if s == "BEFORE" => Some(31), + TokenKind::KEYWORD(s) if s == "BEGIN_P" => Some(32), + TokenKind::KEYWORD(s) if s == "BETWEEN" => Some(33), + TokenKind::KEYWORD(s) if s == "BIGINT" => Some(34), + TokenKind::KEYWORD(s) if s == "BINARY" => Some(35), + TokenKind::KEYWORD(s) if s == "BIT" => Some(36), + TokenKind::KEYWORD(s) if s == "BOOLEAN_P" => Some(37), + TokenKind::KEYWORD(s) if s == "BOTH" => Some(38), + TokenKind::KEYWORD(s) if s == "BREADTH" => Some(39), + TokenKind::KEYWORD(s) if s == "BY" => Some(40), + TokenKind::KEYWORD(s) if s == "CACHE" => Some(41), + TokenKind::KEYWORD(s) if s == "CALL" => Some(42), + TokenKind::KEYWORD(s) if s == "CALLED" => Some(43), + TokenKind::KEYWORD(s) if s == "CASCADE" => Some(44), + TokenKind::KEYWORD(s) if s == "CASCADED" => Some(45), + TokenKind::KEYWORD(s) if s == "CASE" => Some(46), + TokenKind::KEYWORD(s) if s == "CAST" => Some(47), + TokenKind::KEYWORD(s) if s == "CATALOG_P" => Some(48), + TokenKind::KEYWORD(s) if s == "CHAIN" => Some(49), + TokenKind::KEYWORD(s) if s == "CHARACTER" => Some(50), + TokenKind::KEYWORD(s) if s == "CHARACTERISTICS" => Some(51), + TokenKind::KEYWORD(s) if s == "CHAR_P" => Some(52), + TokenKind::KEYWORD(s) if s == "CHECK" => Some(53), + TokenKind::KEYWORD(s) if s == "CHECKPOINT" => Some(54), + TokenKind::KEYWORD(s) if s == "CLASS" => Some(55), + TokenKind::KEYWORD(s) if s == "CLOSE" => Some(56), + TokenKind::KEYWORD(s) if s == "CLUSTER" => Some(57), + TokenKind::KEYWORD(s) if s == "COALESCE" => Some(58), + TokenKind::KEYWORD(s) if s == "COLLATE" => Some(59), + TokenKind::KEYWORD(s) if s == "COLLATION" => Some(60), + TokenKind::COLON_EQUALS => Some(61), + TokenKind::KEYWORD(s) if s == "COLUMN" => Some(62), + TokenKind::KEYWORD(s) if s == "COLUMNS" => Some(63), + TokenKind::KEYWORD(s) if s == "COMMENT" => Some(64), + TokenKind::KEYWORD(s) if s == "COMMENTS" => Some(65), + TokenKind::KEYWORD(s) if s == "COMMIT" => Some(66), + TokenKind::KEYWORD(s) if s == "COMMITTED" => Some(67), + TokenKind::KEYWORD(s) if s == "COMPRESSION" => Some(68), + TokenKind::KEYWORD(s) if s == "CONCURRENTLY" => Some(69), + TokenKind::KEYWORD(s) if s == "CONDITIONAL" => Some(70), + TokenKind::KEYWORD(s) if s == "CONFIGURATION" => Some(71), + TokenKind::KEYWORD(s) if s == "CONFLICT" => Some(72), + TokenKind::KEYWORD(s) if s == "CONNECTION" => Some(73), + TokenKind::KEYWORD(s) if s == "CONSTRAINT" => Some(74), + TokenKind::KEYWORD(s) if s == "CONSTRAINTS" => Some(75), + TokenKind::KEYWORD(s) if s == "CONTENT_P" => Some(76), + TokenKind::KEYWORD(s) if s == "CONTINUE_P" => Some(77), + TokenKind::KEYWORD(s) if s == "CONVERSION_P" => Some(78), + TokenKind::KEYWORD(s) if s == "COPY" => Some(79), + TokenKind::KEYWORD(s) if s == "COST" => Some(80), + TokenKind::KEYWORD(s) if s == "CREATE" => Some(81), + TokenKind::KEYWORD(s) if s == "CROSS" => Some(82), + TokenKind::KEYWORD(s) if s == "CSV" => Some(83), + TokenKind::KEYWORD(s) if s == "CUBE" => Some(84), + TokenKind::KEYWORD(s) if s == "CURRENT_CATALOG" => Some(85), + TokenKind::KEYWORD(s) if s == "CURRENT_DATE" => Some(86), + TokenKind::KEYWORD(s) if s == "CURRENT_P" => Some(87), + TokenKind::KEYWORD(s) if s == "CURRENT_ROLE" => Some(88), + TokenKind::KEYWORD(s) if s == "CURRENT_SCHEMA" => Some(89), + TokenKind::KEYWORD(s) if s == "CURRENT_TIME" => Some(90), + TokenKind::KEYWORD(s) if s == "CURRENT_TIMESTAMP" => Some(91), + TokenKind::KEYWORD(s) if s == "CURRENT_USER" => Some(92), + TokenKind::KEYWORD(s) if s == "CURSOR" => Some(93), + TokenKind::KEYWORD(s) if s == "CYCLE" => Some(94), + TokenKind::RAW(s) if s == "^" => Some(95), + TokenKind::RAW(s) if s == ":" => Some(96), + TokenKind::RAW(s) if s == "," => Some(97), + TokenKind::KEYWORD(s) if s == "DATABASE" => Some(98), + TokenKind::KEYWORD(s) if s == "DATA_P" => Some(99), + TokenKind::KEYWORD(s) if s == "DAY_P" => Some(100), + TokenKind::KEYWORD(s) if s == "DEALLOCATE" => Some(101), + TokenKind::KEYWORD(s) if s == "DEC" => Some(102), + TokenKind::KEYWORD(s) if s == "DECIMAL_P" => Some(103), + TokenKind::KEYWORD(s) if s == "DECLARE" => Some(104), + TokenKind::KEYWORD(s) if s == "DEFAULT" => Some(105), + TokenKind::KEYWORD(s) if s == "DEFAULTS" => Some(106), + TokenKind::KEYWORD(s) if s == "DEFERRABLE" => Some(107), + TokenKind::KEYWORD(s) if s == "DEFERRED" => Some(108), + TokenKind::KEYWORD(s) if s == "DEFINER" => Some(109), + TokenKind::KEYWORD(s) if s == "DELETE_P" => Some(110), + TokenKind::KEYWORD(s) if s == "DELIMITER" => Some(111), + TokenKind::KEYWORD(s) if s == "DELIMITERS" => Some(112), + TokenKind::KEYWORD(s) if s == "DEPENDS" => Some(113), + TokenKind::KEYWORD(s) if s == "DEPTH" => Some(114), + TokenKind::KEYWORD(s) if s == "DESC" => Some(115), + TokenKind::KEYWORD(s) if s == "DETACH" => Some(116), + TokenKind::KEYWORD(s) if s == "DICTIONARY" => Some(117), + TokenKind::KEYWORD(s) if s == "DISABLE_P" => Some(118), + TokenKind::KEYWORD(s) if s == "DISCARD" => Some(119), + TokenKind::KEYWORD(s) if s == "DISTINCT" => Some(120), + TokenKind::KEYWORD(s) if s == "DO" => Some(121), + TokenKind::KEYWORD(s) if s == "DOCUMENT_P" => Some(122), + TokenKind::KEYWORD(s) if s == "DOMAIN_P" => Some(123), + TokenKind::KEYWORD(s) if s == "DOUBLE_P" => Some(124), + TokenKind::KEYWORD(s) if s == "DROP" => Some(125), + TokenKind::RAW(s) if s == "$end" => Some(126), + TokenKind::RAW(s) if s == "." => Some(127), + TokenKind::KEYWORD(s) if s == "EACH" => Some(128), + TokenKind::KEYWORD(s) if s == "ELSE" => Some(129), + TokenKind::KEYWORD(s) if s == "EMPTY_P" => Some(130), + TokenKind::KEYWORD(s) if s == "ENABLE_P" => Some(131), + TokenKind::KEYWORD(s) if s == "ENCODING" => Some(132), + TokenKind::KEYWORD(s) if s == "ENCRYPTED" => Some(133), + TokenKind::KEYWORD(s) if s == "END_P" => Some(134), + TokenKind::KEYWORD(s) if s == "ENUM_P" => Some(135), + TokenKind::EQUALS_GREATER => Some(136), + TokenKind::KEYWORD(s) if s == "ERROR_P" => Some(137), + TokenKind::KEYWORD(s) if s == "ESCAPE" => Some(138), + TokenKind::KEYWORD(s) if s == "EVENT" => Some(139), + TokenKind::KEYWORD(s) if s == "EXCEPT" => Some(140), + TokenKind::KEYWORD(s) if s == "EXCLUDE" => Some(141), + TokenKind::KEYWORD(s) if s == "EXCLUDING" => Some(142), + TokenKind::KEYWORD(s) if s == "EXCLUSIVE" => Some(143), + TokenKind::KEYWORD(s) if s == "EXECUTE" => Some(144), + TokenKind::KEYWORD(s) if s == "EXISTS" => Some(145), + TokenKind::KEYWORD(s) if s == "EXPLAIN" => Some(146), + TokenKind::KEYWORD(s) if s == "EXPRESSION" => Some(147), + TokenKind::KEYWORD(s) if s == "EXTENSION" => Some(148), + TokenKind::KEYWORD(s) if s == "EXTERNAL" => Some(149), + TokenKind::KEYWORD(s) if s == "EXTRACT" => Some(150), + TokenKind::RAW(s) if s == "=" => Some(151), + TokenKind::KEYWORD(s) if s == "FALSE_P" => Some(152), + TokenKind::KEYWORD(s) if s == "FAMILY" => Some(153), + TokenKind::FCONST => Some(154), + TokenKind::KEYWORD(s) if s == "FETCH" => Some(155), + TokenKind::KEYWORD(s) if s == "FILTER" => Some(156), + TokenKind::KEYWORD(s) if s == "FINALIZE" => Some(157), + TokenKind::KEYWORD(s) if s == "FIRST_P" => Some(158), + TokenKind::KEYWORD(s) if s == "FLOAT_P" => Some(159), + TokenKind::KEYWORD(s) if s == "FOLLOWING" => Some(160), + TokenKind::KEYWORD(s) if s == "FOR" => Some(161), + TokenKind::KEYWORD(s) if s == "FORCE" => Some(162), + TokenKind::KEYWORD(s) if s == "FOREIGN" => Some(163), + TokenKind::KEYWORD(s) if s == "FORMAT" => Some(164), + TokenKind::KEYWORD(s) if s == "FORMAT_LA" => Some(165), + TokenKind::KEYWORD(s) if s == "FORWARD" => Some(166), + TokenKind::KEYWORD(s) if s == "FREEZE" => Some(167), + TokenKind::KEYWORD(s) if s == "FROM" => Some(168), + TokenKind::KEYWORD(s) if s == "FULL" => Some(169), + TokenKind::KEYWORD(s) if s == "FUNCTION" => Some(170), + TokenKind::KEYWORD(s) if s == "FUNCTIONS" => Some(171), + TokenKind::KEYWORD(s) if s == "GENERATED" => Some(172), + TokenKind::KEYWORD(s) if s == "GLOBAL" => Some(173), + TokenKind::KEYWORD(s) if s == "GRANT" => Some(174), + TokenKind::KEYWORD(s) if s == "GRANTED" => Some(175), + TokenKind::GREATER_EQUALS => Some(176), + TokenKind::KEYWORD(s) if s == "GREATEST" => Some(177), + TokenKind::KEYWORD(s) if s == "GROUPING" => Some(178), + TokenKind::KEYWORD(s) if s == "GROUPS" => Some(179), + TokenKind::KEYWORD(s) if s == "GROUP_P" => Some(180), + TokenKind::RAW(s) if s == ">" => Some(181), + TokenKind::KEYWORD(s) if s == "HANDLER" => Some(182), + TokenKind::KEYWORD(s) if s == "HAVING" => Some(183), + TokenKind::KEYWORD(s) if s == "HEADER_P" => Some(184), + TokenKind::KEYWORD(s) if s == "HOLD" => Some(185), + TokenKind::KEYWORD(s) if s == "HOUR_P" => Some(186), + TokenKind::ICONST => Some(187), + TokenKind::IDENT => Some(188), + TokenKind::KEYWORD(s) if s == "IDENTITY_P" => Some(189), + TokenKind::KEYWORD(s) if s == "IF_P" => Some(190), + TokenKind::KEYWORD(s) if s == "ILIKE" => Some(191), + TokenKind::KEYWORD(s) if s == "IMMEDIATE" => Some(192), + TokenKind::KEYWORD(s) if s == "IMMUTABLE" => Some(193), + TokenKind::KEYWORD(s) if s == "IMPLICIT_P" => Some(194), + TokenKind::KEYWORD(s) if s == "IMPORT_P" => Some(195), + TokenKind::KEYWORD(s) if s == "INCLUDE" => Some(196), + TokenKind::KEYWORD(s) if s == "INCLUDING" => Some(197), + TokenKind::KEYWORD(s) if s == "INCREMENT" => Some(198), + TokenKind::KEYWORD(s) if s == "INDENT" => Some(199), + TokenKind::KEYWORD(s) if s == "INDEX" => Some(200), + TokenKind::KEYWORD(s) if s == "INDEXES" => Some(201), + TokenKind::KEYWORD(s) if s == "INHERIT" => Some(202), + TokenKind::KEYWORD(s) if s == "INHERITS" => Some(203), + TokenKind::KEYWORD(s) if s == "INITIALLY" => Some(204), + TokenKind::KEYWORD(s) if s == "INLINE_P" => Some(205), + TokenKind::KEYWORD(s) if s == "INNER_P" => Some(206), + TokenKind::KEYWORD(s) if s == "INOUT" => Some(207), + TokenKind::KEYWORD(s) if s == "INPUT_P" => Some(208), + TokenKind::KEYWORD(s) if s == "INSENSITIVE" => Some(209), + TokenKind::KEYWORD(s) if s == "INSERT" => Some(210), + TokenKind::KEYWORD(s) if s == "INSTEAD" => Some(211), + TokenKind::KEYWORD(s) if s == "INTEGER" => Some(212), + TokenKind::KEYWORD(s) if s == "INTERSECT" => Some(213), + TokenKind::KEYWORD(s) if s == "INTERVAL" => Some(214), + TokenKind::KEYWORD(s) if s == "INTO" => Some(215), + TokenKind::KEYWORD(s) if s == "INT_P" => Some(216), + TokenKind::KEYWORD(s) if s == "INVOKER" => Some(217), + TokenKind::KEYWORD(s) if s == "IN_P" => Some(218), + TokenKind::KEYWORD(s) if s == "IS" => Some(219), + TokenKind::KEYWORD(s) if s == "ISNULL" => Some(220), + TokenKind::KEYWORD(s) if s == "ISOLATION" => Some(221), + TokenKind::KEYWORD(s) if s == "JOIN" => Some(222), + TokenKind::KEYWORD(s) if s == "JSON" => Some(223), + TokenKind::KEYWORD(s) if s == "JSON_ARRAY" => Some(224), + TokenKind::KEYWORD(s) if s == "JSON_ARRAYAGG" => Some(225), + TokenKind::KEYWORD(s) if s == "JSON_EXISTS" => Some(226), + TokenKind::KEYWORD(s) if s == "JSON_OBJECT" => Some(227), + TokenKind::KEYWORD(s) if s == "JSON_OBJECTAGG" => Some(228), + TokenKind::KEYWORD(s) if s == "JSON_QUERY" => Some(229), + TokenKind::KEYWORD(s) if s == "JSON_SCALAR" => Some(230), + TokenKind::KEYWORD(s) if s == "JSON_SERIALIZE" => Some(231), + TokenKind::KEYWORD(s) if s == "JSON_TABLE" => Some(232), + TokenKind::KEYWORD(s) if s == "JSON_VALUE" => Some(233), + TokenKind::KEYWORD(s) if s == "KEEP" => Some(234), + TokenKind::KEYWORD(s) if s == "KEY" => Some(235), + TokenKind::KEYWORD(s) if s == "KEYS" => Some(236), + TokenKind::KEYWORD(s) if s == "LABEL" => Some(237), + TokenKind::KEYWORD(s) if s == "LANGUAGE" => Some(238), + TokenKind::KEYWORD(s) if s == "LARGE_P" => Some(239), + TokenKind::KEYWORD(s) if s == "LAST_P" => Some(240), + TokenKind::KEYWORD(s) if s == "LATERAL_P" => Some(241), + TokenKind::RAW(s) if s == "[" => Some(242), + TokenKind::KEYWORD(s) if s == "LEADING" => Some(243), + TokenKind::KEYWORD(s) if s == "LEAKPROOF" => Some(244), + TokenKind::KEYWORD(s) if s == "LEAST" => Some(245), + TokenKind::KEYWORD(s) if s == "LEFT" => Some(246), + TokenKind::LESS_EQUALS => Some(247), + TokenKind::KEYWORD(s) if s == "LEVEL" => Some(248), + TokenKind::KEYWORD(s) if s == "LIKE" => Some(249), + TokenKind::KEYWORD(s) if s == "LIMIT" => Some(250), + TokenKind::KEYWORD(s) if s == "LISTEN" => Some(251), + TokenKind::KEYWORD(s) if s == "LOAD" => Some(252), + TokenKind::KEYWORD(s) if s == "LOCAL" => Some(253), + TokenKind::KEYWORD(s) if s == "LOCALTIME" => Some(254), + TokenKind::KEYWORD(s) if s == "LOCALTIMESTAMP" => Some(255), + TokenKind::KEYWORD(s) if s == "LOCATION" => Some(256), + TokenKind::KEYWORD(s) if s == "LOCKED" => Some(257), + TokenKind::KEYWORD(s) if s == "LOCK_P" => Some(258), + TokenKind::KEYWORD(s) if s == "LOGGED" => Some(259), + TokenKind::RAW(s) if s == "(" => Some(260), + TokenKind::RAW(s) if s == "<" => Some(261), + TokenKind::KEYWORD(s) if s == "MAPPING" => Some(262), + TokenKind::KEYWORD(s) if s == "MATCH" => Some(263), + TokenKind::KEYWORD(s) if s == "MATCHED" => Some(264), + TokenKind::KEYWORD(s) if s == "MATERIALIZED" => Some(265), + TokenKind::KEYWORD(s) if s == "MAXVALUE" => Some(266), + TokenKind::KEYWORD(s) if s == "MERGE" => Some(267), + TokenKind::KEYWORD(s) if s == "MERGE_ACTION" => Some(268), + TokenKind::KEYWORD(s) if s == "METHOD" => Some(269), + TokenKind::KEYWORD(s) if s == "MINUTE_P" => Some(270), + TokenKind::KEYWORD(s) if s == "MINVALUE" => Some(271), + TokenKind::KEYWORD(s) if s == "MODE" => Some(272), + TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN1" => Some(273), + TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN2" => Some(274), + TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_ASSIGN3" => Some(275), + TokenKind::KEYWORD(s) if s == "MODE_PLPGSQL_EXPR" => Some(276), + TokenKind::KEYWORD(s) if s == "MODE_TYPE_NAME" => Some(277), + TokenKind::KEYWORD(s) if s == "MONTH_P" => Some(278), + TokenKind::KEYWORD(s) if s == "MOVE" => Some(279), + TokenKind::RAW(s) if s == "-" => Some(280), + TokenKind::KEYWORD(s) if s == "NAMES" => Some(281), + TokenKind::KEYWORD(s) if s == "NAME_P" => Some(282), + TokenKind::KEYWORD(s) if s == "NATIONAL" => Some(283), + TokenKind::KEYWORD(s) if s == "NATURAL" => Some(284), + TokenKind::KEYWORD(s) if s == "NCHAR" => Some(285), + TokenKind::KEYWORD(s) if s == "NESTED" => Some(286), + TokenKind::KEYWORD(s) if s == "NEW" => Some(287), + TokenKind::KEYWORD(s) if s == "NEXT" => Some(288), + TokenKind::KEYWORD(s) if s == "NFC" => Some(289), + TokenKind::KEYWORD(s) if s == "NFD" => Some(290), + TokenKind::KEYWORD(s) if s == "NFKC" => Some(291), + TokenKind::KEYWORD(s) if s == "NFKD" => Some(292), + TokenKind::KEYWORD(s) if s == "NO" => Some(293), + TokenKind::KEYWORD(s) if s == "NONE" => Some(294), + TokenKind::KEYWORD(s) if s == "NORMALIZE" => Some(295), + TokenKind::KEYWORD(s) if s == "NORMALIZED" => Some(296), + TokenKind::KEYWORD(s) if s == "NOT" => Some(297), + TokenKind::KEYWORD(s) if s == "NOTHING" => Some(298), + TokenKind::KEYWORD(s) if s == "NOTIFY" => Some(299), + TokenKind::KEYWORD(s) if s == "NOTNULL" => Some(300), + TokenKind::NOT_EQUALS => Some(301), + TokenKind::KEYWORD(s) if s == "NOT_LA" => Some(302), + TokenKind::KEYWORD(s) if s == "NOWAIT" => Some(303), + TokenKind::KEYWORD(s) if s == "NULLIF" => Some(304), + TokenKind::KEYWORD(s) if s == "NULLS_LA" => Some(305), + TokenKind::KEYWORD(s) if s == "NULLS_P" => Some(306), + TokenKind::KEYWORD(s) if s == "NULL_P" => Some(307), + TokenKind::KEYWORD(s) if s == "NUMERIC" => Some(308), + TokenKind::KEYWORD(s) if s == "OBJECT_P" => Some(309), + TokenKind::KEYWORD(s) if s == "OF" => Some(310), + TokenKind::KEYWORD(s) if s == "OFF" => Some(311), + TokenKind::KEYWORD(s) if s == "OFFSET" => Some(312), + TokenKind::KEYWORD(s) if s == "OIDS" => Some(313), + TokenKind::KEYWORD(s) if s == "OLD" => Some(314), + TokenKind::KEYWORD(s) if s == "OMIT" => Some(315), + TokenKind::KEYWORD(s) if s == "ON" => Some(316), + TokenKind::KEYWORD(s) if s == "ONLY" => Some(317), + TokenKind::KEYWORD(s) if s == "OPERATOR" => Some(318), + TokenKind::KEYWORD(s) if s == "OPTION" => Some(319), + TokenKind::KEYWORD(s) if s == "OPTIONS" => Some(320), + TokenKind::KEYWORD(s) if s == "OR" => Some(321), + TokenKind::KEYWORD(s) if s == "ORDER" => Some(322), + TokenKind::KEYWORD(s) if s == "ORDINALITY" => Some(323), + TokenKind::KEYWORD(s) if s == "OTHERS" => Some(324), + TokenKind::KEYWORD(s) if s == "OUTER_P" => Some(325), + TokenKind::KEYWORD(s) if s == "OUT_P" => Some(326), + TokenKind::KEYWORD(s) if s == "OVER" => Some(327), + TokenKind::KEYWORD(s) if s == "OVERLAPS" => Some(328), + TokenKind::KEYWORD(s) if s == "OVERLAY" => Some(329), + TokenKind::KEYWORD(s) if s == "OVERRIDING" => Some(330), + TokenKind::KEYWORD(s) if s == "OWNED" => Some(331), + TokenKind::KEYWORD(s) if s == "OWNER" => Some(332), + TokenKind::Op => Some(333), + TokenKind::KEYWORD(s) if s == "PARALLEL" => Some(334), + TokenKind::PARAM => Some(335), + TokenKind::KEYWORD(s) if s == "PARAMETER" => Some(336), + TokenKind::KEYWORD(s) if s == "PARSER" => Some(337), + TokenKind::KEYWORD(s) if s == "PARTIAL" => Some(338), + TokenKind::KEYWORD(s) if s == "PARTITION" => Some(339), + TokenKind::KEYWORD(s) if s == "PASSING" => Some(340), + TokenKind::KEYWORD(s) if s == "PASSWORD" => Some(341), + TokenKind::KEYWORD(s) if s == "PATH" => Some(342), + TokenKind::KEYWORD(s) if s == "PLACING" => Some(343), + TokenKind::KEYWORD(s) if s == "PLAN" => Some(344), + TokenKind::KEYWORD(s) if s == "PLANS" => Some(345), + TokenKind::KEYWORD(s) if s == "POLICY" => Some(346), + TokenKind::KEYWORD(s) if s == "POSITION" => Some(347), + TokenKind::KEYWORD(s) if s == "PRECEDING" => Some(348), + TokenKind::KEYWORD(s) if s == "PRECISION" => Some(349), + TokenKind::KEYWORD(s) if s == "PREPARE" => Some(350), + TokenKind::KEYWORD(s) if s == "PREPARED" => Some(351), + TokenKind::KEYWORD(s) if s == "PRESERVE" => Some(352), + TokenKind::KEYWORD(s) if s == "PRIMARY" => Some(353), + TokenKind::KEYWORD(s) if s == "PRIOR" => Some(354), + TokenKind::KEYWORD(s) if s == "PRIVILEGES" => Some(355), + TokenKind::KEYWORD(s) if s == "PROCEDURAL" => Some(356), + TokenKind::KEYWORD(s) if s == "PROCEDURE" => Some(357), + TokenKind::KEYWORD(s) if s == "PROCEDURES" => Some(358), + TokenKind::KEYWORD(s) if s == "PROGRAM" => Some(359), + TokenKind::KEYWORD(s) if s == "PUBLICATION" => Some(360), + TokenKind::RAW(s) if s == "%" => Some(361), + TokenKind::RAW(s) if s == "+" => Some(362), + TokenKind::KEYWORD(s) if s == "QUOTE" => Some(363), + TokenKind::KEYWORD(s) if s == "QUOTES" => Some(364), + TokenKind::KEYWORD(s) if s == "RANGE" => Some(365), + TokenKind::RAW(s) if s == "]" => Some(366), + TokenKind::KEYWORD(s) if s == "READ" => Some(367), + TokenKind::KEYWORD(s) if s == "REAL" => Some(368), + TokenKind::KEYWORD(s) if s == "REASSIGN" => Some(369), + TokenKind::KEYWORD(s) if s == "RECHECK" => Some(370), + TokenKind::KEYWORD(s) if s == "RECURSIVE" => Some(371), + TokenKind::KEYWORD(s) if s == "REFERENCES" => Some(372), + TokenKind::KEYWORD(s) if s == "REFERENCING" => Some(373), + TokenKind::KEYWORD(s) if s == "REFRESH" => Some(374), + TokenKind::KEYWORD(s) if s == "REF_P" => Some(375), + TokenKind::KEYWORD(s) if s == "REINDEX" => Some(376), + TokenKind::KEYWORD(s) if s == "RELATIVE_P" => Some(377), + TokenKind::KEYWORD(s) if s == "RELEASE" => Some(378), + TokenKind::KEYWORD(s) if s == "RENAME" => Some(379), + TokenKind::KEYWORD(s) if s == "REPEATABLE" => Some(380), + TokenKind::KEYWORD(s) if s == "REPLACE" => Some(381), + TokenKind::KEYWORD(s) if s == "REPLICA" => Some(382), + TokenKind::KEYWORD(s) if s == "RESET" => Some(383), + TokenKind::KEYWORD(s) if s == "RESTART" => Some(384), + TokenKind::KEYWORD(s) if s == "RESTRICT" => Some(385), + TokenKind::KEYWORD(s) if s == "RETURN" => Some(386), + TokenKind::KEYWORD(s) if s == "RETURNING" => Some(387), + TokenKind::KEYWORD(s) if s == "RETURNS" => Some(388), + TokenKind::KEYWORD(s) if s == "REVOKE" => Some(389), + TokenKind::KEYWORD(s) if s == "RIGHT" => Some(390), + TokenKind::KEYWORD(s) if s == "ROLE" => Some(391), + TokenKind::KEYWORD(s) if s == "ROLLBACK" => Some(392), + TokenKind::KEYWORD(s) if s == "ROLLUP" => Some(393), + TokenKind::KEYWORD(s) if s == "ROUTINE" => Some(394), + TokenKind::KEYWORD(s) if s == "ROUTINES" => Some(395), + TokenKind::KEYWORD(s) if s == "ROW" => Some(396), + TokenKind::KEYWORD(s) if s == "ROWS" => Some(397), + TokenKind::RAW(s) if s == ")" => Some(398), + TokenKind::KEYWORD(s) if s == "RULE" => Some(399), + TokenKind::KEYWORD(s) if s == "SAVEPOINT" => Some(400), + TokenKind::KEYWORD(s) if s == "SCALAR" => Some(401), + TokenKind::KEYWORD(s) if s == "SCHEMA" => Some(402), + TokenKind::KEYWORD(s) if s == "SCHEMAS" => Some(403), + TokenKind::SCONST => Some(404), + TokenKind::KEYWORD(s) if s == "SCROLL" => Some(405), + TokenKind::KEYWORD(s) if s == "SEARCH" => Some(406), + TokenKind::KEYWORD(s) if s == "SECOND_P" => Some(407), + TokenKind::KEYWORD(s) if s == "SECURITY" => Some(408), + TokenKind::KEYWORD(s) if s == "SELECT" => Some(409), + TokenKind::KEYWORD(s) if s == "SEQUENCE" => Some(410), + TokenKind::KEYWORD(s) if s == "SEQUENCES" => Some(411), + TokenKind::KEYWORD(s) if s == "SERIALIZABLE" => Some(412), + TokenKind::KEYWORD(s) if s == "SERVER" => Some(413), + TokenKind::KEYWORD(s) if s == "SESSION" => Some(414), + TokenKind::KEYWORD(s) if s == "SESSION_USER" => Some(415), + TokenKind::KEYWORD(s) if s == "SET" => Some(416), + TokenKind::KEYWORD(s) if s == "SETOF" => Some(417), + TokenKind::KEYWORD(s) if s == "SETS" => Some(418), + TokenKind::KEYWORD(s) if s == "SHARE" => Some(419), + TokenKind::KEYWORD(s) if s == "SHOW" => Some(420), + TokenKind::KEYWORD(s) if s == "SIMILAR" => Some(421), + TokenKind::KEYWORD(s) if s == "SIMPLE" => Some(422), + TokenKind::KEYWORD(s) if s == "SKIP" => Some(423), + TokenKind::KEYWORD(s) if s == "SMALLINT" => Some(424), + TokenKind::KEYWORD(s) if s == "SNAPSHOT" => Some(425), + TokenKind::KEYWORD(s) if s == "SOME" => Some(426), + TokenKind::KEYWORD(s) if s == "SOURCE" => Some(427), + TokenKind::KEYWORD(s) if s == "SQL_P" => Some(428), + TokenKind::KEYWORD(s) if s == "STABLE" => Some(429), + TokenKind::KEYWORD(s) if s == "STANDALONE_P" => Some(430), + TokenKind::KEYWORD(s) if s == "START" => Some(431), + TokenKind::KEYWORD(s) if s == "STATEMENT" => Some(432), + TokenKind::KEYWORD(s) if s == "STATISTICS" => Some(433), + TokenKind::KEYWORD(s) if s == "STDIN" => Some(434), + TokenKind::KEYWORD(s) if s == "STDOUT" => Some(435), + TokenKind::KEYWORD(s) if s == "STORAGE" => Some(436), + TokenKind::KEYWORD(s) if s == "STORED" => Some(437), + TokenKind::KEYWORD(s) if s == "STRICT_P" => Some(438), + TokenKind::KEYWORD(s) if s == "STRING_P" => Some(439), + TokenKind::KEYWORD(s) if s == "STRIP_P" => Some(440), + TokenKind::KEYWORD(s) if s == "SUBSCRIPTION" => Some(441), + TokenKind::KEYWORD(s) if s == "SUBSTRING" => Some(442), + TokenKind::KEYWORD(s) if s == "SUPPORT" => Some(443), + TokenKind::KEYWORD(s) if s == "SYMMETRIC" => Some(444), + TokenKind::KEYWORD(s) if s == "SYSID" => Some(445), + TokenKind::KEYWORD(s) if s == "SYSTEM_P" => Some(446), + TokenKind::KEYWORD(s) if s == "SYSTEM_USER" => Some(447), + TokenKind::RAW(s) if s == ";" => Some(448), + TokenKind::RAW(s) if s == "/" => Some(449), + TokenKind::RAW(s) if s == "*" => Some(450), + TokenKind::KEYWORD(s) if s == "TABLE" => Some(451), + TokenKind::KEYWORD(s) if s == "TABLES" => Some(452), + TokenKind::KEYWORD(s) if s == "TABLESAMPLE" => Some(453), + TokenKind::KEYWORD(s) if s == "TABLESPACE" => Some(454), + TokenKind::KEYWORD(s) if s == "TARGET" => Some(455), + TokenKind::KEYWORD(s) if s == "TEMP" => Some(456), + TokenKind::KEYWORD(s) if s == "TEMPLATE" => Some(457), + TokenKind::KEYWORD(s) if s == "TEMPORARY" => Some(458), + TokenKind::KEYWORD(s) if s == "TEXT_P" => Some(459), + TokenKind::KEYWORD(s) if s == "THEN" => Some(460), + TokenKind::KEYWORD(s) if s == "TIES" => Some(461), + TokenKind::KEYWORD(s) if s == "TIME" => Some(462), + TokenKind::KEYWORD(s) if s == "TIMESTAMP" => Some(463), + TokenKind::KEYWORD(s) if s == "TO" => Some(464), + TokenKind::KEYWORD(s) if s == "TRAILING" => Some(465), + TokenKind::KEYWORD(s) if s == "TRANSACTION" => Some(466), + TokenKind::KEYWORD(s) if s == "TRANSFORM" => Some(467), + TokenKind::KEYWORD(s) if s == "TREAT" => Some(468), + TokenKind::KEYWORD(s) if s == "TRIGGER" => Some(469), + TokenKind::KEYWORD(s) if s == "TRIM" => Some(470), + TokenKind::KEYWORD(s) if s == "TRUE_P" => Some(471), + TokenKind::KEYWORD(s) if s == "TRUNCATE" => Some(472), + TokenKind::KEYWORD(s) if s == "TRUSTED" => Some(473), + TokenKind::TYPECAST => Some(474), + TokenKind::KEYWORD(s) if s == "TYPES_P" => Some(475), + TokenKind::KEYWORD(s) if s == "TYPE_P" => Some(476), + TokenKind::KEYWORD(s) if s == "UESCAPE" => Some(477), + TokenKind::KEYWORD(s) if s == "UMINUS" => Some(478), + TokenKind::KEYWORD(s) if s == "UNBOUNDED" => Some(479), + TokenKind::KEYWORD(s) if s == "UNCOMMITTED" => Some(480), + TokenKind::KEYWORD(s) if s == "UNCONDITIONAL" => Some(481), + TokenKind::KEYWORD(s) if s == "UNENCRYPTED" => Some(482), + TokenKind::KEYWORD(s) if s == "UNION" => Some(483), + TokenKind::KEYWORD(s) if s == "UNIQUE" => Some(484), + TokenKind::KEYWORD(s) if s == "UNKNOWN" => Some(485), + TokenKind::KEYWORD(s) if s == "UNLISTEN" => Some(486), + TokenKind::KEYWORD(s) if s == "UNLOGGED" => Some(487), + TokenKind::KEYWORD(s) if s == "UNTIL" => Some(488), + TokenKind::KEYWORD(s) if s == "UPDATE" => Some(489), + TokenKind::KEYWORD(s) if s == "USER" => Some(490), + TokenKind::KEYWORD(s) if s == "USING" => Some(491), + TokenKind::KEYWORD(s) if s == "VACUUM" => Some(492), + TokenKind::KEYWORD(s) if s == "VALID" => Some(493), + TokenKind::KEYWORD(s) if s == "VALIDATE" => Some(494), + TokenKind::KEYWORD(s) if s == "VALIDATOR" => Some(495), + TokenKind::KEYWORD(s) if s == "VALUES" => Some(496), + TokenKind::KEYWORD(s) if s == "VALUE_P" => Some(497), + TokenKind::KEYWORD(s) if s == "VARCHAR" => Some(498), + TokenKind::KEYWORD(s) if s == "VARIADIC" => Some(499), + TokenKind::KEYWORD(s) if s == "VARYING" => Some(500), + TokenKind::KEYWORD(s) if s == "VERBOSE" => Some(501), + TokenKind::KEYWORD(s) if s == "VERSION_P" => Some(502), + TokenKind::KEYWORD(s) if s == "VIEW" => Some(503), + TokenKind::KEYWORD(s) if s == "VIEWS" => Some(504), + TokenKind::KEYWORD(s) if s == "VOLATILE" => Some(505), + TokenKind::KEYWORD(s) if s == "WHEN" => Some(506), + TokenKind::KEYWORD(s) if s == "WHERE" => Some(507), + TokenKind::KEYWORD(s) if s == "WHITESPACE_P" => Some(508), + TokenKind::KEYWORD(s) if s == "WINDOW" => Some(509), + TokenKind::KEYWORD(s) if s == "WITH" => Some(510), + TokenKind::KEYWORD(s) if s == "WITHIN" => Some(511), + TokenKind::KEYWORD(s) if s == "WITHOUT" => Some(512), + TokenKind::KEYWORD(s) if s == "WITHOUT_LA" => Some(513), + TokenKind::KEYWORD(s) if s == "WITH_LA" => Some(514), + TokenKind::KEYWORD(s) if s == "WORK" => Some(515), + TokenKind::KEYWORD(s) if s == "WRAPPER" => Some(516), + TokenKind::KEYWORD(s) if s == "WRITE" => Some(517), + TokenKind::XCONST => Some(518), + TokenKind::KEYWORD(s) if s == "XMLATTRIBUTES" => Some(519), + TokenKind::KEYWORD(s) if s == "XMLCONCAT" => Some(520), + TokenKind::KEYWORD(s) if s == "XMLELEMENT" => Some(521), + TokenKind::KEYWORD(s) if s == "XMLEXISTS" => Some(522), + TokenKind::KEYWORD(s) if s == "XMLFOREST" => Some(523), + TokenKind::KEYWORD(s) if s == "XMLNAMESPACES" => Some(524), + TokenKind::KEYWORD(s) if s == "XMLPARSE" => Some(525), + TokenKind::KEYWORD(s) if s == "XMLPI" => Some(526), + TokenKind::KEYWORD(s) if s == "XMLROOT" => Some(527), + TokenKind::KEYWORD(s) if s == "XMLSERIALIZE" => Some(528), + TokenKind::KEYWORD(s) if s == "XMLTABLE" => Some(529), + TokenKind::KEYWORD(s) if s == "XML_P" => Some(530), + TokenKind::KEYWORD(s) if s == "YEAR_P" => Some(531), + TokenKind::KEYWORD(s) if s == "YES_P" => Some(532), + TokenKind::KEYWORD(s) if s == "ZONE" => Some(533), + TokenKind::C_COMMENT => Some(1262), + TokenKind::SQL_COMMENT => Some(1263), + _ => None, } } From 5a77e6974aed8f2e2cf617dead72b340d9b87fe3 Mon Sep 17 00:00:00 2001 From: Taishi Naka <62321668+lemonadern@users.noreply.github.com> Date: Tue, 23 Jun 2026 18:08:08 +0900 Subject: [PATCH 2/2] fix: address parser-generator clippy warning --- .../parser-generator/src/parser_generator.rs | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/crates/parser-generator/src/parser_generator.rs b/crates/parser-generator/src/parser_generator.rs index e84c682..4dc7417 100644 --- a/crates/parser-generator/src/parser_generator.rs +++ b/crates/parser-generator/src/parser_generator.rs @@ -286,29 +286,30 @@ fn generate_parser_source_code( .iter() .enumerate() .map(|(i, s)| { + let token_pattern = match s { + Component::Terminal(TokenKind::RAW(s)) => { + format!(r#"RAW(s) if s == "{}""#, s.trim_matches('\'')) + } + Component::Terminal(TokenKind::KEYWORD(s)) => { + format!(r#"KEYWORD(s) if s == "{s}""#) + } + Component::Terminal(s) => s.to_id(), + _ => unreachable!(), + }; + let component_id = if matches!( + s, + Component::Terminal(TokenKind::C_COMMENT) + | Component::Terminal(TokenKind::SQL_COMMENT) + ) { + // Comments are not included in the parser lookahead tokens, so offset them by the number of non-terminal symbols + i + non_terminal_symbols.len() + } else { + i + }; format!( - r#"TokenKind::{} => {},"#, - match s { - Component::Terminal(TokenKind::RAW(s)) => - format!(r#"RAW(s) if s == "{}""#, s.trim_matches('\'')), - Component::Terminal(TokenKind::KEYWORD(s)) => - format!(r#"KEYWORD(s) if s == "{s}""#), - Component::Terminal(s) => s.to_id(), - _ => unreachable!(), - }, - format!( - "Some({})", - if matches!( - s, - Component::Terminal(TokenKind::C_COMMENT) - | Component::Terminal(TokenKind::SQL_COMMENT) - ) { - // Comments are not included in the parser lookahead tokens, so offset them by the number of non-terminal symbols - i + non_terminal_symbols.len() - } else { - i - } - ) + r#"TokenKind::{} => Some({}),"#, + token_pattern, + component_id, ) }) .collect::>()