Programmation Brainfuck/Les 8 instructions du langage

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche

Les 8 instructions du langage, chacune codée par un caractère, sont les suivantes :

Caract. Signification
> incrémente (augmente de 1) le pointeur.
< décrémente (diminue de 1) le pointeur.
+ incrémente l'octet du tableau pointé par le pointeur (l'octet pointé).
- décrémente l'octet pointé.
. sortie de l'octet pointé (valeur ASCII).
, entrée d'un octet dans le tableau à l'endroit du pointeur (valeur ASCII).
[ saute à l'instruction après le ] correspondant si l'octet pointé est à 0.
] retourne à l'instruction après le [ si l'octet pointé est différent de 0.

(Alternativement, ] peut être défini par "retourne au [ correspondant". C'est plus court, mais moins symétrique et moins efficace en temps. Les deux versions produisent des programmes avec le même comportement.)

(Une troisième version équivalente, quoique moins considérée, est : [ signifie "saute après l'instruction ] correspondante", et ] signifie "retourne à l'instruction après le [ correspondant si l'octet pointé est différent de 0".)

Les programmes Brainfuck peuvent être traduits en C en utilisant les substitutions suivantes, en considérant que ptr est du type char*:

Brainfuck C
> ++ptr;
< --ptr;
+ ++*ptr;
- --*ptr;
. putchar(*ptr);
, *ptr = getchar();
[ while (*ptr) {
] }