make subtract actually subtract instead of add
This commit is contained in:
@@ -201,7 +201,7 @@ impl<'a> ParseTree<'a> {
|
||||
{
|
||||
match self {
|
||||
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::Div(l, r) => Ok(l.evaluate(globals, locals)? / r.evaluate(globals, locals)?),
|
||||
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"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user