Evaluation of negative numbers

This commit is contained in:
Kasper 2019-12-25 23:56:43 +01:00
parent f38e63c5a7
commit ec5b3371fc

View File

@ -117,6 +117,11 @@ fn evaluate_node(ast_node: &AstNode) -> Result<Answer, String> {
let child_answer = evaluate_node(child_node)?;
Ok(Answer::new(child_answer.value, unit.clone()))
},
Token::Negative => {
let child_node = children.get(0).expect("Negative has no child[0]");
let child_answer = evaluate_node(child_node)?;
Ok(Answer::new(-child_answer.value, child_answer.unit))
},
Token::Paren => {
let child_node = children.get(0).expect("Paren has no child[0]");
return evaluate_node(child_node)
@ -248,8 +253,5 @@ fn evaluate_node(ast_node: &AstNode) -> Result<Answer, String> {
}
}
},
_ => {
Err(format!("Unexpected ast node {:?}", token))
},
}
}