@@ -87,32 +87,7 @@ namespace FPL {
8787 return false ;
8888 }
8989
90-
91- bool Parser::PrintStat () {
92- auto parseStart = mCurrentToken ; // std::vector<Token>::iterator
93- auto PeutEtreInstruction = CheckerIdentifiant ();
94- if (PeutEtreInstruction.has_value ()) {
95- if (PeutEtreInstruction->mText == " envoyer" ) {
96- auto ChaineEnter = CheckerChaineLitteral ();
97- if (ChaineEnter.has_value ()) {
98- std::string printContent = ChaineEnter->mText ;
99- std::replace (printContent.begin (), printContent.end (), ' "' , ' ' );
100- std::cout << printContent;
101- std::cout << std::endl;
102- return true ;
103- } else {
104- std::cerr
105- << " Vous devez mettre des \" pour ouvrir et fermer l'instruction que si le type est texte."
106- << std::endl;
107- mCurrentToken = parseStart;
108- }
109- }
110- }
111- return false ;
112- }
113-
11490 bool Parser::VariableDeclaration () {
115- --mCurrentToken ;
11691 auto parseStart = mCurrentToken ; // std::vector<Token>::iterator
11792 auto PeutEtreInstruction = CheckerIdentifiant ();
11893 if (PeutEtreInstruction.has_value () && PeutEtreInstruction->mText == " variable" ) {
@@ -131,6 +106,11 @@ namespace FPL {
131106 variable.VariableValue = VarValue->StatementName ;
132107
133108 mVariables [variable.VariableName ] = variable;
109+
110+ std::cout << " La variable '"
111+ << mVariables [variable.VariableName ].VariableName << " ' a pour valeur "
112+ << mVariables [variable.VariableName ].VariableValue << std::endl;
113+
134114 return true ;
135115 } else {
136116 throw std::runtime_error (" Vous devez donner une valeur qui est de même type que la variable." );
@@ -139,23 +119,50 @@ namespace FPL {
139119 throw std::runtime_error (" Vous devez donner une valeur a la variable qui correspond au type." );
140120 }
141121 } else {
142- throw std::runtime_error (" Vous devez utiliser les symboles '->' pour donner une valeur à la variable." );
122+ std::cerr << " Vous devez utiliser les symboles '->' pour donner une valeur à la variable." << std::endl;
123+ mCurrentToken = parseStart;
143124 }
144125 } else {
145- throw std::runtime_error (" Vous devez utiliser les symboles '->' pour donner une valeur à la variable." );
126+ std::cerr << " Vous devez utiliser les symboles '->' pour donner une valeur à la variable." << std::endl;
127+ mCurrentToken = parseStart;
146128 }
147129 } else {
148- throw std::runtime_error (" Vous devez indiquer un nom à la variable." );
130+ std::cerr << " Vous devez indiquer un nom à la variable." << std::endl;
131+ mCurrentToken = parseStart;
149132 }
150133 } else {
151- throw std::runtime_error (" Vous devez indiquer une type pour la variable." );
134+ std::cerr << " Vous devez indiquer une type pour la variable." << std::endl;
135+ mCurrentToken = parseStart;
136+ }
137+ }
138+ return false ;
139+ }
140+
141+
142+ bool Parser::Print () {
143+ auto parseStart = mCurrentToken ; // std::vector<Token>::iterator
144+ auto PeutEtreInstruction = CheckerIdentifiant ();
145+ if (PeutEtreInstruction.has_value ()) {
146+ if (PeutEtreInstruction->mText == " envoyer" ) {
147+ auto ChaineEnter = CheckerChaineLitteral ();
148+ if (ChaineEnter.has_value ()) {
149+ std::string printContent = ChaineEnter->mText ;
150+ std::replace (printContent.begin (), printContent.end (), ' "' , ' ' );
151+ std::cout << printContent << std::endl;
152+ return true ;
153+ } else {
154+ mCurrentToken = parseStart;
155+ std::cerr << " Vous devez mettre des \" pour ouvrir et fermer l'instruction que si le type est texte." << std::endl;
156+ }
157+ } else {
158+ mCurrentToken = parseStart;
152159 }
153160 }
154- ++mCurrentToken ;
155161 return false ;
156162 }
157163
158164
165+
159166 void Parser::parse (std::vector<Token> &tokens) {
160167 mEndToken = tokens.end ();
161168 mCurrentToken = tokens.begin ();
@@ -165,17 +172,18 @@ namespace FPL {
165172
166173 }
167174
168- if (PrintStat ()) {
169- ++ mCurrentToken ;
175+ if (Print ()) {
176+
170177 }
171178
172179 if (VariableDeclaration ()) {
173- ++ mCurrentToken ;
180+
174181 } else {
175182 if (mCurrentToken ->mText .empty ()) {
176183 continue ;
177184 }
178- std::cerr << " Identifier inconnu : " << Parser::mCurrentToken ->mText << std::endl;
185+
186+ std::cerr << " Identifier inconnu : " << mCurrentToken ->mText << std::endl;
179187 ++mCurrentToken ;
180188 }
181189 }
0 commit comments