feat(lexer): extend Lexer and Token
This commit is contained in:
1 parent
bff836d5b9
commit
cfabe95271
2 files changed
+104
-5
No files matched your search
Binary file not shown.
@@ -3,14 +3,28 @@ package kestrel.sql.lexer
|
||||
enum class TokenType {
|
||||
Identifier, IntLiteral, RealLiteral, TextLiteral,
|
||||
Create, Table, Insert, Into, Values, Select, From, Where,
|
||||
Order, By, Asc, Desc, Limit, Delete, Update, Set, Drop,
|
||||
Order, By, Asc, Desc, Limit, Offset, Delete, Update, Set, Drop, Truncate, Identity, Continue,
|
||||
Alter, Add, Column, Rename, To, Default,
|
||||
And, Or, Not, Null, True, False, Primary, Key, As,
|
||||
Index, On, Inner, Left, Outer, Join, Group, Having,
|
||||
Begin, Commit, Rollback, Transaction, Explain,
|
||||
Integer, Text, Boolean, Real,
|
||||
Index, On, Inner, Left, Right, Full, Cross, Outer, Join, Lateral, Group, Having, Over, Partition,
|
||||
Rows, Row, Range, Groups, Preceding, Following, Unbounded, Current, Exclude, Ties, Others,
|
||||
Begin, Commit, Rollback, Transaction, Explain, Savepoint, Release,
|
||||
Conflict, Nothing, Do, Returning,
|
||||
Trigger, Before, After, For, Each,
|
||||
Is, In, Between, Like, Case, When, Then, Else, End, Exists, View, Replace,
|
||||
Union, All, Intersect, Except, With, Recursive, Distinct,
|
||||
Cast, Cascade, Restrict, References, Foreign, Check, No, Action, Unique, Constraint,
|
||||
Sequence, Increment, Minvalue, Maxvalue, Start, Cycle, Restart,
|
||||
Merge, Using, Matched,
|
||||
Prepare, Execute, Deallocate,
|
||||
Temp, Temporary,
|
||||
Collate,
|
||||
Integer, Text, Boolean, Real, Decimal, Date,
|
||||
Equal, NotEqual, Less, LessEqual, Greater, GreaterEqual,
|
||||
Plus, Minus, Star, Slash, Dot,
|
||||
LeftParen, RightParen, Comma, Semicolon,
|
||||
/** `$1`, `$2`, ... - see [kestrel.sql.ast.ParameterExpression]. [Token.intValue] carries the 1-based index. */
|
||||
Parameter,
|
||||
EndOfInput
|
||||
}
|
||||
|
||||
@@ -38,10 +52,20 @@ internal val keywords: Map<String, TokenType> = 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<String, TokenType> = 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
|
||||
)
|
||||
Reference in new issue
Block a user