dbml_language_server/analysis/
token.rs1use std::ops::Range;
3
4pub type Span = Range<usize>;
5
6#[derive(Debug, Clone, PartialEq, Eq, Hash)]
7pub enum Token {
8 Table,
10 Ref,
11 Enum,
12 Project,
13 Note,
14 Indexes,
15 As,
16
17 Pk,
19 NotNull,
20 Null,
21 Unique,
22 Increment,
23 Default,
24
25 Lt, Gt, Minus, LtGt, Colon, Dot, LBrace, RBrace, LBracket, RBracket, LParen, RParen, Comma, Identifier(String),
44 StringLiteral(String),
45 NumericLiteral(String),
46 BoolLiteral(bool),
47
48 #[allow(dead_code)]
50 Eof,
51}
52
53impl Token {
54 #[allow(dead_code)]
55 pub fn is_keyword(&self) -> bool {
56 matches!(
57 self,
58 Token::Table
59 | Token::Ref
60 | Token::Enum
61 | Token::Project
62 | Token::Note
63 | Token::Indexes
64 | Token::As
65 | Token::Pk
66 | Token::NotNull
67 | Token::Null
68 | Token::Unique
69 | Token::Increment
70 | Token::Default
71 )
72 }
73}
74
75#[derive(Debug, Clone)]
76#[allow(dead_code)]
77pub struct SpannedToken {
78 pub token: Token,
79 pub span: Span,
80}