glsl_lang_pp/lexer/glue/
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,
14    PLUS = 5,
16    DASH = 6,
18    SLASH = 7,
20    ASTERISK = 8,
22    PERCENT = 9,
24    LANGLE = 10,
26    RANGLE = 11,
28    LBRACKET = 12,
30    RBRACKET = 13,
32    LPAREN = 14,
34    RPAREN = 15,
36    LBRACE = 16,
38    RBRACE = 17,
40    CARET = 18,
42    BAR = 19,
44    AMPERSAND = 20,
46    TILDE = 21,
48    EQUAL = 22,
50    BANG = 23,
52    COLON = 24,
54    SEMICOLON = 25,
56    COMMA = 26,
58    QUESTION = 27,
60    HASH = 28,
62    QUOTE_STRING = 29,
65    ANGLE_STRING = 30,
67    BACKSLASH = 31,
69    WS = 32,
71    NEWLINE = 33,
73    COMMENT = 34,
75    LINECONT = 35,
77    ERROR = 36,
79    LEFT_OP = 37,
82    RIGHT_OP = 38,
84    INC_OP = 39,
86    DEC_OP = 40,
88    LE_OP = 41,
90    GE_OP = 42,
92    EQ_OP = 43,
94    NE_OP = 44,
96    AND_OP = 45,
98    OR_OP = 46,
100    XOR_OP = 47,
102    MUL_ASSIGN = 48,
104    DIV_ASSIGN = 49,
106    ADD_ASSIGN = 50,
108    MOD_ASSIGN = 51,
110    LEFT_ASSIGN = 52,
112    RIGHT_ASSIGN = 53,
114    AND_ASSIGN = 54,
116    XOR_ASSIGN = 55,
118    OR_ASSIGN = 56,
120    SUB_ASSIGN = 57,
122    PP_CONCAT = 58,
124}
125
126impl Token {
127    pub fn is_trivia(&self) -> bool {
128        matches!(self, Self::LINECONT | Self::WS | Self::COMMENT)
129    }
130}
131
132impl From<crate::lexer::PreToken> for Token {
133    fn from(pre: crate::lexer::PreToken) -> Self {
134        unsafe { std::mem::transmute(std::mem::transmute::<crate::lexer::PreToken, u16>(pre)) }
136    }
137}