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
» Une calculatrice en une ligne de programme
Interpréteur langage BF Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Interpréteur langage BF Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Interpréteur langage BF Emptypar Marc Hier à 11:42

» Bataille navale SM
Interpréteur langage BF Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Interpréteur langage BF Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Interpréteur langage BF Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Interpréteur langage BF Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Interpréteur langage BF Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Interpréteur langage BF Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Interpréteur langage BF Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Interpréteur langage BF Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Interpréteur langage BF Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Interpréteur langage BF Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Interpréteur langage BF Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Interpréteur langage BF Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment : -20%
-20% Récupérateur à eau mural 300 ...
Voir le deal
79 €

 

 Interpréteur langage BF

Aller en bas 
4 participants
AuteurMessage
Nardo26

Nardo26


Nombre de messages : 2294
Age : 55
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 : 6996
Age : 73
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 : 55
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 : 6996
Age : 73
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 : 4566
Age : 57
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 : 55
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 : 8610
Age : 52
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 : 55
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)
» compréhension du langage
» Langage Linotte.
» Les programmes de papydall
» Présentation du créateur du langage

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: