Skip to content

Commit 96c1b3e

Browse files
committed
Added variables with paquets :).
1 parent 042bb1b commit 96c1b3e

File tree

2 files changed

+30
-8
lines changed

2 files changed

+30
-8
lines changed

src/Essentials/Parser.cpp

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@
22

33
namespace FPL::Parser {
44

5-
void Parser::PaquetInstruction(FPL::Data::Data &data, std::optional<FPL::Paquet::Paquet> paquet) {
5+
void Parser::PaquetInstruction(FPL::Data::Data &data, std::optional<FPL::FonctionDef> fonction, std::optional<FPL::Paquet::Paquet> paquet) {
66
auto nomPaquet = ExpectIdentifiant(data);
77
if (nomPaquet.has_value()) {
88
FPL::Paquet::Paquet Paquet;
9+
910
if (paquet.has_value()) {
1011
Paquet.PaquetName = paquet->PaquetName + "." + nomPaquet->TokenText;
1112
} else{
1213
Paquet.PaquetName = nomPaquet->TokenText;
1314
}
15+
1416
if (ExpectOperator(data, "{").has_value()) {
1517
int totalInstructionInDefinition = 0;
1618

@@ -24,20 +26,36 @@ namespace FPL::Parser {
2426
currentToken->TokenText = "\"" + currentToken->TokenText += "\"";
2527
}
2628

27-
Paquet.PaquetContent.push_back(currentToken->TokenText);
28-
data.incrementeTokens(data);
29-
3029
if (currentToken->TokenText == "}") {
3130
if (totalInstructionInDefinition > 0) {
32-
Paquet.PaquetContent.emplace_back("}");
3331
totalInstructionInDefinition -= 1;
3432
} else {
3533
break;
3634
}
3735
}
36+
37+
Paquet.PaquetContent.push_back(currentToken->TokenText);
38+
data.incrementeTokens(data);
39+
}
40+
41+
if (!ExpectOperator(data, "}").has_value()) {
42+
PAQUET_close(data);
3843
}
3944

45+
std::vector<Tokenizer::Token> FileCode_Tokens = FPL::Tokenizer::TokenBuilder::ParseToken(FPL::Instruction::FunctionUtils::ReturnStringVector(Paquet.PaquetContent));
4046

47+
auto data_paquet = executeContentCode(FileCode_Tokens, fonction, Paquet);
48+
49+
for (auto const& variables : data_paquet.Map_Variables) {
50+
auto it = std::find(data_paquet.Map_Variables.begin(), data_paquet.Map_Variables.end(), variables);
51+
if (it != data_paquet.Map_Variables.end()) {
52+
data.addVariableToMap(it->second.VariableName,
53+
it->second.VariableValue,
54+
it->second.VariableType,
55+
it->second.NeedDelete,
56+
it->second.IsGlobal);
57+
}
58+
}
4159
} else {
4260
PAQUET_open(data);
4361
}
@@ -510,7 +528,11 @@ namespace FPL::Parser {
510528
possibleVariableName = ExpectIdentifiant(data);
511529
}
512530

513-
variable.VariableName = possibleVariableName->TokenText;
531+
if (paquet.has_value()) {
532+
variable.VariableName = paquet->PaquetName + "." + possibleVariableName->TokenText;
533+
} else {
534+
variable.VariableName = possibleVariableName->TokenText;
535+
}
514536

515537
if (ExpectEgalOperators(data)) {
516538
if (fonction.has_value() && !variable.IsGlobal) { variable.NeedDelete = true; }
@@ -764,7 +786,7 @@ namespace FPL::Parser {
764786
ImporterInstruction(data, fonction);
765787
return true;
766788
}else if (Instruction->TokenText == "paquet") {
767-
PaquetInstruction(data, paquet);
789+
PaquetInstruction(data, fonction, paquet);
768790
return true;
769791
}
770792
}

src/Essentials/Parser.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,6 @@ namespace FPL::Parser {
4949
static void AppelerInstruction(FPL::Data::Data& data);
5050
static void RenvoyerInstruction(FPL::Data::Data& data, std::optional<FPL::FonctionDef> fonction);
5151

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

0 commit comments

Comments
 (0)