" "->Str 1 //Programme Brainfuck 100->Dim List 1 //Tableau principal 1->P //Position du pointeur sur le tableau 5->Dim List 2 //Valeurs à afficher 1->D //Nombre de valeurs à afficher 1->C //Position du caractère actuellement lu dans le programme Brainfuck While C <= StrLen(Str 1) //Boucle principale StrMid(Str 1, C, 1)->Str 2 //Stockage temporaire du caractère actuellement If Not StrCmp(Str 2, "+") Then List 1[P] + 1->List 1[P] //Incrémentation de la case pointée List 1[P] > 255 => 0->List 1[P] //Si on dépasse 255, on wrap donc on met la valeur de la case pointée à 0 Else If Not StrCmp(Str 2, "-") Then List 1[P] - 1->List 1[P] //Décrémentation de la case pointée List 1[P] < 0 => 255->List 1[P] //Si on est négatif, on wrap donc on met la valeur de la case pointée à 255 Else If Not StrCmp(Str 2, ">") Then Isz P //Incrémentation de la position du pointeur P > Dim List 1 => 1->P //Si on est à la limite supérieure du tableau, on wrap et on pointe sur la case 1 Else If Not StrCmp(Str 2, "<") Then P - 1->P //Décrémentation de la position du pointeur P < 1 => Dim List 1->P //Si on est à la limite inférieure du tableau, on wrap et on pointe sur la case maximale Else If Not StrCmp(Str 2, ",") Then ?->List 1[P] //On place le nombre entré dans la case pointée Else If Not StrCmp(Str 2, ".") Then List 1[P]->List 2[D] //On stocke la valeur à afficher ultérieurement Isz D //Incrémentation du compteur de valeurs à afficher Else If Not StrCmp(Str 2, "[") AND Not List 1[P] Then 1->A //Compteur temporaire de boucles While A //Tant qu'on est pas arrivé au "]" correspondant C + 1->C //Incrémentation de la position du caractère actuellement lu StrMid(Str 1, C, 1)->Str 2 //On stocke temporairement le caractère lu Not StrCmp(Str 2, "[") => A + 1->A //Si on a un "[", on incrémente le compteur de boucles Not StrCmp(Str 2, "]") => A - 1->A //Si on a un "]", on décrémente le compteur de boucles WhileEnd Else If Not StrCmp(Str 2, "]") AND List 1[P] Then 1->A //Compteur temporaire de boucles While A //Tant qu'on est pas arrivé au "[" correspondant C - 1->C //Décrémentation de la position du caractère actuellement lu StrMid(Str 1, C, 1)->Str 2 //On stocke temporairement le caractère lu Not StrCmp(Str 2, "]") => A + 1->A //Si on a un "]", on incrémente le compteur de boucles Not StrCmp(Str 2, "[") => A - 1->A //Si on a un "[", on décrémente le compteur de boucles WhileEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd C + 1->C //Incrémentation de la position du caractère actuellement lu WhileEnd For 1->F To 5 //Affichage X For 1->G To 3 //Affichage Y Locate 4F, 2G - 1, "|" //Séparateurs de tableau Locate 4F - 3, 2G - 1, List 1[F + (5G - 5)] //Affichage de la valeur correspondante Next If List 2[F] //S'il y a une valeur à afficher Then F - 1 => Locate 4F - 4, 7, "," //S'il y a plus d'une valeur, on affiche une virgule Locate 4F - 3, 7, List 2[F] //Affichage de la valeur à afficher Next P <= 15 => Locate ((MOD((P - 1), 5)) + 1) * 4 - 3, Int((P - 1) / 5 + 1) * 2, "^" //Si on pointe une case inférieure à 15, on affiche une flèche sous la case pointée