sql_dialect_fmt_lexer/
token.rs1use sql_dialect_fmt_syntax::SyntaxKind;
4
5#[derive(Clone, Copy, PartialEq, Eq, Debug)]
7pub struct Token<'a> {
8 pub kind: SyntaxKind,
9 pub text: &'a str,
10}
11
12#[derive(Clone, PartialEq, Eq, Debug)]
14pub struct LexError {
15 pub message: String,
16 pub offset: usize,
18 pub len: usize,
21}
22
23impl LexError {
24 pub fn range(&self) -> std::ops::Range<usize> {
26 self.offset..self.offset + self.len
27 }
28}
29
30impl std::fmt::Display for LexError {
31 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
32 write!(f, "{} at byte {}", self.message, self.offset)
33 }
34}
35
36impl std::error::Error for LexError {}
37
38#[derive(Clone, Debug, Default)]
40pub struct Lexed<'a> {
41 pub tokens: Vec<Token<'a>>,
42 pub errors: Vec<LexError>,
43}