Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   BrainFuck Compiler (https://www.delphipraxis.net/41518-brainfuck-compiler.html)

Pr0g 4. Mär 2005 14:18


BrainFuck Compiler
 
Hallo,

ich habe einen kleinen BrainFuck Compiler geschrieben. Was soll ich noch groß dazu sagen, ein paar Beispielcodes liegen auch bei: Download (26.7Kb - .zip)

Einfach Programm starten, dann die Codedatei angeben und einen Namen für die .com Datei, das wars.

Wer nicht weiß was BrainFuck ist kann sich bei Wikipedia schlau machen: Link.


MfG Pr0g

malo 4. Mär 2005 14:53

Re: BrainFuck Compiler
 
Hehe, ganz nett. Nur solche DOS-Konsolen sagen mir nicht zu, das find ich irgendwie... unschön. Aber sonst klasse! :thumb:


Auch, wenn ich vorher nie von BrainFuck gehört habe :mrgreen:

moritz 4. Mär 2005 15:10

Re: BrainFuck Compiler
 
Juhu, Brainfuck :) :drunken:
Der Compiler schaut nett aus, mich würde der Quellcode mal interessieren. Einen Hinweis noch:
Man sollte beim Compiler (auch) mit Parametern arbeiten können.

Pr0g 4. Mär 2005 15:26

Re: BrainFuck Compiler
 
Hab nen Update hochgeladen, die Codedatei kann nun als erster und die Zieldatei als zweiter Parameter angegeben werden. Bei falschen oder fehlerhaften Angaben kommt die normale Abfrage, als wenn man ohne Parameter starten würde.

mr47 4. Mär 2005 15:33

Re: BrainFuck Compiler
 
hi. cool. Aber ich hab noch nicht verstanden, wie die syntax funzt! (von bf)


mfg

Pr0g 4. Mär 2005 15:41

Re: BrainFuck Compiler
 
Zitat:

Zitat von mr47
hi. cool. Aber ich hab noch nicht verstanden, wie die syntax funzt! (von bf)

Hast du dir den Wikipedia-Link mal angesehen? Sonst guck auch nochmal unter Bei Google suchenbrainfuck tutorial

mr47 4. Mär 2005 16:00

Re: BrainFuck Compiler
 
Ahso :coder: :mrgreen: . Ist ja ganz lustig. Und ansonsten :thumb: . Das einzig merkwürdige ist ja der Name! Brainfuck . Also ich würd des ja mit Gehirnf*** übersetzen :mrgreen:

mfg

mael 4. Mär 2005 16:07

Re: BrainFuck Compiler
 
"Interessant" in diesem Zusammenhang wären wohl noch die bekannten Programmiersprachen "Whitespace" die nicht kopierbaren Quelltext garantiert ;-) und die 2-dimensionale Sprache "Befunge".

Wer noch mehr kreative Sprachen kennenlernen möchte, der ergötze sich an dieser Seite:
http://de.wikipedia.org/wiki/Liste_e...ammiersprachen

Pr0g 4. Mär 2005 16:13

Re: BrainFuck Compiler
 
Hier kann man sich auch gleich ein paar Codes zu "Hallo Welt" für diese Sprachen ansehen: Link, vielleicht auch interessant.

Vader 6. Mär 2005 08:24

Re: BrainFuck Compiler
 
hallo,

wenn ich die quelldatei eingebe, kommt die meldung : datei nicht
gefunden

meine eingabe ist c:\ hello_world
die datei hello_world hab ich auf c:\ abespeichert

warum findet er sie nicht ??

mfg vader

Rastaman 6. Mär 2005 09:00

Re: BrainFuck Compiler
 
Weil es C:\hello_world.txt heissen muss.
Wieso macht man sich die Arbeit und schreibt mit Brainfuck Progs, wos doch mit Delphi viiiiiel einfacher geht?
Ok sind viel kleiner aber sonst :gruebel:
Trotzdem cooles Programm :thumb:

moritz 6. Mär 2005 09:22

Re: BrainFuck Compiler
 
Zitat:

Zitat von Gerrit89
Wieso macht man sich die Arbeit und schreibt mit Brainfuck Progs, wos doch mit Delphi viiiiiel einfacher geht?

Weil 's Spaß macht! :) Um die Größe geht es da, denke ich, nicht.

Gruß!

Vader 6. Mär 2005 11:04

Re: BrainFuck Compiler
 
hallo

peinlich, aber ich sag danke !

mfg vader

Pr0g 6. Mär 2005 13:07

Re: BrainFuck Compiler
 
BrainFuck ist wie die anderen esoterischen Sprachen wohl weniger zum effektiven Programmieren geeignet. Sie wurden einfach aus Spaß und Interesse an der Sache erstellt. Das ist das gleiche wie jeder wohl mal mit Delphi nen Rechner gemacht hat. Dort gibts es auch bessere, bspw. den von Windows, aber man macht es als ersten Schritt und weil es Spaß macht. Vielleicht nicht das beste Beispiel aber ihr wisst bestimmt wie ich das meine, bzw. denke. Habe die Sprache ja nicht selber gemacht.

moritz 6. Mär 2005 13:10

Re: BrainFuck Compiler
 
Die beste Erklärung der Sprache ist wohl der Name selber :mrgreen:

Pr0g 6. Mär 2005 13:32

Re: BrainFuck Compiler
 
Habe das Archiv mal um einen etwas komplexeren Beispielcode erweitert:
Code:
===================================================================
======================== OUTPUT STRING ============================
===================================================================
>++++++++[<++++++++>-]<++++++++++++++++.[-]
>++++++++++[<++++++++++>-]<++++++++++++++.[-]
>++++++++++[<++++++++++>-]<+++++.[-]
>++++++++++[<++++++++++>-]<+++++++++.[-]
>++++++++++[<++++++++++>-]<+.[-]
>++++++++++[<++++++++++>-]<+++++++++++++++.[-]
>+++++[<+++++>-]<+++++++.[-]
>++++++++++[<++++++++++>-]<+++++++++++++++++.[-]
>++++++++++[<++++++++++>-]<++++++++++++.[-]
>+++++[<+++++>-]<+++++++.[-]
>++++++++++[<++++++++++>-]<++++++++++++++++.[-]
>++++++++++[<++++++++++>-]<+++++++++++.[-]
>+++++++[<+++++++>-]<+++++++++.[-]
>+++++[<+++++>-]<+++++++.[-]

===================================================================
======================== INPUT NUMBER ============================
===================================================================
+                          cont=1
[
 -                         cont=0
 >,
 ======SUB10======
 ----------
 
 [                         not 10
  <+>                     cont=1
  =====SUB38======
  ----------
  ----------
  ----------
  --------

  >
  =====MUL10=======
  [>+>+<<-]>>[<<+>>-]<    dup

  >>>+++++++++
  [
   <<<
   [>+>+<<-]>>[<<+>>-]<   dup
   [<<+>>-]
   >>-
  ]
  <<<[-]<
  ======RMOVE1======
  <
  [>+<-]
 ]
 <
]
>>[<<+>>-]<<

===================================================================
======================= PROCESS NUMBER ===========================
===================================================================

==== ==== ==== ====
numd numu teid teiu
==== ==== ==== ====

>+<-
[
 >+
 ======DUP======
 [>+>+<<-]>>[<<+>>-]<

 >+<--

 >>>>>>>>+<<<<<<<<  isprime=1

 [
  >+

  <-

  =====DUP3=====
  <[>>>+>+<<<<-]>>>>[<<<<+>>>>-]<<<

  =====DUP2=====
  >[>>+>+<<<-]>>>[<<<+>>>-]<<< <


  >>>


  ====DIVIDES=======
  [>+>+<<-]>>[<<+>>-]<  DUP i=div
 
  <<
  [
    >>>>>+               bool=1
    <<<
    [>+>+<<-]>>[<<+>>-]< DUP
    [>>[-]<<-]          IF i THEN bool=0
    >>
    [                    IF i=0
      <<<<
      [>+>+<<-]>>[<<+>>-]< i=div
      >>>
      -                  bool=0
    ]
    <<<
    -                    DEC i
    <<
    -
  ]
 
  +>>[<<[-]>>-]<<        
  >[-]<                 CLR div
  =====END DIVIDES====


  [>>>>>>[-]<<<<<<-]    if divides then isprime=0


  <<

  >>[-]>[-]<<<
 ]

 >>>>>>>>
 [
  -
  <<<<<<<[-]<<

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

  >>




  ===================================================================
  ======================== OUTPUT NUMBER ===========================
  ===================================================================
  [>+<-]>
 
  [
   ======DUP======
   [>+>+<<-]>>[<<+>>-]<
 
 
   ======MOD10====
   >+++++++++<
   [
    >>>+<<             bool= 1
    [>+>[-]<<-]        bool= ten==0
    >[<+>-]            ten = tmp
    >[<<++++++++++>>-] if ten=0 ten=10
    <<-                 dec ten    
    <-                  dec num
   ]
   +++++++++            num=9
   >[<->-]<            dec num by ten
 
   =======RROT======
      [>+<-]
   < [>+<-]
   < [>+<-]
   >>>[<<<+>>>-]
   <
 
   =======DIV10========
   >+++++++++<
   [
    >>>+<<               bool= 1
    [>+>[-]<<-]          bool= ten==0
    >[<+>-]              ten = tmp
    >[<<++++++++++>>>+<-] if ten=0 ten=10  inc div
    <<-                   dec ten    
    <-                    dec num
   ]
   >>>>[<<<<+>>>>-]<<<<  copy div to num
   >[-]<                 clear ten
 
   =======INC1=========
   <+>
  ]
 
  <
  [
   =======MOVER=========
   [>+<-]
 
   =======ADD48========
   +++++++[<+++++++>-]<->
 
   =======PUTC=======
   <.[-]>
 
   ======MOVEL2========
   >[<<+>>-]<
 
   <-
  ]
 
  >++++[<++++++++>-]<.[-]
 
  ===================================================================
  =========================== END FOR ===============================
  ===================================================================


  >>>>>>>
 ]
 <<<<<<<<



 >[-]<
  [-]
 <<-
]
 
======LF========
 
++++++++++.[-],
Damit lassen sich Primzahlen berechnen und zuvor kommt eine Abfrage, bis zu welcher Zahl diese errechnet werden sollen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz