Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Interpréteur langage BF | |
| | Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Interpréteur langage BF Dim 28 Juin 2015 - 1:27 | |
| Hello ! Un petit bout de code totalement "inutile", juste pour rigoler un peu : j'ai retrouvé le source de mon interpréteur du langage Brainfuck ! Pour les Lapins ou autres bestioles à poils, il faudra attendre un peu ygeronimi... Le code est un peu "sale" mais il a le mérite de fonctionner. - Code:
-
' ------------------------------------------------------------------------------ ' Interpreteur langage Brainfuck par Nardo ' ------------------------------------------------------------------------------
DIM H:H=SCREEN_Y-32 LABEL Go
WIDTH 0,SCREEN_X/2:HEIGHT 0,H/2 CAPTION 0,"Brainfuck" MEMO 1 : TOP 1,2 : LEFT 1,5 : WIDTH 1,WIDTH(0)-22 : HEIGHT 1,(H/2)-80 FONT_NAME 1,"Courier New":FONT_SIZE 1,10 : BAR_VERTICAL 1 BUTTON 4: TOP 4,HEIGHT(1)+TOP(1)+5 : LEFT 4,420 : CAPTION 4,"Go !":ON_CLICK 4,Go
DIM DEBUG:DEBUG=0 DIM a$
FORM 2: LEFT 2,SCREEN_X/2 HEIGHT 2,H : CAPTION 2,"Resultat" WIDTH 2,SCREEN_X PICTURE 3:PARENT 3,2:FULL_SPACE 3 : FONT_NAME 3,"Courier new" PRINT_TARGET_IS 3 WIDTH 2,SCREEN_X/2
FORM 30:HIDE 30:HEIGHT 30,H /2:TOP 30,H/2:WIDTH 30,SCREEN_X/2 CAPTION 30,"Debug" LIST 31:PARENT 31,30:WIDTH 31,WIDTH(30)-16 HEIGHT 31,HEIGHT(30)-80 FONT_NAME 31,"Courier New"
LABEL ClearStack BUTTON 32:HIDE 32:LEFT 32,10:TOP 32,TOP(4) CAPTION 32,"Clear Debug" ON_CLICK 32,ClearStack
' a$="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+." READ a$ WHILE a$<>"#" ITEM_ADD 1,RTRIM$(a$) READ a$ END_WHILE
END
ClearStack: CLEAR 31 : HIDE 30 : HIDE 32 RETURN
Go: INACTIVE 4 DIM Go_i,Go_a$ FOR Go_i=1 TO COUNT(1) Go_a$=Go_a$+ITEM_READ$(1,Go_i) NEXT Go_i ' print "Les 10 premiers termes de la suite de Fibonacci, Veuillez patienter, je calcule ..." Interprete(Go_a$) FREE Go_i:FREE Go_a$ ShowMESSAGE("Fini !") ACTIVE 4 RETURN
SUB Interprete(a$) DIM_LOCAL i%,Cde$,output$,level%,Ptr%,k$,j% DIM Tab(30000) output$="":Cde$="": Ptr%=0:level%=0 i%=1 StrInclude(a$,"><+-[].,$@") : a$=StrInclude$ WHILE i% <=LEN(a$) Cde$=MID$(a$,i%,1) IF Cde$="@" THEN MESSAGE "BrkPt" IF Cde$="$" PRT_STACK(Ptr%) END_IF IF Cde$=">" THEN Ptr%=Ptr%+1 IF Cde$="<" IF Ptr%<>0:Ptr%=Ptr%-1:ELSE:MESSAGE "Error Ptr < 0":TERMINATE:END_IF END_IF IF Cde$="+" THEN Tab(Ptr%)=Tab(Ptr%)+1 IF Cde$="-" THEN Tab(Ptr%)=Tab(Ptr%)-1 IF Cde$="[" IF Tab(Ptr%)=0 FOR j%=i%+1 TO LEN(a$) IF MID$(a$,j%,1)="[" level%=level%+1 ELSE IF MID$(a$,j%,1)="]" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF IF Cde$="]" IF Tab(Ptr%)<>0 FOR j%=i%-1 TO 1 STEP -1 IF MID$(a$,j%,1)="]" level%=level%+1 ELSE IF MID$(a$,j%,1)="[" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF
IF Cde$="." THEN PRINT CHR$(Tab(Ptr%)); IF Cde$="," k$=message_input$("Donnée à entrer", "valeur" , "") ' k$=INKEY$:WHILE k$="":k$=INKEY$:WAIT 10:END_WHILE Tab(Ptr%)=ASC(k$) END_IF i%=i%+1 IF KEY_UP_CODE <> 0 THEN EXIT_WHILE END_WHILE FREE Tab(30000) PRINT END_SUB
SUB PRT_STACK(Ptr%) DIM_LOCAL j% SHOW 30:DEBUG=0 SHOW 32 ITEM_ADD 31,"----------------------------" ITEM_ADD 31,"- STACK -" ITEM_ADD 31,"----------------------------" FOR j%=0 TO 10 ITEM_ADD 31,"#"+STR$(j%)+": "+STR$(Tab(j%))+" '"+CHR$(Tab(j%))+"'" NEXT j% ITEM_ADD 31,"Pointer:"+STR$(Ptr%) END_SUB
SUB StrInclude(a$,b$) IF VARIABLE("StrInclude$")=0 THEN DIM StrInclude$ DIM_LOCAL i% : StrInclude$="" FOR i%=1 TO LEN(a$) IF INSTR(b$,MID$(a$,i%,1))<>0 THEN StrInclude$=StrInclude$+MID$(a$,i%,1) NEXT i% END_SUB SUB ShowMessage(a$) IF OBJECT_EXISTS(100)=0 FORM 100:HIDE 100:BORDER_HIDE 100 TOP 100,(SCREEN_Y+HEIGHT(100))/2 LEFT 100,(SCREEN_X+WIDTH(100))/2 ALPHA 101:PARENT 101,100:FONT_NAME 101,"Arial" FONT_SIZE 101,14:COLOR 100,128,250,128 END_IF CAPTION 101,a$ WIDTH 100,TEXT_WIDTH(a$,101)+100 HEIGHT 100,TEXT_HEIGHT(a$,101)+50 TOP 100,(SCREEN_Y-HEIGHT(100))/2 LEFT 100,(SCREEN_X-WIDTH(100))/2 LEFT 101,50:TOP 101,25 SHOW 100 WAIT 500 HIDE 100 END_SUB
rem ============================================================================ ' Les dix premiers termes de la suite de Fibonacci DATA "+" DATA "++" DATA "+++" DATA "++++" DATA ">+>>" DATA ">>++++" DATA "+++++++" DATA "++++++++" DATA "+++++++++" DATA "++++++++++" DATA "++++++>++++" DATA "++++++++++++" DATA "+++++++++++++" DATA "+++<<<<<<[>[>>" DATA ">>>>+>+<<<<<<<-" DATA "]>>>>>>>[<<<<<<<" DATA "+>>>>>>>-]<[>++++" DATA "++++++[-<-[>>+>+<<" DATA "<-]>>>[<<<+>>>-]+<[" DATA ">[-]<[-]]>[<<[>>>+<<" DATA "<-]>>[-]]<<]>>>[>>+>+" DATA "<<<-]>>>[<<<+>>>-]+<[>" DATA "[-]<[-]]>[<<+>>[-]]<<<<" DATA "<<<]>>>>>[++++++++++++++" DATA "+++++++++++++++++++++++++" DATA "+++++++++.[-]]++++++++++<[" DATA "->-<]>+++++++++++++++++++++" DATA "+++++++++++++++++++++++++++." DATA "[-]<<<<<<<<<<<<[>>>+>+<<<<-]>" DATA ">>>[<<<<+>>>>-]<-[>>.>.<<<[-]]" DATA "<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+" DATA ">-]>[<+>-]<<<-]" DATA "#" rem ============================================================================
Des explications sur l'origine de ce langage : https://fr.wikipedia.org/wiki/BrainfuckBonne prise de tête !
Dernière édition par Nardo26 le Dim 28 Juin 2015 - 3:45, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 2:45 | |
| Pour me moquer de ce jour sans joie, je me suis amusé à coder en BF la suite de Fibonacci. Hé oui, on peut faire aussi du calcul en BF. - Code:
-
' ------------------------------------------------------------------------------ ' Interpreteur langage Brainfuck par Nardo ' ------------------------------------------------------------------------------
DIM H:H=SCREEN_Y-32 LABEL Go
WIDTH 0,SCREEN_X/2:HEIGHT 0,H/2 CAPTION 0,"Brainfuck" MEMO 1 : TOP 1,2 : LEFT 1,5 : WIDTH 1,WIDTH(0)-22 : HEIGHT 1,(H/2)-80 FONT_NAME 1,"Courier New":FONT_SIZE 1,10 : BAR_VERTICAL 1 BUTTON 4: TOP 4,HEIGHT(1)+TOP(1)+5 : LEFT 4,420 : CAPTION 4,"Go !":ON_CLICK 4,Go
DIM DEBUG:DEBUG=0 DIM a$
FORM 2: LEFT 2,SCREEN_X/2 HEIGHT 2,H : CAPTION 2,"Resultat" WIDTH 2,SCREEN_X PICTURE 3:PARENT 3,2:FULL_SPACE 3 : FONT_NAME 3,"Courier new" PRINT_TARGET_IS 3 WIDTH 2,SCREEN_X/2
FORM 30:HIDE 30:HEIGHT 30,H /2:TOP 30,H/2:WIDTH 30,SCREEN_X/2 CAPTION 30,"Debug" LIST 31:PARENT 31,30:WIDTH 31,WIDTH(30)-16 HEIGHT 31,HEIGHT(30)-80 FONT_NAME 31,"Courier New"
LABEL ClearStack BUTTON 32:HIDE 32:LEFT 32,10:TOP 32,TOP(4) CAPTION 32,"Clear Debug" ON_CLICK 32,ClearStack
' a$="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+." READ a$ WHILE a$<>"#" ITEM_ADD 1,RTRIM$(a$) READ a$ END_WHILE
END
ClearStack: CLEAR 31 : HIDE 30 : HIDE 32 RETURN
Go: INACTIVE 4 DIM Go_i,Go_a$ FOR Go_i=1 TO COUNT(1) Go_a$=Go_a$+ITEM_READ$(1,Go_i) NEXT Go_i print "Les 10 premiers termes de la suite de Fibonacci, Veuillez patienter, je calcule ..." Interprete(Go_a$) FREE Go_i:FREE Go_a$ ShowMESSAGE("Fini !") ACTIVE 4 RETURN
SUB Interprete(a$) DIM_LOCAL i%,Cde$,output$,level%,Ptr%,k$,j% DIM Tab(30000) output$="":Cde$="": Ptr%=0:level%=0 i%=1 StrInclude(a$,"><+-[].,$@") : a$=StrInclude$ WHILE i% <=LEN(a$) Cde$=MID$(a$,i%,1) IF Cde$="@" THEN MESSAGE "BrkPt" IF Cde$="$" PRT_STACK(Ptr%) END_IF IF Cde$=">" THEN Ptr%=Ptr%+1 IF Cde$="<" IF Ptr%<>0:Ptr%=Ptr%-1:ELSE:MESSAGE "Error Ptr < 0":TERMINATE:END_IF END_IF IF Cde$="+" THEN Tab(Ptr%)=Tab(Ptr%)+1 IF Cde$="-" THEN Tab(Ptr%)=Tab(Ptr%)-1 IF Cde$="[" IF Tab(Ptr%)=0 FOR j%=i%+1 TO LEN(a$) IF MID$(a$,j%,1)="[" level%=level%+1 ELSE IF MID$(a$,j%,1)="]" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF IF Cde$="]" IF Tab(Ptr%)<>0 FOR j%=i%-1 TO 1 STEP -1 IF MID$(a$,j%,1)="]" level%=level%+1 ELSE IF MID$(a$,j%,1)="[" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF
IF Cde$="." THEN PRINT CHR$(Tab(Ptr%)); IF Cde$="," k$=INKEY$:WHILE k$="":k$=INKEY$:WAIT 10:END_WHILE Tab(Ptr%)=ASC(k$) END_IF i%=i%+1 IF KEY_UP_CODE <> 0 THEN EXIT_WHILE END_WHILE FREE Tab(30000) PRINT END_SUB
SUB PRT_STACK(Ptr%) DIM_LOCAL j% SHOW 30:DEBUG=0 SHOW 32 ITEM_ADD 31,"----------------------------" ITEM_ADD 31,"- STACK -" ITEM_ADD 31,"----------------------------" FOR j%=0 TO 10 ITEM_ADD 31,"#"+STR$(j%)+": "+STR$(Tab(j%))+" '"+CHR$(Tab(j%))+"'" NEXT j% ITEM_ADD 31,"Pointer:"+STR$(Ptr%) END_SUB
SUB StrInclude(a$,b$) IF VARIABLE("StrInclude$")=0 THEN DIM StrInclude$ DIM_LOCAL i% : StrInclude$="" FOR i%=1 TO LEN(a$) IF INSTR(b$,MID$(a$,i%,1))<>0 THEN StrInclude$=StrInclude$+MID$(a$,i%,1) NEXT i% END_SUB SUB ShowMessage(a$) IF OBJECT_EXISTS(100)=0 FORM 100:HIDE 100:BORDER_HIDE 100 TOP 100,(SCREEN_Y+HEIGHT(100))/2 LEFT 100,(SCREEN_X+WIDTH(100))/2 ALPHA 101:PARENT 101,100:FONT_NAME 101,"Arial" FONT_SIZE 101,14:COLOR 100,128,250,128 END_IF CAPTION 101,a$ WIDTH 100,TEXT_WIDTH(a$,101)+100 HEIGHT 100,TEXT_HEIGHT(a$,101)+50 TOP 100,(SCREEN_Y-HEIGHT(100))/2 LEFT 100,(SCREEN_X-WIDTH(100))/2 LEFT 101,50:TOP 101,25 SHOW 100 WAIT 500 HIDE 100 END_SUB
rem ============================================================================ ' Les dix premiers termes de la suite de Fibonacci DATA "+" DATA "++" DATA "+++" DATA "++++" DATA ">+>>" DATA ">>++++" DATA "+++++++" DATA "++++++++" DATA "+++++++++" DATA "++++++++++" DATA "++++++>++++" DATA "++++++++++++" DATA "+++++++++++++" DATA "+++<<<<<<[>[>>" DATA ">>>>+>+<<<<<<<-" DATA "]>>>>>>>[<<<<<<<" DATA "+>>>>>>>-]<[>++++" DATA "++++++[-<-[>>+>+<<" DATA "<-]>>>[<<<+>>>-]+<[" DATA ">[-]<[-]]>[<<[>>>+<<" DATA "<-]>>[-]]<<]>>>[>>+>+" DATA "<<<-]>>>[<<<+>>>-]+<[>" DATA "[-]<[-]]>[<<+>>[-]]<<<<" DATA "<<<]>>>>>[++++++++++++++" DATA "+++++++++++++++++++++++++" DATA "+++++++++.[-]]++++++++++<[" DATA "->-<]>+++++++++++++++++++++" DATA "+++++++++++++++++++++++++++." DATA "[-]<<<<<<<<<<<<[>>>+>+<<<<-]>" DATA ">>>[<<<<+>>>>-]<-[>>.>.<<<[-]]" DATA "<<[>>+>+<<<-]>>>[<<<+>>>-]<<[<+" DATA ">-]>[<+>-]<<<-]" DATA "#" rem ============================================================================
| |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 3:01 | |
| Bon tu m'a grille pour Fibonacci... Quelques exemples ! Suite de Fibonacci (pas tout à fait le même code) Cet exemple ne s'arrête pas tout seul : appuyez sur ESC pour sortir. >++++++++++>+>+[ [+++++[>++++++++<-]>.<++++++[>--------<-]+<<<]>.>>[ [-]<[>+<-]>>[<<+>+>-]<[>+<-[>+<-[>+<-[>+<-[>+<-[>+<- [>+<-[>+<-[>+<-[>[-]>+>+<<<-[>+<-]]]]]]]]]]]+>>> ]<<< ] Les des nombres au carré (touche ESC pour sortir)++++[>+++++<-]>[<+++++>-]+<+[ >[>+>+<<-]++>>[<<+>>-]>>>[-]++>[-]+ >>>+[[-]++++++>>>]<<<[[<++++++++<++>>-]+<.<[>----<-]<] <<[>>>>>[>>>[-]+++++++++<[>-<-]+++++++++>[-[<->-]+[<<<]]<[>+<-]>]<<-]<<- ] Un decompte de 9 à 0 ++++++++++[>+>+<<-] >>+++++++++++++++++++++++++++++++++++++++++++++++<< ++++++++++[>>.-<.<-] mandelbrotLà vous pouvez aller boire le café, faire vos courses avant de commencer à voir apparaitre quelque chose... - Spoiler:
+++++++++++++[->++>>>+++++>++>+<<<<<<]>>>>>++++++>--->>>>>>>>>>+++++++++++++++[[ >>>>>>>>>]+[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-]>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+ <<<<<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>>+>>>>>>>>>>>>>>>>>>>>>>>>>> >+<<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+[>>>>>>[>>>>>>>[-]>>]<<<<<<<<<[<<<<<<<<<]>> >>>>>[-]+<<<<<<++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<+++++++[-[->>> >>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[[-]>>>>>>[>>>>> >>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>> [>>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<< <<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>+++++++++++++++[[ >>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[ >+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[ -<<+>>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<< <<[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<< [>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>> >>>>[>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+ <<<<<<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>> >>>>>>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<< +>>>>>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<< <]<+<<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>> >>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<< <<<]>>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<< <<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[-> >>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<< <<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]<<<<<<<[->+>>>-<<<<]>>>>>>>>>+++++++++++++++++++ +++++++>>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>[<<<<<<<+<[-<+>>>>+<<[-]]>[-<<[->+>>>- <<<<]>>>]>>>>>>>>>>>>>[>>[-]>[-]>[-]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>>>>>>[>>>>> [-<<<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>[-<<<<<<<< <+>>>>>>>>>]>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>>>]+>[- ]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>>>>>>>>]<<< <<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+>>]< <[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[->>>> >>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[-]<->>> [-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[>>>>>>[-< <<<<+>>>>>]<<<<<[->>>>>+<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>+>>>>>>>> ]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<[->>[-<<+ >>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[> [->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[- ]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>> [>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>++++++++ +++++++[[>>>>>>>>>]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>>>>>>[-<<<<<<<+ >>>>>>>]<<<<<<<[->>>>>>>+<<<<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[ -]>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>>>]>[-<<<<<<[->>>>>+<++<<<<]>>>>>[-< <<<<+>>>>>]<->+>]<[->+<]<<<<<[->>>>>+<<<<<]>>>>>>[-]<<<<<<+>>>>[-<<<<->>>>]+<<<< [->>>>->>>>>[>>[-<<->>]+<<[->>->[-<<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-] +>>>>>>[>>>>>>>>>]>+<]]+>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<<<<<<<<<<<[<<<<< <<<<]>>>>[-]+>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<< [<<<<<<<<<]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<< <<<+<[>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<< <<<<<+>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<< <<<<<<<<<<]>>>>[-]<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+<]>>>>>>>>]<<< <<<<<+<[>[->>>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>[->>>>+<<<<]>]<[->>>>-<<<<<<< <<<<<<<+>>>>>>>>>>]<]>>[->>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>>+<<<< ]<<<<<<<<<<<]>>>>>>+<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>>>>>>>>>]<<<<<<<<< [>[->>>>>+<<<<[->>>>-<<<<<<<<<<<<<<+>>>>>>>>>>>[->>>+<<<]<]>[->>>-<<<<<<<<<<<<<< +>>>>>>>>>>>]<<]>[->>>>+<<<[->>>-<<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>>+<<<]<<<<<<< <<<<<]]>[-]>>[-]>[-]>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-< <<<+>>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[ [>>>>>>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+ [>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->> [-<<+>>]<<[->>+>+<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<< <[>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[ >[-]<->>>[-<<<+>[<->-<<<<<<<+>>>>>>>]<[->+<]>>>]<<[->>+<<]<+<<<<<<<<<]>>>>>>>>>[ >>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>]> >>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>[-]>>>>+++++++++++++++[[>>>>>>>>>]<<<<<<<<<-<<<<< <<<<[<<<<<<<<<]>>>>>>>>>-]+[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<< <<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[- <<<+>>>]<<<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>> >>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>>> [-<<<->>>]<<<[->>>+<<<]>>>>>>>>]<<<<<<<<+<[>[->+>[-<-<<<<<<<<<<+>>>>>>>>>>>>[-<< +>>]<]>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<<<]>>[-<+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>>]<]> [-<<+>>]<<<<<<<<<<<<<]]>>>>[-<<<<+>>>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>> >>>>>>]<<<<<<<<+<[>[->+>>[-<<-<<<<<<<<<<+>>>>>>>>>>>[-<+>]>]<[-<-<<<<<<<<<<+>>>> >>>>>>>]<<]>>>[-<<+>[-<-<<<<<<<<<<+>>>>>>>>>>>]>]<[-<+>]<<<<<<<<<<<<]>>>>>+<<<<< ]>>>>>>>>>[>>>[-]>[-]>[-]>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>>>[-<<<<< <+>>>>>>]<<<<<<[->>>>>>+<<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>+>[-<-<<<<+>>>> >]>>[-<<<<<<<[->>>>>+<++<<<<]>>>>>[-<<<<<+>>>>>]<->+>>]<<[->>+<<]<<<<<[->>>>>+<< <<<]+>>>>[-<<<<->>>>]+<<<<[->>>>->>>>>[>>>[-<<<->>>]+<<<[->>>-<[-<<+>>]<<[->>+<< <<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>[-<<->>]+<<[->>->[-<<<+>>>]< <<[->>>+<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]< <<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-<<<+>>>]<<<[->>>+>>>>>>[>+>[-<->]<[->+ <]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>[->>>+<<<]>]<[->>>- <<<<<<<<<<<<<+>>>>>>>>>>]<]>>[->>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>]>]<[->>>+<<< ]<<<<<<<<<<<]>>>>>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]]>>>>[-<<<<+> >>>]<<<<[->>>>+>>>>>[>+>>[-<<->>]<<[->>+<<]>>>>>>>>]<<<<<<<<+<[>[->>>>+<<<[->>>- <<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<<]>[->>>+<<[ ->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<<<<<<]]>>>>[-]<<<<]>>>>[-<<<<+>> >>]<<<<[->>>>+>[-]>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+<<+<<<<<]>>>>>>>>>[>>>>>> >>>]<<<<<<<<<[>[->>>>+<<<[->>>-<<<<<<<<<<<<<+>>>>>>>>>>>[->>+<<]<]>[->>-<<<<<<<< <<<<<+>>>>>>>>>>>]<<]>[->>>+<<[->>-<<<<<<<<<<<<<+>>>>>>>>>>>]<]>[->>+<<]<<<<<<<< <<<<]]>>>>>>>>>[>>[-]>[-]>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>[-]>[-]>>>>>[>>>>>[-<<<<+ >>>>]<<<<[->>>>+<<<+<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<+>>>>> ]<<<<<[->>>>>+<<<+<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>> >>>>>]+>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]>[-]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+[>+>> >>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>[-<<<<+>>>>]<<<<[->>>>+<<<<<[->>[-<<+ >>]<<[->>+>>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[> [->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<]>[->>>>>>>>>+<<<<<<<<<]<+>>>>>>>>]<<<<<<<<<[>[- ]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+<<<<<<<<<]>>>>>>>>> [>+>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>->>>>>[-<<<<<+>>>>>]<<<<<[->>>>>+<<<< <<[->>>[-<<<+>>>]<<<[->>>+>+<<<<]+>>>>>>>>>]<<<<<<<<[<<<<<<<<<]]>>>>>>>>>[>>>>>> >>>]<<<<<<<<<[>>[->>>>>>>>>+<<<<<<<<<]<<<<<<<<<<<]>>[->>>>>>>>>+<<<<<<<<<]<<+>>> >>>>>]<<<<<<<<<[>[-]<->>>>[-<<<<+>[<->-<<<<<<+>>>>>>]<[->+<]>>>>]<<<[->>>+<<<]<+ <<<<<<<<<]>>>>>>>>>[>>>>[-<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<+>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>]>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>+++++++++++++++[[>>>>>>>> >]<<<<<<<<<-<<<<<<<<<[<<<<<<<<<]>>>>>>>>>-]+>>>>>>>>>>>>>>>>>>>>>+<<<[<<<<<<<<<] >>>>>>>>>[>>>[-<<<->>>]+<<<[->>>->[-<<<<+>>>>]<<<<[->>>>+<<<<<<<<<<<<<[<<<<<<<<< ]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>[-<<<<->>>>]+<<<<[->>>>-<[-<<<+>>>]<<<[->>>+< <<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]> >>>>>>>]<<<<<<<<<[<<<<<<<<<]>>->>[-<<<<+>>>>]<<<<[->>>>+<<[-]<<]>>]<<+>>>>[-<<<< ->>>>]+<<<<[->>>>-<<<<<<.>>]>>>>[-<<<<<<<.>>>>>>>]<<<[-]>[-]>[-]>[-]>[-]>[-]>>>[ >[-]>[-]>[-]>[-]>[-]>[-]>>>]<<<<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>[-]>>>>]<<<<<<<<< [<<<<<<<<<]>+++++++++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+>>>>>>>>>+<<<<<<<< <<<<<<[<<<<<<<<<]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+[-]>>[>>>>>>>>>]<<<<< <<<<[>>>>>>>[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<[<<<<<<<<<]>>>>>>>[-]+>>>]<<<< <<<<<<]]>>>>>>>[-<<<<<<<+>>>>>>>]<<<<<<<[->>>>>>>+>>[>+>>>>[-<<<<->>>>]<<<<[->>> >+<<<<]>>>>>>>>]<<+<<<<<<<[>>>>>[->>+<<]<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<< <<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<<<<<<[->>>>>>+<<<<<<]< +<<<<<<<<<]>>>>>>>-<<<<[-]+<<<]+>>>>>>>[-<<<<<<<->>>>>>>]+<<<<<<<[->>>>>>>->>[>> >>>[->>+<<]>>>>]<<<<<<<<<[>[-]<->>>>>>>[-<<<<<<<+>[<->-<<<+>>>]<[->+<]>>>>>>>]<< <<<<[->>>>>>+<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>+<<< <<[<<<<<<<<<]>>>>>>>>>[>>>>>[-<<<<<->>>>>]+<<<<<[->>>>>->>[-<<<<<<<+>>>>>>>]<<<< <<<[->>>>>>>+<<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>[-< <<<<<<->>>>>>>]+<<<<<<<[->>>>>>>-<<[-<<<<<+>>>>>]<<<<<[->>>>>+<<<<<<<<<<<<<<[<<< <<<<<<]>>>[-]+>>>>>>[>>>>>>>>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<< <<[<<<<<<<<<]>>>>[-]<<<+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>-<<<<<[<<<<<<< <<]]>>>]<<<<.>>>>>>>>>>[>>>>>>[-]>>>]<<<<<<<<<[<<<<<<<<<]>++++++++++[-[->>>>>>>> >+<<<<<<<<<]>>>>>>>>>]>>>>>+>>>>>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>>>>>>[-<<<<<< <<+>>>>>>>>]<<<<<<<<[->>>>>>>>+[-]>[>>>>>>>>>]<<<<<<<<<[>>>>>>>>[-<<<<<<<+>>>>>> >]<<<<<<<[->>>>>>>+<<<<<<<<[<<<<<<<<<]>>>>>>>>[-]+>>]<<<<<<<<<<]]>>>>>>>>[-<<<<< <<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+>[>+>>>>>[-<<<<<->>>>>]<<<<<[->>>>>+<<<<<]>>>>>> >>]<+<<<<<<<<[>>>>>>[->>+<<]<<<<<<<<<<<<<<<]>>>>>>>>>[>>>>>>>>>]<<<<<<<<<[>[-]<- >>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<<<<<<<[->>>>>>>+<<<<<<<]<+<<<<<< <<<]>>>>>>>>-<<<<<[-]+<<<]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>>->[>>> >>>[->>+<<]>>>]<<<<<<<<<[>[-]<->>>>>>>>[-<<<<<<<<+>[<->-<<+>>]<[->+<]>>>>>>>>]<< <<<<<[->>>>>>>+<<<<<<<]<+<<<<<<<<<]>+++++[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>> +>>>>>>>>>>>>>>>>>>>>>>>>>>>+<<<<<<[<<<<<<<<<]>>>>>>>>>[>>>>>>[-<<<<<<->>>>>>]+< <<<<<[->>>>>>->>[-<<<<<<<<+>>>>>>>>]<<<<<<<<[->>>>>>>>+<<<<<<<<<<<<<<<<<[<<<<<<< <<]>>>>[-]+>>>>>[>>>>>>>>>]>+<]]+>>>>>>>>[-<<<<<<<<->>>>>>>>]+<<<<<<<<[->>>>>>>> -<<[-<<<<<<+>>>>>>]<<<<<<[->>>>>>+<<<<<<<<<<<<<<<[<<<<<<<<<]>>>[-]+>>>>>>[>>>>>> >>>]>[-]+<]]+>[-<[>>>>>>>>>]<<<<<<<<]>>>>>>>>]<<<<<<<<<[<<<<<<<<<]>>>>[-]<<<++++ +[-[->>>>>>>>>+<<<<<<<<<]>>>>>>>>>]>>>>>->>>>>>>>>>>>>>>>>>>>>>>>>>>-<<<<<<[<<<< <<<<<]]>>>]
Au final on obtient ceci : | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 4:02 | |
| Bon, amusons-nous! Voici le calcul de factorielle N! - Code:
-
' ------------------------------------------------------------------------------ ' Interpreteur langage Brainfuck par Nardo ' ------------------------------------------------------------------------------
DIM H:H=SCREEN_Y-32 LABEL Go
WIDTH 0,SCREEN_X/2:HEIGHT 0,H/2 CAPTION 0,"Brainfuck" MEMO 1 : TOP 1,2 : LEFT 1,5 : WIDTH 1,WIDTH(0)-22 : HEIGHT 1,(H/2)-80 FONT_NAME 1,"Courier New":FONT_SIZE 1,10 : BAR_VERTICAL 1 BUTTON 4: TOP 4,HEIGHT(1)+TOP(1)+5 : LEFT 4,420 : CAPTION 4,"Go !":ON_CLICK 4,Go
DIM DEBUG:DEBUG=0 DIM a$
FORM 2: LEFT 2,SCREEN_X/2 HEIGHT 2,H : CAPTION 2,"Resultat" WIDTH 2,SCREEN_X PICTURE 3:PARENT 3,2:FULL_SPACE 3 : FONT_NAME 3,"Courier new" PRINT_TARGET_IS 3 WIDTH 2,SCREEN_X/2
FORM 30:HIDE 30:HEIGHT 30,H /2:TOP 30,H/2:WIDTH 30,SCREEN_X/2 CAPTION 30,"Debug" LIST 31:PARENT 31,30:WIDTH 31,WIDTH(30)-16 HEIGHT 31,HEIGHT(30)-80 FONT_NAME 31,"Courier New"
LABEL ClearStack BUTTON 32:HIDE 32:LEFT 32,10:TOP 32,TOP(4) CAPTION 32,"Clear Debug" ON_CLICK 32,ClearStack
' a$="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+." READ a$ WHILE a$<>"#" ITEM_ADD 1,RTRIM$(a$) READ a$ END_WHILE
END
ClearStack: CLEAR 31 : HIDE 30 : HIDE 32 RETURN
Go: INACTIVE 4 DIM Go_i,Go_a$ FOR Go_i=1 TO COUNT(1) Go_a$=Go_a$+ITEM_READ$(1,Go_i) NEXT Go_i print "Calcul de factorielle N! (à partir de 0!............. <Une touche pour arrêter" Interprete(Go_a$) FREE Go_i:FREE Go_a$ ShowMESSAGE("Fini !") ACTIVE 4 RETURN
SUB Interprete(a$) DIM_LOCAL i%,Cde$,output$,level%,Ptr%,k$,j% DIM Tab(30000) output$="":Cde$="": Ptr%=0:level%=0 i%=1 StrInclude(a$,"><+-[].,$@") : a$=StrInclude$ WHILE i% <=LEN(a$) Cde$=MID$(a$,i%,1) IF Cde$="@" THEN MESSAGE "BrkPt" IF Cde$="$" PRT_STACK(Ptr%) END_IF IF Cde$=">" THEN Ptr%=Ptr%+1 IF Cde$="<" IF Ptr%<>0:Ptr%=Ptr%-1:ELSE:MESSAGE "Error Ptr < 0":TERMINATE:END_IF END_IF IF Cde$="+" THEN Tab(Ptr%)=Tab(Ptr%)+1 IF Cde$="-" THEN Tab(Ptr%)=Tab(Ptr%)-1 IF Cde$="[" IF Tab(Ptr%)=0 FOR j%=i%+1 TO LEN(a$) IF MID$(a$,j%,1)="[" level%=level%+1 ELSE IF MID$(a$,j%,1)="]" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF IF Cde$="]" IF Tab(Ptr%)<>0 FOR j%=i%-1 TO 1 STEP -1 IF MID$(a$,j%,1)="]" level%=level%+1 ELSE IF MID$(a$,j%,1)="[" IF Level%=0 THEN i%=j%:EXIT_FOR Level%=Level%-1 END_IF END_IF NEXT j% END_IF END_IF
IF Cde$="." THEN PRINT CHR$(Tab(Ptr%)); IF Cde$="," k$=INKEY$:WHILE k$="":k$=INKEY$:WAIT 10:END_WHILE Tab(Ptr%)=ASC(k$) END_IF i%=i%+1 IF KEY_UP_CODE <> 0 THEN EXIT_WHILE END_WHILE FREE Tab(30000) PRINT END_SUB
SUB PRT_STACK(Ptr%) DIM_LOCAL j% SHOW 30:DEBUG=0 SHOW 32 ITEM_ADD 31,"----------------------------" ITEM_ADD 31,"- STACK -" ITEM_ADD 31,"----------------------------" FOR j%=0 TO 10 ITEM_ADD 31,"#"+STR$(j%)+": "+STR$(Tab(j%))+" '"+CHR$(Tab(j%))+"'" NEXT j% ITEM_ADD 31,"Pointer:"+STR$(Ptr%) END_SUB
SUB StrInclude(a$,b$) IF VARIABLE("StrInclude$")=0 THEN DIM StrInclude$ DIM_LOCAL i% : StrInclude$="" FOR i%=1 TO LEN(a$) IF INSTR(b$,MID$(a$,i%,1))<>0 THEN StrInclude$=StrInclude$+MID$(a$,i%,1) NEXT i% END_SUB SUB ShowMessage(a$) IF OBJECT_EXISTS(100)=0 FORM 100:HIDE 100:BORDER_HIDE 100 TOP 100,(SCREEN_Y+HEIGHT(100))/2 LEFT 100,(SCREEN_X+WIDTH(100))/2 ALPHA 101:PARENT 101,100:FONT_NAME 101,"Arial" FONT_SIZE 101,14:COLOR 100,128,250,128 END_IF CAPTION 101,a$ WIDTH 100,TEXT_WIDTH(a$,101)+100 HEIGHT 100,TEXT_HEIGHT(a$,101)+50 TOP 100,(SCREEN_Y-HEIGHT(100))/2 LEFT 100,(SCREEN_X-WIDTH(100))/2 LEFT 101,50:TOP 101,25 SHOW 100 WAIT 500 HIDE 100 END_SUB rem ============================================================================
DATA ">++++++++++" DATA ">>>+" DATA ">+" DATA "[>>>+" DATA "[-" DATA "[<<<<<[+<<<<<]>>[[-]>[<<+>+>-]<[>+<-]<[>+<-[>+<-[>" DATA "+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>+<-[>[-]>>>>+>+<<<<<<-[>+<-]]]]]]]]]]]>[<+>-" DATA "]+>>>>>]<<<<<[<<<<<]>>>>>>>[>>>>>]++[-<<<<<]>>>>>>-]+>>>>>]<[>++<-]<<<<[<[" DATA ">+<-]<<<<]>>[->[-]++++++[<++++++++>-]>>>>]<<<<<[<[>+>+<<-]>.<<<<<]>.>>>>]"
DATA "#" rem ============================================================================
| |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 6:19 | |
| inutile mais original ! Là, a ce niveau, les dolipranes ne font même plus effet... Je ne connaissais pas ce langage et ses dérivés. Je m'imagine bien coder mon programme GPP comme ça. Bin je suis pas arrivé. Merci a tous les 2 | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 9:21 | |
| Faut pas quantifier en cachet mais en boite à ce stade !!! tu as vu le code de Mandelbrot (spoiler) ? C'est pratiquement un raisonnement en langage assembleur... (d'où Turing) @Papydall : j'ai modifié la commande "," (saisie de caractère) car elle ne fonctionnait pas vraiment (cf le source du début). Tu peux faire un copier/coller d'un prog dans le memo : ça t'evite de le mettre à chaque fois dans les datas... Une chose aussi qu'il reste à arranger c'est l'appui sur la touche ESC pour sortir d'une boucle infernale: décidément cette touche ne veut pas fonctionner correctement sur mon PC... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 28 Juin 2015 - 12:50 | |
| C' est du délire ces langages... Moi qui plaisantais avec mes lapins... Et, effectivement ce n' est pas de cachet de doliprane qu' il faut mais du valium en perfusion. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Interpréteur langage BF Dim 28 Juin 2015 - 14:03 | |
| ++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>--------------. +++++++++++++++++++. +++++++++++++. -----------------. <<++. >++++++++++. >----. +++++++++++++. +. +++. <+++++++++++++++++. >-----. ----. <++. <. +. -. >---------------------------------. >++++++. -. <<. >>+++++++++. ------------------. . ++++++. <<+++++++++++++. >>------. +++++++++. ----------. <<-------------. +. -. >--------. <+++++++++. | |
| | | Contenu sponsorisé
| Sujet: Re: Interpréteur langage BF | |
| |
| | | | Interpréteur langage BF | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |