use super::LexErrorMsg;
#[derive(Debug, Eq, PartialEq, Copy, Clone)]
#[non_exhaustive]
pub enum Token {
Caret,
Dollar,
Percent,
AngleLeft,
AngleRight,
Star,
Plus,
QuestionMark,
Pipe,
Ampersand,
Colon,
OpenParen,
CloseParen,
OpenBrace,
CloseBrace,
Comma,
Not,
OpenBracket,
CloseBracket,
Dash,
Dot,
LookAhead,
LookBehind,
DoubleColon,
Semicolon,
Equals,
String,
CodePoint,
Number,
Identifier,
ReservedName,
ErrorMsg(LexErrorMsg),
Error,
}
impl core::fmt::Display for Token {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
Token::Caret => "`^`",
Token::Dollar => "`$`",
Token::Percent => "`%`",
Token::Star => "`*`",
Token::Plus => "`+`",
Token::QuestionMark => "`?`",
Token::Pipe => "`|`",
Token::Ampersand => "`&`",
Token::Colon => "`:`",
Token::OpenParen => "`(`",
Token::CloseParen => "`)`",
Token::OpenBrace => "`{`",
Token::CloseBrace => "`}`",
Token::Comma => "`,`",
Token::LookAhead => "`>>`",
Token::LookBehind => "`<<`",
Token::AngleLeft => "`<`",
Token::AngleRight => "`>`",
Token::DoubleColon => "`::`",
Token::Not => "`!`",
Token::OpenBracket => "`[`",
Token::Dash => "`-`",
Token::CloseBracket => "`]`",
Token::Dot => "`.`",
Token::Semicolon => "`;`",
Token::Equals => "`=`",
Token::String => "string",
Token::CodePoint => "code point",
Token::Number => "number",
Token::Identifier => "identifier",
Token::ReservedName => "reserved name",
Token::ErrorMsg(_) | Token::Error => "error",
})
}
}