Skip to content

Commit 355e258

Browse files
committed
Adding optimization.
1 parent a3c4082 commit 355e258

File tree

2 files changed

+12
-22
lines changed

2 files changed

+12
-22
lines changed

src/Essentials/Parser.cpp

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace FPL::Parser {
44

5-
void Parser::PaquetInstruction(FPL::Data::Data& data, const std::optional<FPL::FonctionDef>& fonction, std::optional<FPL::Paquet::Paquet> paquet) {
5+
void Parser::PaquetInstruction(FPL::Data::Data &data, std::optional<FPL::Paquet::Paquet> paquet) {
66
auto nomPaquet = ExpectIdentifiant(data);
77
if (nomPaquet.has_value()) {
88
FPL::Paquet::Paquet Paquet;
@@ -125,15 +125,7 @@ namespace FPL::Parser {
125125
if (possibleFunctionName.has_value()) {
126126
auto fonction = data.getFonction(possibleFunctionName->TokenText);
127127

128-
std::stringstream FonctionContentCode_STR;
129-
for (auto it = fonction->FonctionContentCode.begin(); it != fonction->FonctionContentCode.end(); it++) {
130-
if (it != fonction->FonctionContentCode.begin()) {
131-
FonctionContentCode_STR << " ";
132-
}
133-
FonctionContentCode_STR << *it;
134-
}
135-
136-
std::vector<Tokenizer::Token> FileCode_Tokens = FPL::Tokenizer::TokenBuilder::ParseToken(FonctionContentCode_STR.str());
128+
std::vector<Tokenizer::Token> FileCode_Tokens = FPL::Tokenizer::TokenBuilder::ParseToken(FPL::Instruction::FunctionUtils::ReturnStringVector(fonction->FonctionContentCode));
137129

138130
if (fonction->FonctionNumberArgument < 1) {
139131
if (!ExpectOperator(data, ";").has_value()) {
@@ -263,6 +255,7 @@ namespace FPL::Parser {
263255
if (currentToken->TokenType == FPL::Tokenizer::CHAINE_LITTERAL) {
264256
currentToken->TokenText = "\"" + currentToken->TokenText += "\"";
265257
}
258+
266259
fonction.FonctionContentCode.push_back(currentToken->TokenText);
267260
data.incrementeTokens(data);
268261

@@ -273,6 +266,9 @@ namespace FPL::Parser {
273266
} else {
274267
break;
275268
}
269+
} else if (data.current_token == data.end_token) {
270+
fonction.FonctionContentCode.emplace_back("}");
271+
break;
276272
}
277273
}
278274

@@ -541,7 +537,7 @@ namespace FPL::Parser {
541537
variable.VariableType,
542538
variable.NeedDelete,
543539
variable.IsGlobal
544-
);
540+
);
545541
} else {
546542
forgotEndInstructionOperator(data);
547543
}
@@ -556,15 +552,7 @@ namespace FPL::Parser {
556552
auto possibleFunction = data.getFonction(possibleId->TokenText);
557553
if (possibleFunction.has_value()) {
558554

559-
std::stringstream FonctionContentCode_STR;
560-
for (auto it = possibleFunction->FonctionContentCode.begin(); it != possibleFunction->FonctionContentCode.end(); it++) {
561-
if (it != possibleFunction->FonctionContentCode.begin()) {
562-
FonctionContentCode_STR << " ";
563-
}
564-
FonctionContentCode_STR << *it;
565-
}
566-
567-
std::vector<Tokenizer::Token> FileCode_Tokens = FPL::Tokenizer::TokenBuilder::ParseToken(FonctionContentCode_STR.str());
555+
std::vector<Tokenizer::Token> FileCode_Tokens = FPL::Tokenizer::TokenBuilder::ParseToken(FPL::Instruction::FunctionUtils::ReturnStringVector(possibleFunction->FonctionContentCode));
568556

569557
if (ExpectOperator(data, ":").has_value() && possibleFunction->FonctionNumberArgument > 0) {
570558
int totalArgs = possibleFunction->FonctionNumberArgument;
@@ -776,7 +764,7 @@ namespace FPL::Parser {
776764
ImporterInstruction(data, fonction);
777765
return true;
778766
}else if (Instruction->TokenText == "paquet") {
779-
PaquetInstruction(data, fonction, paquet);
767+
PaquetInstruction(data, paquet);
780768
return true;
781769
}
782770
}

src/Essentials/Parser.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#include <sstream>
99
#include <iterator>
1010
#include <algorithm>
11+
#include <stack>
1112

1213
#include "Tokenizer.h"
1314
#include "Utils/Expecter.h"
@@ -21,6 +22,7 @@
2122

2223
#include "../Instructions/Prints.h"
2324
#include "../Instructions/Inputs.h"
25+
#include "../Instructions/FunctionsUtils.h"
2426

2527
#include "MathUtils/MathParser/MathParser.h"
2628

@@ -47,6 +49,6 @@ namespace FPL::Parser {
4749
static void AppelerInstruction(FPL::Data::Data& data);
4850
static void RenvoyerInstruction(FPL::Data::Data& data, std::optional<FPL::FonctionDef> fonction);
4951

50-
static void PaquetInstruction(FPL::Data::Data& data, const std::optional<FPL::FonctionDef>& fonction, std::optional<FPL::Paquet::Paquet> paquet);
52+
static void PaquetInstruction(FPL::Data::Data &data, std::optional<FPL::Paquet::Paquet> paquet);
5153
};
5254
}

0 commit comments

Comments
 (0)