From 46fcf485140bfd3f6d8576d3996770615aef29f0 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Fri, 31 May 2024 11:23:32 -0700 Subject: Add a README --- src/eval.rs | 7 +++++++ src/op.rs | 2 ++ src/parser.rs | 4 ++++ 3 files changed, 13 insertions(+) (limited to 'src') diff --git a/src/eval.rs b/src/eval.rs index a72f271..e40743b 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -179,6 +179,13 @@ impl Num { } } + pub fn trunc(self) -> Num { + match self { + Int(i) => Int(i), + Float(f) => Int(f as i128), + } + } + pub fn abs(self) -> Num { match self { Int(i) => Int(i.abs()), diff --git a/src/op.rs b/src/op.rs index 6a2d00f..b2f2a3f 100644 --- a/src/op.rs +++ b/src/op.rs @@ -16,6 +16,7 @@ pub enum UnOp { Floor, Ceil, Round, + Trunc, Abs, } @@ -36,6 +37,7 @@ impl UnOp { UnOp::Floor => x.floor(), UnOp::Ceil => x.ceil(), UnOp::Round => x.round(), + UnOp::Trunc => x.trunc(), UnOp::Abs => x.abs(), } } diff --git a/src/parser.rs b/src/parser.rs index a31b4f9..1e271a4 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -130,6 +130,10 @@ impl<'a> Parser<'a> { self.stack.push(Pending::Un(UnOp::Round)); return true; } + if self.symbol("trunc") { + self.stack.push(Pending::Un(UnOp::Trunc)); + return true; + } if self.symbol("abs") { self.stack.push(Pending::Un(UnOp::Abs)); return true; -- cgit v1.3.1