die_sir/lib.rs
1//! DieSir is a library for parsing and evaluating dice expressions as well as basic math expressions.
2//!
3//! This crate provides functionality to parse and evaluate
4//! dice rolling expressions like "2d6 + 3"
5
6mod parsedie;
7
8pub use parsedie::{
9 ast::{self, EvalResult},
10 parser::{ParseError, Parser},
11};
12
13/// Evaluates a dice expression string and returns the result
14///
15/// # Arguments
16///
17/// * `expr` - A string containing the dice expression to evaluate
18///
19/// # Examples
20///
21/// ```
22/// use die_sir::evaluate;
23///
24/// let result = evaluate("2d6 + 3".to_string());
25/// match result {
26/// Ok(val) => println!("Result: {}", val),
27/// Err(e) => println!("Error: {}", e),
28/// }
29/// ```
30pub fn evaluate(expr: String) -> Result<EvalResult, ParseError> {
31 let expr = expr.split_whitespace().collect::<String>();
32 let mut die_parser = Parser::new(&expr)?;
33 let ast = die_parser.parse()?;
34 Ok(ast::eval(ast)?)
35}