Disallow named number followed by smaller named number
like 1 million thousand
This commit is contained in:
parent
3137979d55
commit
2d457de7f1
@ -1,3 +1,9 @@
|
|||||||
|
## Next
|
||||||
|
- Add operator words `plus`, `minus` and `times`
|
||||||
|
- Disallow named number followed by smaller named number (like 1 million thousand)
|
||||||
|
- Fix/improve parsing of multi-word units
|
||||||
|
- Fix light second parsed as light year
|
||||||
|
|
||||||
## 1.6.0 - 2021 Jul 3
|
## 1.6.0 - 2021 Jul 3
|
||||||
- Add support for non-US "metre" and "litre" spellings
|
- Add support for non-US "metre" and "litre" spellings
|
||||||
- Add help menu
|
- Add help menu
|
||||||
|
|||||||
@ -221,8 +221,14 @@ fn evaluate_node(ast_node: &AstNode) -> Result<Number, String> {
|
|||||||
},
|
},
|
||||||
Token::NamedNumber(named_number) => {
|
Token::NamedNumber(named_number) => {
|
||||||
let child_node = children.get(0).ok_or(format!("Token {:?} has no child[0]", token))?;
|
let child_node = children.get(0).ok_or(format!("Token {:?} has no child[0]", token))?;
|
||||||
let child_answer = evaluate_node(child_node)?;
|
|
||||||
let named_number_value = lookup_named_number(named_number);
|
let named_number_value = lookup_named_number(named_number);
|
||||||
|
if let Token::NamedNumber(child_nn) = &child_node.token {
|
||||||
|
let child_nn_value = lookup_named_number(child_nn);
|
||||||
|
if child_nn_value > named_number_value {
|
||||||
|
return Err(format!("Unexpected smaller token {:?}", token));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let child_answer = evaluate_node(child_node)?;
|
||||||
let result = child_answer.value * named_number_value;
|
let result = child_answer.value * named_number_value;
|
||||||
Ok(Number::new(result, child_answer.unit))
|
Ok(Number::new(result, child_answer.unit))
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user