Skip to main content

cmake_tidy_lexer/
token.rs

1use cmake_tidy_ast::TextRange;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct Token {
5    pub kind: TokenKind,
6    pub range: TextRange,
7}
8
9impl Token {
10    #[must_use]
11    pub const fn new(kind: TokenKind, range: TextRange) -> Self {
12        Self { kind, range }
13    }
14}
15
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub enum TokenKind {
18    Identifier(String),
19    UnquotedArgument(String),
20    QuotedArgument(String),
21    BracketArgument(String),
22    LeftParen,
23    RightParen,
24    Comment(String),
25    Whitespace(String),
26    Newline,
27}
28
29impl TokenKind {
30    #[must_use]
31    pub const fn is_trivia(&self) -> bool {
32        matches!(self, Self::Comment(_) | Self::Whitespace(_) | Self::Newline)
33    }
34}