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