You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

35 lines
987 B
Rust

#[macro_use]
extern crate maplit;
#[macro_use]
extern crate lazy_static;
pub mod elements;
pub mod tokenizer;
mod tokens;
#[cfg(test)]
mod tests {
use crate::tokenizer::Tokenizer;
use crate::tokens::{Grouping, Misc, Operation, Relation, Text, Token};
#[test]
fn it_works() {
let expression = "sum_(i=1)^n";
let mut tokenizer = Tokenizer::new(expression.to_string());
let tokens = tokenizer.parse();
assert_eq!(
tokens,
vec![
Token::Operation(Operation::Sum),
Token::Misc(Misc::Sub),
Token::Grouping(Grouping::RParen),
Token::Text(Text::Plain("i".to_string())),
Token::Relation(Relation::Eq),
Token::Text(Text::Plain("1".to_string())),
Token::Grouping(Grouping::LParen),
Token::Misc(Misc::Pow),
Token::Text(Text::Plain("n".to_string()))
]
);
}
}