diff options
| -rw-r--r-- | Cargo.lock | 48 | ||||
| -rw-r--r-- | Cargo.toml | 3 | ||||
| -rw-r--r-- | src/eval.rs (renamed from src/num.rs) | 6 | ||||
| -rw-r--r-- | src/main.rs | 2 | ||||
| -rw-r--r-- | src/parser.rs | 18 |
5 files changed, 59 insertions, 18 deletions
@@ -469,6 +469,20 @@ dependencies = [ ] [[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] name = "num-bigint" version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -479,6 +493,15 @@ dependencies = [ ] [[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] name = "num-integer" version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -488,6 +511,28 @@ dependencies = [ ] [[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] name = "num-traits" version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -569,8 +614,7 @@ dependencies = [ "async-channel", "gdk4", "gtk4", - "num-bigint", - "num-traits", + "num", ] [[package]] @@ -9,5 +9,4 @@ edition = "2021" async-channel = "2.3.1" gdk4 = "0.8.2" gtk4 = "0.8.2" -num-bigint = "0.4.5" -num-traits = "0.2.19" +num = "0.4.3" @@ -1,7 +1,5 @@ -use num_bigint::BigInt; -use num_traits::cast::ToPrimitive; -use num_traits::pow::Pow; -use num_traits::{FromPrimitive, Signed}; +use num::pow::Pow; +use num::{BigInt, FromPrimitive, Signed, ToPrimitive}; use std::fmt::{Display, Formatter}; pub enum Num { diff --git a/src/main.rs b/src/main.rs index e505ee6..08c1ded 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ +mod eval; mod lexer; -mod num; mod parser; use gdk4::{Key, ModifierType}; diff --git a/src/parser.rs b/src/parser.rs index 01f0e1b..b391202 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1,7 +1,7 @@ +use crate::eval; +use crate::eval::Num; use crate::lexer::Lexer; -use crate::num; -use crate::num::Num; -use num_bigint::BigInt; +use num::BigInt; use std::str::FromStr; enum ParseError { @@ -70,17 +70,17 @@ impl<'a> Parser<'a> { return Err(ParseError::Consumed); }; if negative { - return Ok(num::float(-f)); + return Ok(eval::float(-f)); } - return Ok(num::float(f)); + return Ok(eval::float(f)); } let Ok(i) = BigInt::from_str(t) else { return Err(ParseError::Consumed); }; if negative { - return Ok(num::int(-i)); + return Ok(eval::int(-i)); } - Ok(num::int(i)) + Ok(eval::int(i)) } fn paren_expr(&mut self) -> Result<Num, ParseError> { @@ -96,10 +96,10 @@ impl<'a> Parser<'a> { fn parse_const(&mut self) -> Result<Num, ParseError> { if self.symbol("e") { - return Ok(num::float(std::f64::consts::E)); + return Ok(eval::float(std::f64::consts::E)); } if self.symbol("pi") { - return Ok(num::float(std::f64::consts::PI)); + return Ok(eval::float(std::f64::consts::PI)); } Err(ParseError::Empty) } |
