diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index 402f882..521ff88 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -501,19 +501,21 @@ shared_ptr Parser::matchExpressionCall() { currentIndex++; // left parenthesis vector> argumentExpressions; - do { - tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line - - shared_ptr argumentExpression = nextExpression(); - if (argumentExpression == nullptr) - return nullptr; - argumentExpressions.push_back(argumentExpression); - } while (tryMatchingTokenKinds({TokenKind::COMMA}, true, true)); - - tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line if (!tryMatchingTokenKinds({TokenKind::RIGHT_PAREN}, true, true)) { - markError(TokenKind::RIGHT_PAREN, {}); - return nullptr; + do { + tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line + + shared_ptr argumentExpression = nextExpression(); + if (argumentExpression == nullptr) + return nullptr; + argumentExpressions.push_back(argumentExpression); + } while (tryMatchingTokenKinds({TokenKind::COMMA}, true, true)); + + tryMatchingTokenKinds({TokenKind::NEW_LINE}, true, true); // optional new line + if (!tryMatchingTokenKinds({TokenKind::RIGHT_PAREN}, true, true)) { + markError(TokenKind::RIGHT_PAREN, {}); + return nullptr; + } } return make_shared(identifierToken->getLexme(), argumentExpressions);