Unsortiertes zum neuen AutoFuck
3 verfasser
Seite 1 von 1
Unsortiertes zum neuen AutoFuck
Jo, das neue Autofuck kriegt einen neuen Wrapper / Syntax. Hier mal die bisherige Erörterung:
Nachricht von: minx
Gesendet: Freitag, 20. Juli 2012, 19:58
An: chesstiger
Betreff: Neuer Syntax
Ich hatte ja schon angefangen mit dem RPG, welches ich einfach mal "Turad", ausgeschrieben "Turing Adventure" ( ) getauft habe.
Schon nach 5 Minuten musste ich den Autofuck Syntax um zwei Befehle erweitern: "c" und "a", also "clear" und "anihilate". Irgendwie war das Programmieren dann trotzdem noch sehr anstrengend. Ich denke langsam über einen komplett neuen Syntax nach. Ich denke aus dem:
+++[>++++<-] (also Multiplikation 3*4) sollte dann sowas werden, als Wrapper sozusagen:
add 3
loop (
go 1
add 4
go 0
sub 1
)
Das Große Problem ist, das ich es wirklich nur als Wrapper für BF möchte, d.h. es soll auf Wunsch auch konvertierbar sein. PROBLEM! Bei BF werden @cr(lf) ignoriert, dort gibt es schließlich keine Trennung der Befehle.
So jetzt brauch ich nen Parser der aus dem zweiten Code exakt den ersten macht, aber auch mit verschalteten Schleifen funktioniert ( :wacko: :wacko: :wacko: ).
Ein Beispiel im Parser könnte sein, dass "go *" ("*" steht jetzt für eine beliebig(-stellige) Zahl) durch die entsprechende Zahl an "<" oder ">" ersetzt wird. So da bin ich mit meinem Latein (das ich jetzt immerhin schon 4 Jahre hab ) am Ende.
*keuch* hast du ne Idee?
MfG und Danke :rock:
Nachricht von: chesstiger
Gesendet: Freitag, 20. Juli 2012, 20:52
An: minx
Betreff: RE: Neuer Syntax
Hi minx,
was soll ich denn da groß machen, ich habe schließlich erst seit *rechne* 3 Jahren Latein. 8o
Okay, Spaß beiseite:
Ich würde sagen, das ist machbar. Ich setz mich grad mal ran, ist ohnehin gerade Werbung im TV.
Ich schreib dir, wenn ich was gebastelt hab.
lg chess
Nachricht von: minx
Gesendet: Freitag, 20. Juli 2012, 19:58
An: chesstiger
Betreff: Neuer Syntax
Ich hatte ja schon angefangen mit dem RPG, welches ich einfach mal "Turad", ausgeschrieben "Turing Adventure" ( ) getauft habe.
Schon nach 5 Minuten musste ich den Autofuck Syntax um zwei Befehle erweitern: "c" und "a", also "clear" und "anihilate". Irgendwie war das Programmieren dann trotzdem noch sehr anstrengend. Ich denke langsam über einen komplett neuen Syntax nach. Ich denke aus dem:
+++[>++++<-] (also Multiplikation 3*4) sollte dann sowas werden, als Wrapper sozusagen:
add 3
loop (
go 1
add 4
go 0
sub 1
)
Das Große Problem ist, das ich es wirklich nur als Wrapper für BF möchte, d.h. es soll auf Wunsch auch konvertierbar sein. PROBLEM! Bei BF werden @cr(lf) ignoriert, dort gibt es schließlich keine Trennung der Befehle.
So jetzt brauch ich nen Parser der aus dem zweiten Code exakt den ersten macht, aber auch mit verschalteten Schleifen funktioniert ( :wacko: :wacko: :wacko: ).
Ein Beispiel im Parser könnte sein, dass "go *" ("*" steht jetzt für eine beliebig(-stellige) Zahl) durch die entsprechende Zahl an "<" oder ">" ersetzt wird. So da bin ich mit meinem Latein (das ich jetzt immerhin schon 4 Jahre hab ) am Ende.
*keuch* hast du ne Idee?
MfG und Danke :rock:
Nachricht von: chesstiger
Gesendet: Freitag, 20. Juli 2012, 20:52
An: minx
Betreff: RE: Neuer Syntax
Hi minx,
was soll ich denn da groß machen, ich habe schließlich erst seit *rechne* 3 Jahren Latein. 8o
Okay, Spaß beiseite:
Ich würde sagen, das ist machbar. Ich setz mich grad mal ran, ist ohnehin gerade Werbung im TV.
Ich schreib dir, wenn ich was gebastelt hab.
lg chess
Zuletzt von Admin am Fr Jul 20, 2012 8:16 pm bearbeitet; insgesamt 1-mal bearbeitet
BF Optimizer & Compiler
Hier mal mein (unvollständiger) BF Optimizer und meine Compiler (BF --> C & BF --> au3):
- Spoiler:
Zuletzt von James1337 am So Aug 12, 2012 9:15 am bearbeitet; insgesamt 3-mal bearbeitet
James1337- BF-Neuling
- Anzahl der Beiträge : 7
Anmeldedatum : 20.07.12
Re: Unsortiertes zum neuen AutoFuck
So, hier dann mal mein Code.
Als Erklärung: Das nette Teil hier wandelt TuradScript (So habe ich das einfach mal getauft;)) in AutoFuck um. Fehler & Bugs bitte irgendwo hier posten. ^^
lg Chess
Edit: Includes hinzugefügt.
Als Erklärung: Das nette Teil hier wandelt TuradScript (So habe ich das einfach mal getauft;)) in AutoFuck um. Fehler & Bugs bitte irgendwo hier posten. ^^
- Spoiler:
- Code:
#include <Array.au3>
#include <String.au3>
Func _TuradScriptToAutoFuck($asCode) ;Return: String // $asCode[0] muss die Größe des Arrays sein. Alternativ in der Funktion $asCode[0] zu UBound($asCode) ändern.
$iCell = 0
Dim $asBrainFuck[$asCode[0] + 1]
For $iIndex = 1 To $asCode[0]
ConsoleWrite("Script Line: " & $iIndex & " | Line Content: " & $asCode[$iIndex] & @CRLF) ;~ Debug
Select
Case StringLeft($asCode[$iIndex], 4) = "add "
$asBrainFuck[$iIndex] = _StringRepeat("+", StringTrimLeft($asCode[$iIndex], 4))
Case StringLeft($asCode[$iIndex], 4) = "sub "
$asBrainFuck[$iIndex] = _StringRepeat("-", StringTrimLeft($asCode[$iIndex], 4))
Case StringLeft($asCode[$iIndex], 3) = "go "
;~ $asBrainFuck[$iIndex] = _StringRepeat("-",StringTrimLeft($asCode[$iIndex],3))
$iGotoCell = StringTrimLeft($asCode[$iIndex], 3)
Select
Case $iGotoCell < $iCell
$asBrainFuck[$iIndex] = _StringRepeat("<", $iCell - $iGotoCell)
$iCell = $iGotoCell
Case $iGotoCell > $iCell
$asBrainFuck[$iIndex] = _StringRepeat(">", $iGotoCell - $iCell)
$iCell = $iGotoCell
EndSelect
Case $asCode[$iIndex] = "loop (" Or $asCode[$iIndex] = "loop("
$asBrainFuck[$iIndex] = "["
Case $asCode[$iIndex] = ")"
$asBrainFuck[$iIndex] = "]"
Case $asCode[$iIndex] = "print" ;Absoluter Zellenwert -> AUSGABE
$asBrainFuck[$iIndex] = "."
Case StringLeft($asCode[$iIndex], 6) = "print "
$iGotoCell = StringTrimLeft($asCode[$iIndex], 6)
Select
Case $iGotoCell < $iCell
$asBrainFuck[$iIndex] = _StringRepeat("<", $iCell - $iGotoCell) & "." & _StringRepeat(">", $iCell - $iGotoCell)
Case $iGotoCell > $iCell
$asBrainFuck[$iIndex] = _StringRepeat(">", $iGotoCell - $iCell) & "." & _StringRepeat("<", $iGotoCell - $iCell)
EndSelect
Case $asCode[$iIndex] = "printchr" ;ASCII-Zellenwert -> AUSGABE
$asBrainFuck[$iIndex] = ":"
Case StringLeft($asCode[$iIndex], 9) = "printchr "
$iGotoCell = StringTrimLeft($asCode[$iIndex], 9)
Select
Case $iGotoCell < $iCell
$asBrainFuck[$iIndex] = _StringRepeat("<", $iCell - $iGotoCell) & ":" & _StringRepeat(">", $iCell - $iGotoCell)
Case $iGotoCell > $iCell
$asBrainFuck[$iIndex] = _StringRepeat(">", $iGotoCell - $iCell) & ":" & _StringRepeat("<", $iGotoCell - $iCell)
EndSelect
Case $asCode[$iIndex] = "input" ;Absoluter Zellenwert -> EINGABE
$asBrainFuck[$iIndex] = ","
Case StringLeft($asCode[$iIndex], 6) = "input "
$iGotoCell = StringTrimLeft($asCode[$iIndex], 6)
Select
Case $iGotoCell < $iCell
$asBrainFuck[$iIndex] = _StringRepeat("<", $iCell - $iGotoCell) & "," & _StringRepeat(">", $iCell - $iGotoCell)
Case $iGotoCell > $iCell
$asBrainFuck[$iIndex] = _StringRepeat(">", $iGotoCell - $iCell) & "," & _StringRepeat("<", $iGotoCell - $iCell)
EndSelect
Case $asCode[$iIndex] = "inputchr" ;ASCII-Zellenwert -> EINGABE
$asBrainFuck[$iIndex] = ";"
Case StringLeft($asCode[$iIndex], 9) = "inputchr "
$iGotoCell = StringTrimLeft($asCode[$iIndex], 9)
Select
Case $iGotoCell < $iCell
$asBrainFuck[$iIndex] = _StringRepeat("<", $iCell - $iGotoCell) & ";" & _StringRepeat(">", $iCell - $iGotoCell)
Case $iGotoCell > $iCell
$asBrainFuck[$iIndex] = _StringRepeat(">", $iGotoCell - $iCell) & ";" & _StringRepeat("<", $iGotoCell - $iCell)
EndSelect
Case $asCode[$iIndex] = "endln"
$asBrainFuck[$iIndex] = "/"
Case $asCode[$iIndex] = "clear"
$asBrainFuck[$iIndex] = "c"
EndSelect
Next
_ArrayDelete($asBrainFuck, 0)
Return _ArrayToString($asBrainFuck, "")
EndFunc ;==>_TuradScriptToAutoFuck
lg Chess
Edit: Includes hinzugefügt.
chesstiger- BF-Neuling
- Anzahl der Beiträge : 3
Anmeldedatum : 17.07.12
Alter : 26
Re: Unsortiertes zum neuen AutoFuck
Hey vielen vielen Dank!
James hier mal die Übersicht:
James hier mal die Übersicht:
- Spoiler:
- Code:
AutoFuck Wrapper = AutoFuck = Brainfuck
add = + = +
sub = - = -
go %Zelle% = <<<... / >>>>.... = <<<... / >>>>....
print = : = Nicht existent (gibt den Zellenwert als String aus)
printchr = . = .
input = ; = Nicht existent (schreibt den Input direkt in die Zelle)
inputchr = , = ,
endln = / = Nicht existent (gibt @CRLF aus)
??? = _ = Nicht existent (gibt Leerzeichen aus)
Re: BF Optimizer & Compiler
Und hier noch einmal ein verbesserter brainfuck Compiler mit GUI:
http://pastebin.com/efrdRAL1
Die Autofuck-Befehle werden demnächst implementiert, es sollte nur erstmal mit den Standard-Befehlen laufen.
http://pastebin.com/efrdRAL1
Die Autofuck-Befehle werden demnächst implementiert, es sollte nur erstmal mit den Standard-Befehlen laufen.
James1337- BF-Neuling
- Anzahl der Beiträge : 7
Anmeldedatum : 20.07.12
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten