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
27
28
29
use std::fmt;

#[derive(PartialEq, Eq, Hash, Debug, Clone)]
pub enum Token {
    AndOp,
    OrOp,
    XorOp,
    NotOp,
    ConstVal(u8),
    LeftBrace,
    RightBrace
}

impl fmt::Display for Token {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), std::fmt::Error> { 
        use Token::*;
        let str: String = match *self {
            AndOp => "AND".to_string(),
            OrOp => "OR".to_string(),
            XorOp => "XOR".to_string(),
            NotOp => "NOT".to_string(),
            ConstVal(val) => format!("{:x}", val),
            LeftBrace => "(".to_string(),
            RightBrace => ")".to_string()
        };
        write!(f, "{str}")?;
        Ok(())
    }
}