calculat0r 0.1.0

Cli calculator app
Documentation
use std::borrow::Cow;

use lexer::tokenize;
use parser::Parser;

mod lexer;
mod parser;

type Result<T> = core::result::Result<T, Cow<'static, str>>;

pub fn eval(src: &str) -> Option<Result<f64>> {
    let tokens = match tokenize(src) {
        Ok(tok) => tok,
        Err(err) => return Some(Err(err)),
    };

    let mut parser = Parser::new(src, &tokens);

    parser.next().map(|n| n.map(|n| n.calc()))
}