use std::fmt::{self, Display};
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum Token {
Number(String),
Ident(String),
Plus,
Minus,
Asterisk,
Slash,
Caret,
SquareRoot,
Percent,
Exclamation,
OpenParen,
CloseParen,
Comma,
}
impl Display for Token {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let token = match self {
Token::Number(n) => n,
Token::Ident(s) => s,
Token::Plus => "+",
Token::Minus => "-",
Token::Asterisk => "*",
Token::Slash => "/",
Token::Caret => "^",
Token::SquareRoot => "√",
Token::Percent => "%",
Token::Exclamation => "!",
Token::OpenParen => "(",
Token::CloseParen => ")",
Token::Comma => ",",
};
f.write_str(token)
}
}