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}