mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[poincare/parser] Parse one multiplication/addition for 1+1+1+1+1+1
This commit is contained in:
@@ -160,7 +160,12 @@ void Parser::parseNumber(Expression & leftHandSide, Token::Type stoppingType) {
|
||||
void Parser::parsePlus(Expression & leftHandSide, Token::Type stoppingType) {
|
||||
Expression rightHandSide;
|
||||
if (parseBinaryOperator(leftHandSide, rightHandSide, Token::Plus)) {
|
||||
leftHandSide = Addition::Builder(leftHandSide, rightHandSide);
|
||||
if (leftHandSide.type() == ExpressionNode::Type::Addition) {
|
||||
int childrenCount = leftHandSide.numberOfChildren();
|
||||
static_cast<Addition &>(leftHandSide).addChildAtIndexInPlace(rightHandSide, childrenCount, childrenCount);
|
||||
} else {
|
||||
leftHandSide = Addition::Builder(leftHandSide, rightHandSide);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +196,12 @@ void Parser::parseMinus(Expression & leftHandSide, Token::Type stoppingType) {
|
||||
void Parser::parseTimes(Expression & leftHandSide, Token::Type stoppingType) {
|
||||
Expression rightHandSide;
|
||||
if (parseBinaryOperator(leftHandSide, rightHandSide, Token::Times)) {
|
||||
leftHandSide = MultiplicationExplicite::Builder(leftHandSide, rightHandSide);
|
||||
if (leftHandSide.type() == ExpressionNode::Type::MultiplicationExplicite) {
|
||||
int childrenCount = leftHandSide.numberOfChildren();
|
||||
static_cast<MultiplicationExplicite &>(leftHandSide).addChildAtIndexInPlace(rightHandSide, childrenCount, childrenCount);
|
||||
} else {
|
||||
leftHandSide = MultiplicationExplicite::Builder(leftHandSide, rightHandSide);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user