oak_solidity/lexer/
token_type.rs1use oak_core::{TokenType, UniversalTokenRole};
2
3#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6pub enum SolidityTokenType {
7 Eof,
9 Whitespace,
11 Comment,
13 Identifier,
15 String,
17 Number,
19 Pragma,
21 Contract,
23}
24
25impl TokenType for SolidityTokenType {
26 type Role = UniversalTokenRole;
27 const END_OF_STREAM: Self = Self::Eof;
28
29 fn is_ignored(&self) -> bool {
30 matches!(self, Self::Whitespace | Self::Comment)
31 }
32
33 fn role(&self) -> Self::Role {
34 match self {
35 Self::Eof => UniversalTokenRole::Eof,
36 Self::Whitespace => UniversalTokenRole::Whitespace,
37 Self::Comment => UniversalTokenRole::Comment,
38 Self::Identifier => UniversalTokenRole::Name,
39 Self::String | Self::Number => UniversalTokenRole::Literal,
40 Self::Pragma | Self::Contract => UniversalTokenRole::Keyword,
41 }
42 }
43}