diff --git a/poincare/src/simplify/expression_builder.cpp b/poincare/src/simplify/expression_builder.cpp index bab34ca4c..5c64c8587 100644 --- a/poincare/src/simplify/expression_builder.cpp +++ b/poincare/src/simplify/expression_builder.cpp @@ -40,6 +40,7 @@ Expression * ExpressionBuilder::build(ExpressionMatch matches[]) { assert(false); break; } + break; case ExpressionBuilder::Action::BuildFromTypeAndValue: switch(m_expressionType) { case Expression::Type::Integer: diff --git a/poincare/src/simplify/expression_builder.h b/poincare/src/simplify/expression_builder.h index 2d2202a6a..f9af7237e 100644 --- a/poincare/src/simplify/expression_builder.h +++ b/poincare/src/simplify/expression_builder.h @@ -27,6 +27,7 @@ private: CallExternalGenerator }; + constexpr ExpressionBuilder(Expression::Type type, uint8_t numberOfChildren); constexpr ExpressionBuilder(Expression::Type type, int32_t integerValue, uint8_t numberOfChildren); constexpr ExpressionBuilder(Action action, uint8_t matchIndex, uint8_t numberOfChildren); constexpr ExpressionBuilder(ExternalGenerator * generator, uint8_t numberOfChildren); @@ -59,8 +60,9 @@ private: constexpr ExpressionBuilder ExpressionBuilder::BuildFromType( Expression::Type type, uint8_t numberOfChildren) { - return ExpressionBuilder(type, 0, numberOfChildren); + return ExpressionBuilder(type, numberOfChildren); } + constexpr ExpressionBuilder ExpressionBuilder::BuildFromTypeAndValue( Expression::Type type, int32_t value, @@ -86,6 +88,15 @@ constexpr ExpressionBuilder ExpressionBuilder::CallExternalGenerator( return ExpressionBuilder(generator, numberOfChildren); } +constexpr ExpressionBuilder::ExpressionBuilder(Expression::Type type, + uint8_t numberOfChildren) + : + m_action(ExpressionBuilder::Action::BuildFromType), + m_expressionType(type), + m_integerValue(0), + m_numberOfChildren(numberOfChildren) { +} + constexpr ExpressionBuilder::ExpressionBuilder(Expression::Type type, int32_t integerValue, uint8_t numberOfChildren) diff --git a/poincare/src/simplify/rules.pr b/poincare/src/simplify/rules.pr index 6a68c4905..77a59e2ef 100644 --- a/poincare/src/simplify/rules.pr +++ b/poincare/src/simplify/rules.pr @@ -1,3 +1,3 @@ -Integer(a)->Integer(a); -Addition(Addition(a,b),c)->Addition(a,b,c); Addition(Addition(a*),b*)->Addition(a*,b*); +Addition(Integer.a,Integer.b)->$AddIntegers(a,b); +Addition(Integer.a,Integer.b,c*)->Addition($AddIntegers(a,b),c*);