english version
Dokumente bei /Partusch

Brainfucked Dokumentation

Das Folgende ist die Dokumentation des Programms Brainfucked - Brainfuck Compiler.

Inhalt dieser Seite:
  1. Inhalt des Downloadpakets
  2. Die Sprache Brainfuck
  3. Der Brainfucked Compiler
    1. Aufruf
    2. Code-Optimierung
    3. Syntax-Check
    4. Kompatibilität
    5. Meldungen
  4. Die Lizenzbedingungen
 

Inhalt des Downloadpakets

DateiBeschreibung
bfd.comDer Brainfucked Compiler selbst
bfd.asmDer Quellcode von Brainfucked
src/Dieses Verzeichnis enthält in Brainfuck geschriebene Beispielprogramme
src/factor.bEin Programm zur Primfaktorzerlegung einer beliebigen positiven Ganzzahl
src/hello.bGibt "Hello World!" aus
src/numwarp.bGibt Eingaben von "()-./0123456789abcdef" "schöner" aus
src/prime.bKann alle Primzahlen von 0 bis 255 ermitteln
src/quine.bGibt seinen eigenen Quellcode aus
gpl.txtGNU General Public License
liesmich.txtDiese Dokumentation auf Deutsch
readme.txtDiese Dokumentation auf Englisch

nach oben

 

Die Sprache Brainfuck

Jedes Brainfuckprogramm hat ein Array und einen Zeiger, der auf dieses zeigt. Mit acht verschiedenen Befehlen können Array und Zeiger manipuliert werden:

BefehlEffektÄquivalent in C
+Element unter dem Zeiger erhöhen++*p;
- Element unter dem Zeiger verkleinern--*p;
>Zeiger erhöhenp++;
<Zeiger verkleinernp--;
[Beginnt Schleife; Zähler unter Zeigerwhile(*p) {
]Ende der Schleife}
.ASCII-Code unter Zeiger ausgebenputchar(*p);
,Einlesen und speichern eines Zeichens*p=getchar();

Alle anderen Zeichen werden ignoriert (und können deswegen zur Kommentierung genutzt werden). Alle Elemente des Arrays werden mit 0 initialisiert.

Weitere Informationen über die Sprache Brainfuck gibt es in der Wikipedia.

nach oben

 

Der Brainfucked Compiler

 

Aufruf

Der Compiler muss in der Eingabeaufforderung von Windows oder direkt unter MS-DOS gestartet werden. Aufgerufen wird er mit "bfd dateiname.endung". Beim Namen der Quellcodedatei ist wichtig, dass sie dem DOS-Schema "8.3" folgt. Das bedeutet, dass der Dateiname nicht länger als acht Zeichen und die Dateiendung nicht länger als drei Zeichen sein darf. Der Dateiname muss jedoch mindestens zwei Zeichen lang sein und eine Endung muss vorhanden sein! Ist dies nicht der Fall, erzeugt das eine "ERR: File"-Fehlermeldung! Ein korrekter Beispielaufruf wäre also z.B. "bfd src/hello.b" (ohne Anführungszeichen).

nach oben

 

Code-Optimierung

Brainfucked verfügt über eine gute Code-Optimierung, um Ihren Brainfuckcode im Bezug auf Größe, aber auch im Bezug auf Ausführungsgeschwindigkeit, zu optimieren.

nach oben

 

Syntax-Check

Brainfucked überprüft die Syntax eines Brainfuckprogramms. Ist die Syntax nicht einwandfrei, gibt Brainfucked eine Fehlermeldung oder eine Warnung aus. Siehe Meldungen.

nach oben

 

Kompatibilität

Brainfucked verfügt über zwei verschiedene Modi, um Brainfuckcode zu erzeugen.

Im Standardmodus erzeugt die ENTER-Taste beim Einlesen mit dem Brainfuckbefehl "," den Wert 10 (LF). Wird der Wert 10 (LF) mit dem Befehl "." ausgegeben, erzeugt dies einen vollständigen DOS/Windows-Zeilenumbruch (CR LF) in der Ausgabe. Dadurch ist der Standardmodus in der Lage, Brainfuckprogramme, die für Unix-Umgebungen geschrieben wurden, korrekt auszuführen. Da die mit Abstand meisten komplexeren Brainfuckprogramme für diese Umgebungen geschrieben werden, ist aus Kompatibilitätsgründen auch dringend empfohlen, eigene Programme nach diesen Vorgaben zu entwickeln.

Durch die Angabe des Parameters "-n" beim Aufruf von Brainfucked, wird in den sog. "Native Mode" (Beispielaufruf: "bfd -n src/hello.b") gewechselt. In diesem Modus werden unverändert die Tastaturcodes von DOS/Windows eingelesen. Die ENTER-Taste hat dadurch den Wert 13 (CR). Zum Ausgeben eines Zeilenumbruchs muss manuell die Wertfolge 13, 10 (CR LF) ausgegeben werden. Dieser Modus ist in der Lage, speziell für Windows entwickelte Brainfuckprogramme korrekt zu übersetzen. Diese Programme sind jedoch mit sehr vielen Brainfuck-Implementierungen nicht korrekt ausführbar! Für eigene Entwicklungen wird deswegen dringend zum Standardmodus geraten!

In beiden Modi steht jedem Brainfuckprogramm ein Array von 44000 Zellen zur Verfügung, wobei jede Zelle ein Byte groß ist. Das Array ist in jeder Zelle mit 0 initialisiert.

Verhalten der Brainfuckbefehle:

BefehlVerhalten im StandardmodusVerhalten im Native Mode
+Wert erhöhenwie Standardmodus
- Wert veringernwie Standardmodus
[Schleifenstartwie Standardmodus
]Schleifenendewie Standardmodus
>Zeiger erhöhenwie Standardmodus
<Zeiger verkleinernwie Standardmodus
.Ausgabe eines ASCII-Werts*Ausgabe eines ASCII-Werts*
,Einlesen und Ausgabe des ASCII-Werts*Einlesen eines ASCII-Werts*

* siehe Abschnitt "Kompatibilität"!

nach oben

 

Meldungen

Hier folgt nun eine Auflistung aller Meldungen von Brainfucked und mögliche Ursachen für diese Meldungen:

MeldungBedeutungmögliche Ursache
ERR: FileFehler bei DateiverarbeitungDatei nicht gefunden oder kein 8.3-Dateiname
ERR: Loopschwerer SyntaxfehlerMindestens eine Schleife ist falsch z.B. "]["
WRN: Rangemöglicher ProgrammfehlerEs gibt mehr < als >, falls unbeabsichtigt, sehr wahrscheinlich ein Fehler!
File assembledDatei erfolgreich kompiliertProgramm konnte übersetzt werden ;-)

nach oben

 

Die Lizenzbedingungen

Brainfucked ist unter den Bedingungen der GNU General Public License veröffentlicht worden. Diese liegt als gpl.txt dem Programm bei.

nach oben

Viel Spaß mit Brainfucked!