From 16439e2fb2bfc521b7f4111414637d69aa949234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Grodzi=C5=84ski?= Date: Sun, 1 Jun 2025 12:06:37 +0900 Subject: [PATCH] One expression per line --- src/Parser.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Parser.cpp b/src/Parser.cpp index 8ecf66c..bb8adbb 100644 --- a/src/Parser.cpp +++ b/src/Parser.cpp @@ -41,7 +41,8 @@ shared_ptr Parser::matchInvalidStatement() { // shared_ptr Parser::matchExpressionStatement() { shared_ptr expression = term(); - if (expression->isValid()) { + if (expression->isValid() && tokens.at(currentIndex).isOfKind({Token::Kind::NEW_LINE, Token::Kind::END})) { + currentIndex++; return make_shared(Statement::Kind::EXPRESSION, nullptr, expression); } else { return make_shared(Statement::Kind::INVALID, make_shared(tokens.at(currentIndex)), expression); @@ -50,6 +51,8 @@ shared_ptr Parser::matchExpressionStatement() { shared_ptr Parser::term() { shared_ptr expression = factor(); + if (!expression->isValid()) + return expression; while (tokens.at(currentIndex).isOfKind({Token::Kind::PLUS, Token::Kind::MINUS})) { expression = matchBinary(expression); @@ -60,6 +63,8 @@ shared_ptr Parser::term() { shared_ptr Parser::factor() { shared_ptr expression = primary(); + if (!expression->isValid()) + return expression; while (tokens.at(currentIndex).isOfKind({Token::Kind::STAR, Token::Kind::SLASH, Token::Kind::PERCENT})) { expression = matchBinary(expression);