Expand description
Parser generator functions and implementations of str::FromStr
for all dice and expression data structures.
Requires the parse
feature (enabled by default).
The parser generators generate parsers for parsing dice, dice modifiers, modifier conditions, and full mathematical
dice expressions (such as 4d8 + 2d6x - 3
) from strings. They’re all made with [chumsky] and are almost entirely
zero-copy. A parser can be used directly by calling [Parser::parse()
] on it.
§Examples
§Parsing Dice
use tyche::Dice;
let dice: Dice = "6d8x".parse()?;
assert_eq!(dice, Dice::builder().count(6).sides(8).explode(None, true).build());
§Parsing expressions
use tyche::{Dice, Expr};
let expr: Expr = "6d8x + 4d6 - 3".parse()?;
assert_eq!(
expr,
Expr::Sub(
Box::new(Expr::Add(
Box::new(Expr::Dice(
Dice::builder().count(6).sides(8).explode(None, true).build()
)),
Box::new(Expr::Dice(Dice::new(4, 6))),
)),
Box::new(Expr::Num(3)),
)
);
Structs§
- Error that can occur while parsing a string into a dice or expression-related structure via
std::str::FromStr
.
Traits§
- Trait to allow convenient access to a parser generator for any implementing type
Functions§
- Generates a parser that specifically handles dice modifier conditions like “<3”, “>=5”, “=1”, “1”, etc. and expects end of input
- Generates a parser that specifically handles dice modifier conditions like “<3”, “>=5”, “=1”, “1”, etc.
- Generates a parser that specifically handles dice with or without modifiers like “d20”, “2d20kh”, “8d6x”, etc. and expects end of input
- Generates a parser that specifically handles dice with or without modifiers like “d20”, “2d20kh”, “8d6x”, etc.
- Generates a parser that handles full expressions including mathematical operations, grouping with parentheses, dice, etc. and expects end of input
- Generates a parser that handles full expressions including mathematical operations, grouping with parentheses, dice, etc.
- Generates a parser that specifically handles dice modifiers with conditions like “r1”, “xo>4”, “kh”, etc. and expects end of input
- Generates a parser that specifically handles dice modifier lists with conditions like “r1kh4”, “r1xo>4kh4”, etc. and expects end of input
- Generates a parser that specifically handles dice modifier lists with conditions like “r1kh4”, “r1xo>4kh4”, etc.
- Generates a parser that specifically handles dice modifiers with conditions like “r1”, “xo>4”, “kh”, etc.