#[derive(Debug, PartialEq, Clone)]
pub enum Token {
OpenBrace,
CloseBrace,
OpenParen,
CloseParen,
OpenBracket,
CloseBracket,
Semicolon,
Colon,
Comma,
Dot,
Operator(String),
Keyword(String),
Identifier(String),
StringLiteral(String),
NumberLiteral(String),
Comment(String),
Whitespace(String),
Newline,
Other(char),
}
pub trait Tokenizer: std::panic::RefUnwindSafe {
fn tokenize(&self, content: &str) -> Vec<Token>;
}
pub fn parse(content: &str, tokenizer: &dyn Tokenizer) -> Vec<Token> {
tokenizer.tokenize(content)
}