22
33namespace 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 }
0 commit comments