FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Interpréteur langage BF Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Interpréteur langage BF Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Interpréteur langage BF Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Interpréteur langage BF Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Interpréteur langage BF Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Interpréteur langage BF Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Interpréteur langage BF Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Interpréteur langage BF Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Interpréteur langage BF Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Interpréteur langage BF Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Interpréteur langage BF Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Interpréteur langage BF Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Interpréteur langage BF Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Interpréteur langage BF Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Interpréteur langage BF Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -38%
Ecran PC gaming 23,8″ – ACER KG241Y P3bip ...
Voir le deal
99.99 €

 

 Interpréteur langage BF

Aller en bas 
4 participants
AuteurMessage
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Interpréteur langage BF Empty
MessageSujet: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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... Interpréteur langage BF 07

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/Brainfuck
Bonne prise de tête ! Interpréteur langage BF 08


Dernière édition par Nardo26 le Dim 28 Juin 2015 - 3:45, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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 ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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
++++++++++[>+>+<<-]
>>+++++++++++++++++++++++++++++++++++++++++++++++<<
++++++++++[>>.-<.<-]


mandelbrot
Là vous pouvez aller boire le café, faire vos courses avant de commencer à voir apparaitre quelque chose... Interpréteur langage BF 08

Spoiler:
Au final on obtient ceci :
Interpréteur langage BF Mandelbrot
Revenir en haut Aller en bas
http://nardo26.lescigales.org
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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 ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Minibug

Minibug


Nombre de messages : 4570
Age : 58
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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é.

affraid affraid lol!

Merci a tous les 2 Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 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... Wink

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... Interpréteur langage BF 58
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Interpréteur langage BF Empty
MessageSujet: re   Interpréteur langage BF EmptyDim 28 Juin 2015 - 12:50

affraid affraid 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.
lol!
Revenir en haut Aller en bas
Nardo26

Nardo26


Nombre de messages : 2294
Age : 56
Localisation : Valence
Date d'inscription : 02/07/2010

Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF EmptyDim 28 Juin 2015 - 14:03

++++++++++[>+>+++>+++++++>++++++++++<<<<-]>>>>--------------. +++++++++++++++++++. +++++++++++++. -----------------. <<++. >++++++++++. >----. +++++++++++++. +. +++. <+++++++++++++++++. >-----. ----. <++. <. +. -. >---------------------------------. >++++++. -. <<. >>+++++++++. ------------------. . ++++++. <<+++++++++++++. >>------. +++++++++. ----------. <<-------------. +. -. >--------. <+++++++++.

Interpréteur langage BF 07
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Contenu sponsorisé





Interpréteur langage BF Empty
MessageSujet: Re: Interpréteur langage BF   Interpréteur langage BF Empty

Revenir en haut Aller en bas
 
Interpréteur langage BF
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] FILE_EXISTS(F) avec Panoramic Editor (Interpréteur)
» Les programmes de papydall
» compréhension du langage
» Langage Linotte.
» Besoin d'aide en langage C

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les inutilitaires-
Sauter vers: