use std::fmt;
#[derive(Debug, PartialEq, Clone)]
pub enum Types {
String(String),
Number(i64),
Vec(Vec<Types>),
Bool(bool),
None,
}
#[derive(Debug, PartialEq, Clone)]
pub enum TokenType {
Route, Val, Var, If, Else, String(String), Number(i64), Identifier(String), HttpMethod(String), LBrace, RBrace, LParen, RParen, Semicolon, Dot, Comma, Equals, DoubleEquals, NotEquals, Comment(String), EOF, Tls, Enabled, CertPath, KeyPath, TryOperator, UnwrapOperator, OnError, GlobalErrorHandler, Concatenation, PlusEqual, }
#[derive(Debug, Clone)]
pub struct Token {
pub(crate) token_type: TokenType,
pub(crate) line: usize,
pub(crate) column: usize,
}
impl fmt::Display for Token {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match &self.token_type {
TokenType::Route => write!(f, "route"),
TokenType::Val => write!(f, "val"),
TokenType::Var => write!(f, "var"),
TokenType::If => write!(f, "if"),
TokenType::Else => write!(f, "else"),
TokenType::String(s) => write!(f, "\"{}\"", s),
TokenType::Number(n) => write!(f, "{}", n),
TokenType::Identifier(id) => write!(f, "{}", id),
TokenType::HttpMethod(method) => write!(f, "{}", method),
TokenType::LBrace => write!(f, "{{"),
TokenType::RBrace => write!(f, "}}"),
TokenType::LParen => write!(f, "("),
TokenType::RParen => write!(f, ")"),
TokenType::Semicolon => write!(f, ";"),
TokenType::Dot => write!(f, "."),
TokenType::Comma => write!(f, ","),
TokenType::Equals => write!(f, "="),
TokenType::DoubleEquals => write!(f, "=="),
TokenType::NotEquals => write!(f, "!="),
TokenType::Comment(c) => write!(f, "/* {} */", c),
TokenType::EOF => write!(f, "EOF"),
TokenType::Tls => write!(f, "tls"),
TokenType::Enabled => write!(f, "enabled"),
TokenType::CertPath => write!(f, "cert_path"),
TokenType::KeyPath => write!(f, "key_path"),
TokenType::TryOperator => write!(f, "?"),
TokenType::UnwrapOperator => write!(f, "!!"),
TokenType::OnError => write!(f, "onError"),
TokenType::GlobalErrorHandler => write!(f, "global_error_handler"),
TokenType::Concatenation => write!(f, "+"),
TokenType::PlusEqual => write!(f, "+="),
}
}
}