Ja der Forenupload hat die Zip verhunzt. Ich lads grad mal woanders hoch...
// So jetzt gehts.
MfG
Ja der Forenupload hat die Zip verhunzt. Ich lads grad mal woanders hoch...
// So jetzt gehts.
MfG
So jetzt ist er up ![]()
MfG
(hab iwo ein Textadventure gesehen).
Das existiert nur als Proof-of-Concept und wurde nie fertiggestellt. Bis auf die Story :D. Abfragen mit BF sind ein Graus ![]()
Ein Compiler für BF ist wahrscheinlich noch das kleinste Übel.
Den hab ich jetzt auch hinbekommen ![]()
Was die erweiterten Abfragen angeht. Genau darauf steuert ja da Projekt "Autofuck" hinaus. Momentan ist die Sache noch, wie ich IF´s realisieren könnte ![]()
Bis die Tage
Hab gleich den Compiler fertig. In AutoIt. Der arbeitet nach dem Prinzip "atätsch to interpreter". Vorläufig funktioniert der erstmal :D.
MfG
Meld!
Zu den Laufwerken: Mein Chinakracher USB Floppy ist mein treuer Begleiter
.
Ich bin auch ein absoluter Neuling auf dem Gebiet Compilerbau.
Bis die Tage
8 User, keine Rückmeldung?.
Naja, ich schau mal ob ich noch nen Compiler // überhaupt hinkriege ![]()
Bis die Tage
Und was für eine ![]()
Hi!
Hier mal meine Variante einer echten Brainfuck Entwicklungsumgebung. Es können die normalen Brainfuck Befehle + , . - [ ] genutzt werden, aber auch die erweiterten Autofuck Befehle ; : / _
Mal eine kleine Übersicht:
+ Erhöht den Zellenwert um 1
- Verringert den Zellenwert um 1
> Pointer auf die nächste Zelle
< Pointer auf die vorherige Zelle
. Ausgabe des Zellenwertes als umgewandeltes ASCII Zeichen
: Ausgabe des absoluten Zellenwertes
, Input der umgewandelt in ASCII Code in die Zelle geschrieben wird
; Input der absolut in die Zelle geschrieben wird
_ Ausgabe eines Leerzeichens
/ Ausgabe eines Zeilenumbruchs
[ "START" Schleifen Anfang
] "BACK" Schleifen Ende
Mit F5 wird der Inhalt der Codebox ausgeführt. Es gibt einen Livetime-Debugger, sollte ein Fehler (z.B. Nicht beendete Schleifen) auftreten wird dieser in der Konsole angezeigt und das Skript gestoppt.
Ich hab ein Beispielskript angehängt, einen Taschenrechner. Wenn man dieses Skript startet, so wird zuerst eine Division mit Rest durchgeführt. Dazu gibt man zuerst den Divident (z.B. 10) ein, dann den Divisor (z.B. 3). Darauf wird in der ersten Konsolenzeile das Ergebnis ausgegeben (z.B. "3 1"), in der Form "Ergebnis Rest". Danach folgen 2 Absätze und die Multiplikation. Man gibt nun die beiden Faktoren an und erhält das Produkt in der Konsole. Danach wieder 2 Absätze. Jetzt die Addition. Nach weiteren 2 Absätzen dann die Subtraktion. Erst Minuend, dann Subtrahend. Das Ergebnis wird geliefert und das Skript ist beendet.
Sollte noch Nachfrage bestehen, wie der TR funktioniert, dann mache ich gern ein Tut.
Download der neuen Version mit Compiler.
Bis die Tage
Ich hab mir jetzt das Beipsiel mit Dll Strukturen rausgesucht, das kann ich noch besser nachvollziehen, und es funktioniert!
Trotzdem Danke
Nein. Dieses Skript funktioniert ebenso nur mit Level-1 Schleifen.
Hey Hey. Ich bin sowas von am Ende. Also ich hab mir mal nen Brainfuck Interpreter gebastelt. Warum? Weil es bis jetzt noch keinen in AutoIt gibt (BugFix' konvertiert ja nur Outputs nach BF).
Bis jetzt funktioniert alles. Zum Test einfach mal "+++++(>+++<-)>." eingeben. Das ist die Multiplikation von 3 und 5, die am Ende mit "." in die Konsole geschrieben wird. Wie man sieht funktioniert das Ding mit einer Schleife "(...)", die so lang läuft bis die Zelle auf die der Pointer "$Cell" gerade zeigt vom Wert her "$Program[$Cell]" gleich "0" ist.
So. Um jetzt aber beispielsweise 5^3 zu rechnen müssen wir mit verschachtelten Schleifen arbeiten, das sieht dann so aus: "+++++(>+++++(>+++++<-)<-)", Output mit ">>." . Dieser Code funktioniert auch, wie man hier testen kann. Wie man dort sehen kann (Step-by-Step) springt der Pointer nachdem er von der ersten Zelle "1" abgezogen hat in die zweite um dort um "5" aufzufüllen. Soweit kommt mein Skript noch mit. Aber dann springt der Pointer nicht wie es nötig wäre auf Zelle 3 um dort gegen "1" nochmals 5 aufzuaddieren, sondern springt zu Zelle 1, danach bricht das ganze dann logischerweise zusammen. :pinch:
Mein Schleifensystem funktioniert so: Wenn der Codepointer (der den aktuellen Befehl liest) einen Loopanfang "(" findet, speichert er die Position im Quellcode des Befehls in den Looparray. Dann läuft der Codepointer weiter um alle nachfolgenden Befehle auszuführen, sollte er indes wieder auf ein "(" treffen, so wird der Looparray um den neuen Wert erweitert, so ist die Codeposition der Sprungmarke "(" des letzten Loops im letzten Slot des Arrays gespeichert. Trifft der Codepointer nun auf ein BACK, also ")", welches den Pointer anweist, solang der Zellenwert größer als "0" ist, auf die letzte Sprungmarke "(" zurückzuspringen, wird der Codepointer auf die letzte (wird aus dem Looparray gelesen) Sprungmarke "(" gesetzt. Ist die Zelle "0" dann wird die letzte Sprungmarke gelöscht, der Looparray geredimt. Sollte ja theoretisch funktionieren ![]()
Autofuck, wie mein Skript heißt benutzt "(" und ")" statt "[" und "]" wie bei Brainfuck. Mit "." wird der absolute Wert der Zelle ausgeben, also das was drin steht, und mit ":" der dem Zellwert entsprechende ASCII Character.
Irgendwo ist der Wurm drin :wacko: . Aber wo?
Das Skript ist im Anhang. Vielen Dank für eure Geduld!
Brainfuck ist meiner Meinung nach mehr ein logisches Training als insofern nützlich :D. Wenn man Brainfuck versteht, versteht man auch erst einmal die Turing(-methoden), und dass sich nahezu jedes mathematisches Problem damit lösen lässt. Mal ein Beispiel für eine Addition:
,>,<[>+<-]
addiert die erst zur zweiten Zelle. Aber auch die Multiplikation ist ganz einfach, z.B. 5 * 3:
+++++[>+++<-]
Das ist sicher weder sinvoll noch schnell, aber faszinierend.
Danke für die Hilfe, jetzt funktioniert es!
@var Nein.
a und var sind verschiedene Variablen. Aber das ist egal ich kenne die Werte von "a" und "var" auch nicht.
Hier nochmal vielleicht etwas deutlicher:
Es soll aus "3+var+5" -> "3+$var+5" werden. Ich weißaber nie, ob da jetzt "var" steht oder "saadf" oder sonstwas. Einfach vor jedes Wort ein "$" schreiben, aber auch wenn das Wort nur einen Buchstaben lang ist.
James
Also sry, aber daraus werde ich nicht schlau. ![]()
Soweit ich das noch nachvollziehen kann, ist das auch nicht das was ich suche. Es soll jedes beliebig langes Wort aus beliebig vielen Buchstaben durch $Sichselbst ersetzt werden. "Wörter" wie "a" oder "sgjbjrhg" oder "n" usw...
@var ich probiers mal eben....
Allet jute ![]()
Kommando zurück.
Richtige Frage: Wie kann ich alle "Wörter", auch die die nur aus einem Buchstaben bestehen, durch "$Wort" ersetzen?
Edit: Ja ich könnte mit Schleifen und Stringkommandos hantieren, aber das muss doch besser gehen. ![]()
Hi.
Es geht sich um folgendes:
Beispielstring: "34/2*6+a*400-var"
Nun will ich alle Buchstaben ersetzen, nehmen wir mal an "a" und "ver" sind Variablen in denen Zahlen stehen. Nun sollen alle Buchstaben und zusammenhängende Buchstaben herausgefunden werden, damit ich sie ersetzen kann.
Wie wird nun aus dem String oben, z.B. mit a = 5 und var = 10, "34/2*6+5*400-10", natürlich ohne das das "a" in "var" auch durch eine 5 ersetzt wird.
:wacko:
Hi.
Anzeigen eines beliebigen Textes.
Erstmal erstellst du dir mit GuiCreate() eine GUI, und dann ein Edit-Control mit GuiCtrlCreateEdit(). Mit GuiCtrlSetData() setzt du fest, was das Control anzeigen soll. Zum Auslesen der Datei einfach FileRead() nehmen. Beim Speichern wirds' dann schon komplexer, aber du kannst dich ja erstmal an dem Edit versuchen. Die Hilfe hilft da wirklich.
Ps: Für Profis, oder wenn du genug verstanden hast, kannst du mit der SciLexer auch noch Syntax Highlighting mit reinnehmen.
Hi.
Ich bin ja schon ne Weile hier. Ich geb' zwar nicht gern was über mich preis, aber ich habe mich dazu durchgerungen ![]()
Wie alt ich bin kann eigentlich jeder sehen. Mit AutoIt arbeite ich schon seit Jahren in allen möglichen Bereichen, hauptsächlich Systemanpassung und Netzwerktechnologie. Zur Zeit arbeite ich an mehreren kleineren Projekten, so zum Beispiel Sprengers AudioSlide in 3D zu übersetzen, und natürlich an meinem einen großen, aber das ist ne Überraschung :D.
Bei Fragen zu AutoIt reagiere ich schnell und gern auf jede Art von Kontaktaufnahme ;). Wenn noch Fragen zu mir bestehen, dann nur zu.
So das wars dann aber auch, puh ![]()