From fb2908e33eefdb1d1fd00d272ec9e50fc1843da3 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Wed, 29 May 2024 23:13:50 -0700 Subject: Allow prefix minus. --- src/parser.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/parser.rs') diff --git a/src/parser.rs b/src/parser.rs index c0f3a9b..4a87fda 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -46,23 +46,16 @@ impl<'a> Parser<'a> { } fn parse_num(&mut self) -> Option { - let negative = self.symbol("-"); let t = self.next()?; if t.contains('.') || t.contains('e') || t.contains('E') { let Ok(f) = f64::from_str(t) else { return None; }; - if negative { - return Some(eval::float(-f)); - } return Some(eval::float(f)); } let Ok(i) = i64::from_str(t) else { return None; }; - if negative { - return Some(eval::int(-i)); - } Some(eval::int(i)) } @@ -77,6 +70,13 @@ impl<'a> Parser<'a> { } fn parse_fun(&mut self) -> bool { + if self.symbol("-") { + self.stack.push(Op::Op { + prec: 0, + eval: Box::new(|n| eval::int(0).sub(n)), + }); + return true; + } if self.symbol("sin") { self.stack.push(Op::Op { prec: 3, -- cgit v1.3.1