From 22f71bdc33a5495f25fcb7821f88ab24b7148dc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Grodzi=C5=84ski?= Date: Tue, 8 Jul 2025 22:35:32 +0900 Subject: [PATCH] Cleaned up array literal --- src/Parser/Expression/ExpressionArrayLiteral.cpp | 16 +++++++++++----- src/Parser/Expression/ExpressionArrayLiteral.h | 6 +++--- src/Parser/Parser.cpp | 3 +-- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/Parser/Expression/ExpressionArrayLiteral.cpp b/src/Parser/Expression/ExpressionArrayLiteral.cpp index 73a7598..90fb29d 100644 --- a/src/Parser/Expression/ExpressionArrayLiteral.cpp +++ b/src/Parser/Expression/ExpressionArrayLiteral.cpp @@ -3,17 +3,18 @@ #include "Lexer/Token.h" #include "Parser/Expression/ExpressionLiteral.h" -ExpressionArrayLiteral::ExpressionArrayLiteral(vector> expressions): -Expression(ExpressionKind::ARRAY_LITERAL, nullptr), expressions(expressions) { } - shared_ptr ExpressionArrayLiteral::expressionArrayLiteralForExpressions(vector> expressions) { - return make_shared(expressions); + shared_ptr expression = make_shared(); + expression->expressions = expressions; + return expression; } shared_ptr ExpressionArrayLiteral::expressionArrayLiteralForTokenString(shared_ptr tokenString) { if (tokenString->getKind() != TokenKind::STRING) return nullptr; + shared_ptr expression = make_shared(); + vector> expressions; string stringValue = tokenString->getLexme(); for (int i=1; i ExpressionArrayLiteral::expressionArrayLitera shared_ptr expression = ExpressionLiteral::expressionLiteralForToken(token); expressions.push_back(expression); } - return make_shared(expressions); + + expression->expressions = expressions; + return expression; } +ExpressionArrayLiteral::ExpressionArrayLiteral(): +Expression(ExpressionKind::ARRAY_LITERAL, nullptr) { } + vector> ExpressionArrayLiteral::getExpressions() { return expressions; } \ No newline at end of file diff --git a/src/Parser/Expression/ExpressionArrayLiteral.h b/src/Parser/Expression/ExpressionArrayLiteral.h index d2a2faf..3f74e32 100644 --- a/src/Parser/Expression/ExpressionArrayLiteral.h +++ b/src/Parser/Expression/ExpressionArrayLiteral.h @@ -6,12 +6,12 @@ class ExpressionArrayLiteral: public Expression { private: vector> expressions; - + public: - ExpressionArrayLiteral(vector> expressions); - //ExpressionArrayLiteral(shared_ptr tokenString); static shared_ptr expressionArrayLiteralForExpressions(vector> expressions); static shared_ptr expressionArrayLiteralForTokenString(shared_ptr tokenString); + + ExpressionArrayLiteral(); vector> getExpressions(); }; diff --git a/src/Parser/Parser.cpp b/src/Parser/Parser.cpp index c715d08..1689305 100644 --- a/src/Parser/Parser.cpp +++ b/src/Parser/Parser.cpp @@ -483,8 +483,7 @@ shared_ptr Parser::matchExpressionArrayLiteral() { } } - - return make_shared(expressions); + return ExpressionArrayLiteral::expressionArrayLiteralForExpressions(expressions); } return nullptr;