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)]
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
7#[repr(u8)]
8pub enum D2TokenType {
9 Whitespace,
10 Newline,
11 Comment,
12
13 Id,
14 Label,
15 Colon,
16 Arrow,
17 LeftBrace,
18 RightBrace,
19
20 Error,
21}
22
23impl TokenType for D2TokenType {
24 type Role = UniversalTokenRole;
25 const END_OF_STREAM: Self = Self::Error;
26
27 fn is_ignored(&self) -> bool {
28 matches!(self, Self::Whitespace | Self::Newline | Self::Comment)
29 }
30
31 fn role(&self) -> Self::Role {
32 match self {
33 _ => UniversalTokenRole::None,
34 }
35 }
36}