alopex_sql/tokenizer/
token.rs

1use super::keyword::Keyword;
2use crate::ast::span::Span;
3
4/// Alopex SQL token.
5#[derive(Debug, Clone, PartialEq)]
6pub enum Token {
7    EOF,
8
9    /// Keywords or identifiers.
10    Word(Word),
11
12    /// Literals.
13    Number(String),
14    SingleQuotedString(String),
15
16    /// Operators and punctuation.
17    Comma,
18    Eq,
19    Neq,
20    Lt,
21    Gt,
22    LtEq,
23    GtEq,
24    Plus,
25    Minus,
26    Mul,
27    Div,
28    Mod,
29    LParen,
30    RParen,
31    LBracket,
32    RBracket,
33    Period,
34    Colon,
35    SemiColon,
36    StringConcat,
37}
38
39/// Word token (identifier or keyword).
40#[derive(Debug, Clone, PartialEq)]
41pub struct Word {
42    pub value: String,
43    pub quote_style: Option<char>, // Not used in v0.1 (no quoted identifiers)
44    pub keyword: Keyword,
45}
46
47/// Token with attached span information.
48#[derive(Debug, Clone, PartialEq)]
49pub struct TokenWithSpan {
50    pub token: Token,
51    pub span: Span,
52}