[poincare] Use a Tuple instead of an ArrayBuilder for expression

The Tuple is simply an initializer_list along with a convenience method
to cast between a list of TreeHandle and a list of Expression
This commit is contained in:
Romain Goyet
2020-04-09 17:55:14 -04:00
committed by Ecco
parent 1bd6105a0a
commit 807dd73e7b
92 changed files with 461 additions and 502 deletions

View File

@@ -169,13 +169,11 @@ QUIZ_CASE(poincare_parsing_parse) {
assert_parsed_expression_is("1+2", Addition::Builder(BasedInteger::Builder(1),BasedInteger::Builder(2)));
assert_parsed_expression_is("(1)+2", Addition::Builder(Parenthesis::Builder(BasedInteger::Builder(1)),BasedInteger::Builder(2)));
assert_parsed_expression_is("(1+2)", Parenthesis::Builder(Addition::Builder(BasedInteger::Builder(1),BasedInteger::Builder(2))));
Expression nAryChildren[] = {BasedInteger::Builder(1),BasedInteger::Builder(2),BasedInteger::Builder(3)};
assert_parsed_expression_is("1+2+3", Addition::Builder(nAryChildren, 3));
nAryChildren[2] = Parenthesis::Builder(Addition::Builder(BasedInteger::Builder(3),BasedInteger::Builder(4)));
assert_parsed_expression_is("1+2+(3+4)", Addition::Builder(nAryChildren, 3));
Expression::Tuple one_two_three = {BasedInteger::Builder(1),BasedInteger::Builder(2),BasedInteger::Builder(3)};
assert_parsed_expression_is("1+2+3", Addition::Builder(one_two_three));
assert_parsed_expression_is("1+2+(3+4)", Addition::Builder({BasedInteger::Builder(1), BasedInteger::Builder(2), Parenthesis::Builder(Addition::Builder(BasedInteger::Builder(3),BasedInteger::Builder(4)))}));
assert_parsed_expression_is("1×2", Multiplication::Builder(BasedInteger::Builder(1),BasedInteger::Builder(2)));
nAryChildren[2] = BasedInteger::Builder(3);
assert_parsed_expression_is("1×2×3", Multiplication::Builder(nAryChildren, 3));
assert_parsed_expression_is("1×2×3", Multiplication::Builder(one_two_three));
assert_parsed_expression_is("1+2×3", Addition::Builder(BasedInteger::Builder(1), Multiplication::Builder(BasedInteger::Builder(2), BasedInteger::Builder(3))));
assert_parsed_expression_is("1/2", Division::Builder(BasedInteger::Builder(1),BasedInteger::Builder(2)));
assert_parsed_expression_is("(1/2)", Parenthesis::Builder(Division::Builder(BasedInteger::Builder(1),BasedInteger::Builder(2))));