bjorn 0.2.0

Another side project interpreter.
Documentation
#[derive(Debug, PartialEq, Clone)]
pub enum Token {
    INT(String),
    FLOAT(String),
    BOOL(bool),
    ID(String),

    NEWLINE,
    INDENT,
    DEDENT,

    IF,
    ELSE,
    WHILE,

    DEF,
    RETURN,

    COLON,
    COMMA,

    OR,
    AND,
    NOT,

    EQ,
    NE,
    LE,
    GE,
    LT,
    GT,

    ASSIGN,

    PLUS,
    MINUS,
    MUL,
    DIV,

    LPAREN,
    RPAREN,

    EOF,
}

impl Token {
    pub fn integer(&self) -> Option<i32> {
        if let Token::INT(i) = self {
            return match i.parse::<i32>() {
                Ok(i) => Some(i),
                Err(_) => None
            }
        }
        None
    }

    pub fn float(&self) -> Option<f64> {
        if let Token::FLOAT(i) = self {
            return match i.parse::<f64>() {
                Ok(i) => Some(i),
                Err(_) => None
            }
        }
        None
    }

    pub fn boolean(&self) -> Option<bool> {
        if let Token::BOOL(i) = self {
            return Some(*i)
        }
        None
    }

    pub fn identifier(&self) -> Option<String> {
        if let Token::ID(i) = self {
            return match i.parse::<String>() {
                Ok(i) => Some(i),
                Err(_) => None
            }
        }
        None
    }
}