oak_d2/lexer/
token_type.rs1use oak_core::{TokenType, UniversalTokenRole};
2#[cfg(feature = "serde")]
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
7#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
8#[repr(u8)]
9pub enum D2TokenType {
10 Whitespace,
12 Newline,
14 Comment,
16
17 Id,
19 Label,
21 Colon,
23 Arrow,
25 LeftBrace,
27 RightBrace,
29
30 Error,
32}
33
34impl TokenType for D2TokenType {
35 type Role = UniversalTokenRole;
36 const END_OF_STREAM: Self = Self::Error;
37
38 fn is_ignored(&self) -> bool {
39 matches!(self, Self::Whitespace | Self::Newline | Self::Comment)
40 }
41
42 fn role(&self) -> Self::Role {
43 match self {
44 _ => UniversalTokenRole::None,
45 }
46 }
47}