Code : Tout sélectionner
#MEMSIZE = 1024
#MAXLPLEVEL = 32
OpenConsole("Brain Not Found")
ConsoleColor(0,7)
PrintN("############################ Interpréteur Brainfuck ############################")
ConsoleColor(7,0)
Dim memory.a(#MEMSIZE)
Dim loops(#MAXLPLEVEL)
Define ptr, loopLevel, bfScript$, i, len, inpt$, errCount
Declare Error(Text.s)
ConsoleColor(10,0)
Print("$iBF$>")
ConsoleColor(14,0)
bfScript$ = Input()
len = Len(bfScript$)
ConsoleColor(2,0)
PrintN("Exécution en cours...")
ConsoleColor(7,0)
For i=1 To len
Select Asc(Mid(bfScript$,i,1))
Case '+'
memory(ptr) +1
Case '-'
memory(ptr) -1
Case '>'
ptr +1
Case '<'
ptr -1
If ptr < 0
Error("Segmentation error : pointer out of memory : "+Str(ptr)+" Must be [0~1024]")
errCount +1
Break
EndIf
Case '.'
Print(Chr(memory(ptr)))
Case ':'
Print(Str(memory(ptr)))
Case ','
ConsoleColor(10,0)
Print("$>")
ConsoleColor(7,0)
inpt$ = Input()
memory(ptr) = Val(inpt$)
Case '['
loopLevel +1
loops(loopLevel) = i
Case ']'
If memory(ptr) = 0
loopLevel -1
Else
i = loops(loopLevel)
EndIf
EndSelect
Next
ConsoleColor(2,0)
PrintN(~"\nExécution terminée, erreurs : "+Str(errCount))
ConsoleColor(10,0)
Print("Pressez Entrée pour quitter.")
Input()
Procedure Error(Text.s)
ConsoleColor(12,0)
PrintN(Text)
ConsoleColor(7,0)
EndProcedure
Hello World a écrit :++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>++.>+.+++++++..+++.<<++.>+++++++++++++++.>.+++.------.--------.<<+.<.
Le chiffre illuminati a écrit :++++++++++:>++:>:
Les instructions sont celles du Brainfuck traditionnel + le ":" qui permet d'afficher la valeur brute de l'octet pointé, ce qui est pratique quand on ne veut pas afficher le caractére ASCII correspondant, mais qui du coup repréente une légére digression au but du BF, qui est d'est chiant à coder ^^Le Brainfuck (à propos de lui-même) a écrit :-[------->+<]>+++.-[--->++++<]>+.--[--->+<]>-.+[->++<]>.---[----->+<]>-.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.-[++>---<]>+.+[->+++<]>.[->+++<]>--.-[--->+<]>+++.[--->+<]>----.+.[---->+<]>+++.+[->+++<]>.++++++++++++..---.[++>---<]>--.---[->++<]>.--[->++++++<]>.
Bonne destruction de neurones, adoptez le BF c'est simple et à fortiori pas compliqué, voire peux difficultueux ou même facile de type non difficile... Enfin presque