aboutsummaryrefslogtreecommitdiffstats
path: root/src/parser.rs
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-05-30 08:18:00 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-05-30 08:18:00 -0700
commit533d73997b279551583d97b0d5523272b83330d9 (patch)
treeca24cbdc798c1fa17bd184872873088566c2286b /src/parser.rs
parentfde7d934187f2919a3cf08b6361885951dad6e3e (diff)
downloadqc-533d73997b279551583d97b0d5523272b83330d9.tar.zst
Add arcsin, arccos, arctan.
Diffstat (limited to 'src/parser.rs')
-rw-r--r--src/parser.rs43
1 files changed, 32 insertions, 11 deletions
diff --git a/src/parser.rs b/src/parser.rs
index badf286..0875d92 100644
--- a/src/parser.rs
+++ b/src/parser.rs
@@ -80,77 +80,98 @@ impl<'a> Parser<'a> {
if self.symbol("sin") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::sin),
+ eval: Box::new(Num::sin),
});
return true;
}
if self.symbol("cos") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::cos),
+ eval: Box::new(Num::cos),
});
return true;
}
if self.symbol("tan") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::tan),
+ eval: Box::new(Num::tan),
+ });
+ return true;
+ }
+ if self.symbol("asin") || self.symbol("arcsin") {
+ self.stack.push(Op::Op {
+ prec: 3,
+ eval: Box::new(Num::asin),
+ });
+ return true;
+ }
+ if self.symbol("acos") || self.symbol("arccos") {
+ self.stack.push(Op::Op {
+ prec: 3,
+ eval: Box::new(Num::acos),
+ });
+ return true;
+ }
+ if self.symbol("atan") || self.symbol("arctan") {
+ self.stack.push(Op::Op {
+ prec: 3,
+ eval: Box::new(Num::atan),
});
return true;
}
if self.symbol("sqrt") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::sqrt),
+ eval: Box::new(Num::sqrt),
});
return true;
}
if self.symbol("log") || self.symbol("ln") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::log),
+ eval: Box::new(Num::log),
});
return true;
}
if self.symbol("log10") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::log10),
+ eval: Box::new(Num::log10),
});
return true;
}
if self.symbol("log2") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::log2),
+ eval: Box::new(Num::log2),
});
return true;
}
if self.symbol("floor") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::floor),
+ eval: Box::new(Num::floor),
});
return true;
}
if self.symbol("ceil") || self.symbol("ceiling") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::ceil),
+ eval: Box::new(Num::ceil),
});
return true;
}
if self.symbol("round") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::round),
+ eval: Box::new(Num::round),
});
return true;
}
if self.symbol("abs") {
self.stack.push(Op::Op {
prec: 3,
- eval: Box::new(eval::Num::abs),
+ eval: Box::new(Num::abs),
});
return true;
}