Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Brainfuck Interpreter (https://www.delphipraxis.net/107371-brainfuck-interpreter.html)

rawsoul 26. Jan 2008 17:36


Brainfuck Interpreter
 
Liste der Anhänge anzeigen (Anzahl: 2)
N'abend,

das hier ist mein BFI.

Ja, es gibt unzählige Brainfuck Interpreter im Internet, allerdings wollte ich mir meinen eigenen schreiben :)

Was meinen von allen anderen abhebt:
  • Ein visuelles Band (Der "Brainfuckstack") erleichtert das Arbeiten, Zurechtfinden und Debuggen der geschrieben Programme
  • Die Eingabe sowie Ausgabe erfolgen in einem 50-spaltigen Eingabe-/Ausgabefenster und bieten somit viel Platz für Kommentare und erhöhen die Übersichtlichkeit
  • Einfach zu erreichende Codetemplates erhöhen den Workflow in der Sprache um ein vielfaches und sparen Zeit
  • Eingebautes Ord() und Chr() erleichtern das Übersetzen und ersparen das nervtötende Suchen in den ASCII Tables
  • Durch die unkomplizierten Funktionen 'Mess up' und 'Block it' können genutzt werden, um den Brainfuck Code zu Formatieren
  • (Spaß) Der Brainfuck Code kann in Ook! übersetzt werden. (Einfach mal bei Wikipedia suchen ;))

Auf Eure Kritik bin ich gespannt =)

Viel Spaß!

cware 26. Jan 2008 21:51

Re: Brainfuck Interpreter
 
wie hast du das band realisiert? statisch oder dynamisch?


cheers...

rawsoul 27. Jan 2008 11:57

Re: Brainfuck Interpreter
 
Das Band ist dynamisch.

Ich bin gerade dabei, kleine Codetemplates wie zum Beispiel die Verschiebung, Multiplikation, Kopierung, Subtraktion, ... zu Implementieren und das Band visuell ausgeben lassen zu können.

Update wird dann im ersten Post geschehen.

blackdrake 27. Jan 2008 16:02

Re: Brainfuck Interpreter
 
Band?

cware 27. Jan 2008 16:05

Re: Brainfuck Interpreter
 
in brainfuck wird eine turing-maschine mit einem (theoretisch) unendlichen band simuliert...
wie so'n tonband halt, wo man nach links oder rechts spulen kann und bei jedem schritt eine neue speicherstelle hat...

ein großteil der implementierung haben statische bänder mit meist 30.000 speicherstellen...

dynamisch implementierte bänder funktionieren anders...
dort wird das band erweitert, wenn man links oder rechts über die bisher allokierte größe drüberläuft...


cheers...

Klaus01 27. Jan 2008 16:20

Re: Brainfuck Interpreter
 
Nur eine kleine Anmerkung:

Turing-Maschinen haben schon per Definition ein unendliches Band zu Verfügung.
Deswegen kann man sie im Rechner auch nur bedingt nachbilden.

Grüße
Klaus

cware 27. Jan 2008 16:26

Re: Brainfuck Interpreter
 
Zitat:

Zitat von Klaus01
Turing-Maschinen haben schon per Definition ein unendliches Band zu Verfügung.

anders sieht das mit Brainfuck-Interpretern aus (wie bereits erwähnt)...
jedoch ist brainfuck nur durch interpreter, die keine statischen bänder haben, turing-vollständig...


cheers...

rawsoul 27. Jan 2008 16:28

Re: Brainfuck Interpreter
 
Liste der Anhänge anzeigen (Anzahl: 1)
Deshalb schrieb cware wohl auch "theoretisch" ;-)

Habe gerade ein kleines Problem, vielleicht kann man mir weiterhelfen. Wie im Screenshot zu sehen ist, ist auf dem nachgebildeten Brainfuckstack (Stringgrid) die erste Spalte um eine Spalte weiter nach rechts gerutscht, beziehungsweise kopiert. Nirgendwo weise ich jedoch der zweiten Spalte diese Inhalte zu. Während der Laufzeit kann ich diese Spalte nicht markieren, und spreche ich sg.Cells[1,x] an, so ist es in Wirklichkeit die dritte sichtbare Spalte. Liegt da ein Problem in der Komponente vor, oder bin ich gerade total auf dem falschen Ast?

//Edit: Problem ist mehr oder weniger gelöst. Es gab irgendwie Komplikationen mit FixedCols. Komische Sache...

Im ersten Post wurde übrigens geupdatet ;)

rawsoul 28. Jan 2008 16:58

Re: Brainfuck Interpreter
 
*bump*
:angel2:


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

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