make subtract actually subtract instead of add

This commit is contained in:
2024-10-12 17:14:41 -04:00
parent 2d269203e6
commit 56571f0434

View File

@@ -201,7 +201,7 @@ impl<'a> ParseTree<'a> {
{ {
match self { match self {
ParseTree::Add(l, r) => Ok(l.evaluate(globals, locals)? + r.evaluate(globals, locals)?), ParseTree::Add(l, r) => Ok(l.evaluate(globals, locals)? + r.evaluate(globals, locals)?),
ParseTree::Sub(l, r) => Ok(l.evaluate(globals, locals)? + r.evaluate(globals, locals)?), ParseTree::Sub(l, r) => Ok(l.evaluate(globals, locals)? - r.evaluate(globals, locals)?),
ParseTree::Mul(l, r) => Ok(l.evaluate(globals, locals)? * r.evaluate(globals, locals)?), ParseTree::Mul(l, r) => Ok(l.evaluate(globals, locals)? * r.evaluate(globals, locals)?),
ParseTree::Div(l, r) => Ok(l.evaluate(globals, locals)? / r.evaluate(globals, locals)?), ParseTree::Div(l, r) => Ok(l.evaluate(globals, locals)? / r.evaluate(globals, locals)?),
ParseTree::Exp(l, r) ParseTree::Exp(l, r)
@@ -287,28 +287,3 @@ impl<'a> ParseTree<'a> {
} }
} }
} }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_parse() {
let tokens = Token::tokenize("= x 15 : square x ** x 2 square x").expect("failed to tokenize");
let mut tokens = tokens.iter();
let globals = HashMap::new();
let locals = HashMap::new();
let mut locals = Cow::Borrowed(&locals);
let tree = ParseTree::parse(&mut tokens, &globals, &mut locals).expect("failed to parse");
eprintln!("{tree:?}");
let mut globals = HashMap::new();
let locals = HashMap::new();
let mut locals = Cow::Borrowed(&locals);
eprintln!("{}", tree.evaluate(&mut globals, &mut locals).expect("failed to evaluate"));
}
}