From cfabe95271c64081e0f08fe3567f6552f142c967 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Wed, 2 Sep 2026 21:03:13 +0200 Subject: [PATCH] feat(lexer): extend Lexer and Token --- src/main/kotlin/kestrel/sql/lexer/Lexer.kt | Bin 5805 -> 6468 bytes src/main/kotlin/kestrel/sql/lexer/Token.kt | 109 ++++++++++++++++++++- 2 files changed, 104 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/kestrel/sql/lexer/Lexer.kt b/src/main/kotlin/kestrel/sql/lexer/Lexer.kt index 3ff538001145b77f2b67a9c3e72007955231f053..b1094aa1ea71b4ad337aeef3fc30c2038876ac0f 100644 GIT binary patch delta 294 zcmXv}y-LGS7#-Bm#wI!hf6(Ex1X5y>(jtz6LkDpQogI2@zSN7!%_X@lEfhMriuf(Q zgd+F~E>3pyDFh$EE7CKZ<#7IPEhJ=r}0+uSh$#ZG3 = mapOf( "ASC" to TokenType.Asc, "DESC" to TokenType.Desc, "LIMIT" to TokenType.Limit, + "OFFSET" to TokenType.Offset, "DELETE" to TokenType.Delete, "UPDATE" to TokenType.Update, "SET" to TokenType.Set, "DROP" to TokenType.Drop, + "TRUNCATE" to TokenType.Truncate, + "IDENTITY" to TokenType.Identity, + "CONTINUE" to TokenType.Continue, + "ALTER" to TokenType.Alter, + "ADD" to TokenType.Add, + "COLUMN" to TokenType.Column, + "RENAME" to TokenType.Rename, + "TO" to TokenType.To, + "DEFAULT" to TokenType.Default, "AND" to TokenType.And, "OR" to TokenType.Or, "NOT" to TokenType.Not, @@ -55,17 +79,92 @@ internal val keywords: Map = mapOf( "ON" to TokenType.On, "INNER" to TokenType.Inner, "LEFT" to TokenType.Left, + "RIGHT" to TokenType.Right, + "FULL" to TokenType.Full, + "CROSS" to TokenType.Cross, "OUTER" to TokenType.Outer, "JOIN" to TokenType.Join, + "LATERAL" to TokenType.Lateral, "GROUP" to TokenType.Group, "HAVING" to TokenType.Having, + "OVER" to TokenType.Over, + "PARTITION" to TokenType.Partition, + "ROWS" to TokenType.Rows, + "ROW" to TokenType.Row, + "RANGE" to TokenType.Range, + "GROUPS" to TokenType.Groups, + "PRECEDING" to TokenType.Preceding, + "FOLLOWING" to TokenType.Following, + "UNBOUNDED" to TokenType.Unbounded, + "CURRENT" to TokenType.Current, + "EXCLUDE" to TokenType.Exclude, + "TIES" to TokenType.Ties, + "OTHERS" to TokenType.Others, "BEGIN" to TokenType.Begin, "COMMIT" to TokenType.Commit, "ROLLBACK" to TokenType.Rollback, "TRANSACTION" to TokenType.Transaction, "EXPLAIN" to TokenType.Explain, + "SAVEPOINT" to TokenType.Savepoint, + "RELEASE" to TokenType.Release, + "CONFLICT" to TokenType.Conflict, + "NOTHING" to TokenType.Nothing, + "DO" to TokenType.Do, + "RETURNING" to TokenType.Returning, + "TRIGGER" to TokenType.Trigger, + "BEFORE" to TokenType.Before, + "AFTER" to TokenType.After, + "FOR" to TokenType.For, + "EACH" to TokenType.Each, "INTEGER" to TokenType.Integer, "TEXT" to TokenType.Text, "BOOLEAN" to TokenType.Boolean, - "REAL" to TokenType.Real + "REAL" to TokenType.Real, + "IS" to TokenType.Is, + "IN" to TokenType.In, + "BETWEEN" to TokenType.Between, + "LIKE" to TokenType.Like, + "CASE" to TokenType.Case, + "WHEN" to TokenType.When, + "THEN" to TokenType.Then, + "ELSE" to TokenType.Else, + "END" to TokenType.End, + "EXISTS" to TokenType.Exists, + "VIEW" to TokenType.View, + "REPLACE" to TokenType.Replace, + "UNION" to TokenType.Union, + "ALL" to TokenType.All, + "INTERSECT" to TokenType.Intersect, + "EXCEPT" to TokenType.Except, + "WITH" to TokenType.With, + "RECURSIVE" to TokenType.Recursive, + "DISTINCT" to TokenType.Distinct, + "CAST" to TokenType.Cast, + "CASCADE" to TokenType.Cascade, + "RESTRICT" to TokenType.Restrict, + "DECIMAL" to TokenType.Decimal, + "DATE" to TokenType.Date, + "REFERENCES" to TokenType.References, + "FOREIGN" to TokenType.Foreign, + "CHECK" to TokenType.Check, + "NO" to TokenType.No, + "ACTION" to TokenType.Action, + "UNIQUE" to TokenType.Unique, + "CONSTRAINT" to TokenType.Constraint, + "SEQUENCE" to TokenType.Sequence, + "INCREMENT" to TokenType.Increment, + "MINVALUE" to TokenType.Minvalue, + "MAXVALUE" to TokenType.Maxvalue, + "START" to TokenType.Start, + "CYCLE" to TokenType.Cycle, + "RESTART" to TokenType.Restart, + "MERGE" to TokenType.Merge, + "USING" to TokenType.Using, + "MATCHED" to TokenType.Matched, + "PREPARE" to TokenType.Prepare, + "EXECUTE" to TokenType.Execute, + "DEALLOCATE" to TokenType.Deallocate, + "TEMP" to TokenType.Temp, + "TEMPORARY" to TokenType.Temporary, + "COLLATE" to TokenType.Collate )