oak_dot/parser/
element_type.rs1use oak_core::{ElementType, Parser, UniversalElementRole};
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 DotElementType {
9 Identifier,
11 String,
12 Number,
13 Whitespace,
14 Newline,
15
16 Graph,
18 Digraph,
19 Subgraph,
20 Node,
21 Edge,
22 Strict,
23
24 Arrow, Line, Equal, Semicolon, Comma, LeftBrace, RightBrace, LeftBracket, RightBracket, LeftParen, RightParen, Comment,
41
42 Root,
44 Error,
45 Eof,
46}
47
48impl ElementType for DotElementType {
49 type Role = UniversalElementRole;
50
51 fn role(&self) -> Self::Role {
52 match self {
53 _ => UniversalElementRole::None,
54 }
55 }
56}
57
58impl From<crate::lexer::token_type::DotTokenType> for DotElementType {
59 fn from(token: crate::lexer::token_type::DotTokenType) -> Self {
60 unsafe { std::mem::transmute(token) }
61 }
62}