1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// List of all the tokens possible.
#[derive(Debug, Clone, Copy)]
pub enum Token {
    // we store numbers as rust's f64.
    Number(f64),
    // operators.
    Plus,
    Minus,
    Star,
    Slash,
    // end of file for ease of use.
    Eof,
}

impl core::fmt::Display for Token {
    fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
        match self {
            Token::Number(n) => write!(f, " {n} "),
            Token::Plus => write!(f, " + "),
            Token::Minus => write!(f, " - "),
            Token::Star => write!(f, " * "),
            Token::Slash => write!(f, " / "),
            Token::Eof => write!(f, " EOF "),
        }
    }
}