diff options
Diffstat (limited to 'crates/rebel-parse')
-rw-r--r-- | crates/rebel-parse/src/grammar/recipe.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/crates/rebel-parse/src/grammar/recipe.rs b/crates/rebel-parse/src/grammar/recipe.rs index 2d342ad..5f6adbc 100644 --- a/crates/rebel-parse/src/grammar/recipe.rs +++ b/crates/rebel-parse/src/grammar/recipe.rs @@ -198,7 +198,7 @@ peg::parser! { } rule number() -> i64 - = [Token::Number(s)] { ? + = neg:p('-')? [Token::Number(s)] { ? let (radix, rest) = if let Some(rest) = s.strip_prefix("0x") { (16, rest) } else if let Some(rest) = s.strip_prefix("0o") { @@ -208,7 +208,10 @@ peg::parser! { } else { (10, *s) }; - let digits = rest.replace('_', ""); + let mut digits = rest.replace('_', ""); + if neg.is_some() { + digits = format!("-{digits}"); + } i64::from_str_radix(&digits, radix).or(Err("number")) } |