Skip to content

Commit 957302f

Browse files
committed
Fixs + Instruction 'changer'
1 parent 96eb165 commit 957302f

File tree

2 files changed

+45
-7
lines changed

2 files changed

+45
-7
lines changed

src/Parser.cpp

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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{

src/Parser.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,5 +51,7 @@ namespace FPL {
5151
std::map<std::string, Type> mTypes;
5252

5353
bool ManagerInstruction();
54+
55+
bool ChangerInstruction(auto parseStart);
5456
};
5557
}

0 commit comments

Comments
 (0)