Bonjour,
Je me suis mis au défi de créer un interpréteur brainfuck en C++. Pour le moment, voici à quoi ressemble ma méthode qui me permet d’interpréter le code :
void interpret(std::string const &instructions, mem const &memory, mem::iterator &iter)
{
for(char const c : instructions) {
if (is_instruction(c)) {
switch (c) {
case '<':
iter--;
if (iter < memory.begin()) throw std::runtime_error{"Memory overflow."};
break;
case '>':
iter++;
if (iter >= memory.end()) throw std::runtime_error{"Memory overflow."};
break;
case '+':
if ((*iter) - 1 > 255) *iter = 0;
else (*iter)++;
break;
case '-':
if ((*iter) - 1 < 0) *iter = 255;
else (*iter)--;
break;
case '.':
std::cout << *iter;
break;
case ',':
*iter = static_cast<unsigned char>(getchar());
break;
case '[':
// TODO
break;
case ']':
// TODO
break;
default:
break;
}
}
}
}
Seulement je ne vois absolument pas comment gérer les boucles. Auriez-vous des conseils à me donner ?
Merci à vous !
+0
-0