Hey!
Genau genommen arbeitest du da an einem Konverter und keinen Interpreter...
Wenn du dass noch nicht mit der Maschinensprache hinbekommst, versuch doch einfach mal deine Syntax tatsächlich zu interpretieren und nicht zu konvertieren.
Falls dir der Unterschied nicht klar ist:
Ein Konverter konvertiert eine Datei in eine andere. Bei dir ist dies von ObjT nach AutoIt.
Ein Interpreter interpretiert die Datei zur Laufzeit und führt die Befehle des Codes aus.
Beispiel:
var xyz = 12 // Erstellt eine Variable
out xyz // Gibt die Variable aus
Dein Konverter würde nun (wenn er die Syntax so erkennen würde) folgendes machen:
Suche Schlüsselwörter wie "var" oder "out" und konvertiere sie in AutoIt Befehle.
Danach suche Variablen und setze ein $ Zeichen davor.
Zuletzt ändere die Zeichen die auf ein Kommentar hindeuten in ein Semikolon um.
Global $xyz = 12 ; Erstellt eine Variable
ConsoleWrite($xyz) ; Gibt die Variable aus
Ein Interpreter würde folgendermaßen arbeiten:
Gehe den Code Zeile für Zeile durch und suche nach Schlüsselwörtern, Funktionen etc...
Zeile 1: var xyz = 12 // Erstellt eine Variable
>> var als Schlüsselwort erkannt >> xyz ist demnach der Variablenname >> 12 der zugewiesene Wert
>> Speicher die Variable in dem vorgesehenen Array für die Variablennamen + Werte ab >> $avVariablen[0][0] = 'xyz' >> $avVariablen[0][1] = '12'
>> Kommentar wird ignoriert | Nächste Zeile
Zeile 2: out xyz // Gibt die Variable aus
>> out als Schlüsselwort erkannt >> xyz weder String noch ein Ausdruck, es wird in der Variablenliste geschaut ob dies ggf. Eine Variable sein könnte
>> $avVariablen wird durchgegangen und xyz wurde in $avVariablen[0][0] gefunden. Der Wert steht in $avVariablen[0][1] und ist demnach 12.
>> 12 wird ausgegeben.
>> Kommentar wird ignoriert | Nächste Zeile
Code Ende wurde erreicht
Ich hoffe du siehst wie ich das meine...
Versuch dich direkt an den Interpreter anstatt dem Konverter...
Dann kannst du auch tatsächlich eine unabhängige Skriptsprache mit eigenen Funktionen etc. entwickeln.
Ich schreibe gerade auch (wegen dem Thread hier) einen kleinen Interpreter der als Beispiel dienen soll.
Oder suche mal nach "AutoFuck". minx hat da auch einen kleinen Interpreter gebastelt wenn ich mich richtig erinnere.
LG. Make ![]()