Skip to main content

shunting_yard/
lib.rs

1extern crate num;
2
3pub mod eval;
4pub mod parser;
5pub mod token;
6
7use anyhow::Result;
8use eval::eval;
9use num::Float;
10use parser::parse;
11use std::{fmt::Debug, str::FromStr};
12
13pub fn evaluate<T>(code: &str) -> Result<T>
14where
15    T: Float + FromStr + Debug + Clone + Copy + Into<f64>,
16{
17    match parse::<T>(code) {
18        Ok(tokens) => Ok(eval(&tokens)?),
19        Err(e) => Err(e),
20    }
21}