glsl_lang_pp/lexer/pre/
token.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2#[allow(non_camel_case_types, clippy::upper_case_acronyms)]
3#[repr(u16)]
4pub enum Token {
5 IDENT_KW = 1,
7 DEFINED = 2,
9 DIGITS = 3,
11 PERIOD = 4,
13 PLUS = 5,
15 DASH = 6,
17 SLASH = 7,
19 ASTERISK = 8,
21 PERCENT = 9,
23 LANGLE = 10,
25 RANGLE = 11,
27 LBRACKET = 12,
29 RBRACKET = 13,
31 LPAREN = 14,
33 RPAREN = 15,
35 LBRACE = 16,
37 RBRACE = 17,
39 CARET = 18,
41 BAR = 19,
43 AMPERSAND = 20,
45 TILDE = 21,
47 EQUAL = 22,
49 BANG = 23,
51 COLON = 24,
53 SEMICOLON = 25,
55 COMMA = 26,
57 QUESTION = 27,
59 HASH = 28,
61 QUOTE_STRING = 29,
63 ANGLE_STRING = 30,
65 BACKSLASH = 31,
67 WS = 32,
69 NEWLINE = 33,
71 COMMENT = 34,
73 LINECONT = 35,
75 ERROR = 36,
77}
78
79impl Token {
80 pub fn is_trivia(&self) -> bool {
81 matches!(self, Self::LINECONT | Self::WS | Self::COMMENT)
82 }
83
84 pub fn from_punct(raw: &str) -> Self {
85 use Token::*;
86
87 match raw {
88 "." => PERIOD,
89 "+" => PLUS,
90 "-" => DASH,
91 "/" => SLASH,
92 "*" => ASTERISK,
93 "%" => PERCENT,
94 "<" => LANGLE,
95 ">" => RANGLE,
96 "[" => LBRACKET,
97 "]" => RBRACKET,
98 "(" => LPAREN,
99 ")" => RPAREN,
100 "{" => LBRACE,
101 "}" => RBRACE,
102 "^" => CARET,
103 "|" => BAR,
104 "&" => AMPERSAND,
105 "~" => TILDE,
106 "=" => EQUAL,
107 "!" => BANG,
108 ":" => COLON,
109 ";" => SEMICOLON,
110 "," => COMMA,
111 "?" => QUESTION,
112 "#" => HASH,
113 _ => ERROR,
114 }
115 }
116}