gurgle 0.5.0

Yet another dice rolling crate
Documentation
WHITESPACE = _{ " " | "\t" }

number = @{ "-"? ~ ASCII_DIGIT+ }
postprocess = { "avg" | "max" | "min" | "sum" }
dice = ${ number ~ ( "d" | "D" ) ~ number ~ postprocess? }

compare = { ">=" | "<=" | ">" | "<" | "=" }
checker = { compare ~ number }

op_add = { "+" }
op_sub = { "-" }
op_multiply = { "*" | "x" }
operator = _{ op_multiply | op_add | op_sub }

parentheses = { "(" ~ expr ~ ")" }
item = { parentheses | dice | number }
expr = { item ~ ( operator ~ item )* }

command = _{ SOI ~ expr ~ checker? ~ EOI }