Unsortiertes zum neuen AutoFuck

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten

Unsortiertes zum neuen AutoFuck

Beitrag von Admin am Fr Jul 20, 2012 7:44 pm

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" ( Very Happy ) 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 Very Happy ) 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. Wink

lg chess


Zuletzt von Admin am Fr Jul 20, 2012 8:16 pm bearbeitet; insgesamt 1-mal bearbeitet

Admin
Admin

Anzahl der Beiträge : 10
Anmeldedatum : 16.07.12

http://brainfuck.forumieren.eu

Nach oben Nach unten

BF Optimizer & Compiler

Beitrag von James1337 am Fr Jul 20, 2012 9:20 pm

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

_________________
MfG James

James1337
BF-Neuling
BF-Neuling

Anzahl der Beiträge : 7
Anmeldedatum : 20.07.12

Nach oben Nach unten

Re: Unsortiertes zum neuen AutoFuck

Beitrag von chesstiger am Fr Jul 20, 2012 9:39 pm

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. ^^
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. Wink
avatar
chesstiger
BF-Neuling
BF-Neuling

Anzahl der Beiträge : 3
Anmeldedatum : 17.07.12
Alter : 19

Nach oben Nach unten

Re: Unsortiertes zum neuen AutoFuck

Beitrag von Admin am Fr Jul 20, 2012 9:59 pm

Hey vielen vielen Dank!

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)

Admin
Admin

Anzahl der Beiträge : 10
Anmeldedatum : 16.07.12

http://brainfuck.forumieren.eu

Nach oben Nach unten

Re: BF Optimizer & Compiler

Beitrag von James1337 am Sa Jul 21, 2012 6:30 pm

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.

_________________
MfG James

James1337
BF-Neuling
BF-Neuling

Anzahl der Beiträge : 7
Anmeldedatum : 20.07.12

Nach oben Nach unten

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben

- Ähnliche Themen

 
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten