pomsky_syntax/lexer/
token.rs1use super::LexErrorMsg;
2
3#[derive(Debug, Eq, PartialEq, Copy, Clone)]
5#[non_exhaustive]
6pub enum Token {
7 Caret,
9 Dollar,
11 Percent,
13 AngleLeft,
15 AngleRight,
17
18 Star,
20 Plus,
22 QuestionMark,
24
25 Pipe,
27 Ampersand,
29
30 Colon,
32 OpenParen,
34 CloseParen,
36
37 OpenBrace,
39 CloseBrace,
41 Comma,
43
44 Not,
46
47 OpenBracket,
49 CloseBracket,
51
52 Dash,
54 Dot,
56
57 LookAhead,
59 LookBehind,
61
62 DoubleColon,
64
65 Semicolon,
67
68 Equals,
70
71 String,
73
74 CodePoint,
76
77 Number,
79
80 Identifier,
82
83 ReservedName,
85
86 ErrorMsg(LexErrorMsg),
88
89 Error,
91}
92
93impl core::fmt::Display for Token {
94 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
95 f.write_str(match self {
96 Token::Caret => "`^`",
97 Token::Dollar => "`$`",
98 Token::Percent => "`%`",
99 Token::Star => "`*`",
100 Token::Plus => "`+`",
101 Token::QuestionMark => "`?`",
102 Token::Pipe => "`|`",
103 Token::Ampersand => "`&`",
104 Token::Colon => "`:`",
105 Token::OpenParen => "`(`",
106 Token::CloseParen => "`)`",
107 Token::OpenBrace => "`{`",
108 Token::CloseBrace => "`}`",
109 Token::Comma => "`,`",
110 Token::LookAhead => "`>>`",
111 Token::LookBehind => "`<<`",
112 Token::AngleLeft => "`<`",
113 Token::AngleRight => "`>`",
114 Token::DoubleColon => "`::`",
115 Token::Not => "`!`",
116 Token::OpenBracket => "`[`",
117 Token::Dash => "`-`",
118 Token::CloseBracket => "`]`",
119 Token::Dot => "`.`",
120 Token::Semicolon => "`;`",
121 Token::Equals => "`=`",
122 Token::String => "string",
123 Token::CodePoint => "code point",
124 Token::Number => "number",
125 Token::Identifier => "identifier",
126 Token::ReservedName => "reserved name",
127 Token::ErrorMsg(_) | Token::Error => "error",
128 })
129 }
130}