@@ -82,6 +82,12 @@ namespace FPL {
8282 auto VarType = CheckerType ();
8383 if (VarType.has_value ()) {
8484 auto VarName = CheckerIdentifiant ();
85+
86+ if (isVariable (VarName->mText )) {
87+ std::cerr << " Veuillez choisir un autre nom pour votre variable." << std::endl;
88+ return false ;
89+ }
90+
8591 if (VarName.has_value ()) {
8692 if (CheckerOperateur (" -" ).has_value ()) {
8793 if (CheckerOperateur (" >" ).has_value ()) {
@@ -95,11 +101,6 @@ namespace FPL {
95101 variable.VariableValue = VarValue->StatementName ;
96102
97103 mVariables [variable.VariableName ] = variable;
98-
99- std::cout << " La variable '"
100- << mVariables [variable.VariableName ].VariableName << " ' a pour valeur "
101- << mVariables [variable.VariableName ].VariableValue << std::endl;
102-
103104 return true ;
104105 } else {
105106 std::cerr << " Merci de signifier la fin de la déclaration de la variable avec '|'." << std::endl;
@@ -123,6 +124,39 @@ namespace FPL {
123124 return false ;
124125 }
125126
127+ bool Parser::ChangerInstruction (auto parseStart) {
128+ auto VarName = CheckerIdentifiant ();
129+ if (VarName.has_value ()) {
130+ if (isVariable (VarName->mText )) {
131+ auto VarType = mVariables [VarName->mText ].VariableType ;
132+ if (CheckerOperateur (" -" ).has_value ()) {
133+ if (CheckerOperateur (" >" ).has_value ()) {
134+ auto Value = CheckerValue ();
135+ if (Value.has_value ()) {
136+ if (Value->StatementType .mType == VarType.mType ) {
137+ mVariables [VarName->mText ].VariableValue = Value->StatementName ;
138+ return true ;
139+ } else {
140+ std::cerr << " Veuillez donner une valeur en rapport avec le type de la variable." << std::endl;
141+ }
142+ } else {
143+ std::cerr << " Veuillez preciser la nouvelle valeur de la variable." << std::endl;
144+ }
145+ } else {
146+ std::cerr << " Vous devez utiliser les symboles '->' pour donner une valeur à la variable." << std::endl;
147+ }
148+ } else {
149+ std::cerr << " Vous devez utiliser les symboles '->' pour donner une valeur à la variable." << std::endl;
150+ }
151+ } else {
152+ std::cerr << " Cette variable n'existe pas." << std::endl;
153+ }
154+ } else {
155+ std::cerr << " Vous devez spécifier le nom de votre variable." << std::endl;
156+ }
157+ return false ;
158+ }
159+
126160 bool Parser::PrintInstruction (auto parseStart) {
127161 auto Value = CheckerValue ();
128162 if (Value.has_value ()) {
@@ -158,9 +192,11 @@ namespace FPL {
158192 auto PeutEtreInstruction = CheckerIdentifiant ();
159193 if (PeutEtreInstruction.has_value ()) {
160194 if (PeutEtreInstruction->mText == " envoyer" ) {
161- if (PrintInstruction (parseStart)) {return true ;} else {return false ;}
195+ if (PrintInstruction (parseStart)) { return true ; } else { return false ; }
162196 } else if (PeutEtreInstruction->mText == " variable" ) {
163- if (VariableInstruction (parseStart)) { return true ; } else {return false ;}
197+ if (VariableInstruction (parseStart)) { return true ; } else { return false ; }
198+ } else if (PeutEtreInstruction->mText == " changer" ) {
199+ if (ChangerInstruction (parseStart)) { return true ; } else { return false ; }
164200 } else if (PeutEtreInstruction->mText == " definir" ) {
165201 if (FunctionChecker (parseStart)) {return true ;} else {return false ;}
166202 } else {
0 commit comments