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 Delete,
27 Update,
28 Cascade,
29 Restrict,
30 NoAction,
31 SetNull,
32 SetDefault,
33
34 Lt, Gt, Minus, LtGt, Colon, Dot, LBrace, RBrace, LBracket, RBracket, LParen, RParen, Comma, Identifier(String),
53 StringLiteral(String),
54 NumericLiteral(String),
55 BoolLiteral(bool),
56
57 #[allow(dead_code)]
59 Eof,
60}
61
62impl Token {
63 #[allow(dead_code)]
64 pub fn is_keyword(&self) -> bool {
65 matches!(
66 self,
67 Token::Table
68 | Token::Ref
69 | Token::Enum
70 | Token::Project
71 | Token::Note
72 | Token::Indexes
73 | Token::As
74 | Token::Pk
75 | Token::NotNull
76 | Token::Null
77 | Token::Unique
78 | Token::Increment
79 | Token::Default
80 | Token::Delete
81 | Token::Update
82 | Token::Cascade
83 | Token::Restrict
84 | Token::NoAction
85 | Token::SetNull
86 | Token::SetDefault
87 )
88 }
89}
90
91#[derive(Debug, Clone)]
92#[allow(dead_code)]
93pub struct SpannedToken {
94 pub token: Token,
95 pub span: Span,
96}