AutoIt3 Compiler/Parser

  • Hallo James1337,

    dein Vorhaben ist von der AutoIt-Lizenz nur dann gestattet wenn du den C#-Code aus au3 Skripten erstellst. Ein Extrahieren aus der EXE würde unter Reverse-Engineering fallen und dieses ist laut Lizenz verboten:

    Zitat

    Reverse engineering. You may not reverse engineer or disassemble the SOFTWARE PRODUCT or compiled scripts that were created with the SOFTWARE PRODUCT.

    mfg autoBert

  • autoBert: Er will doch nur den AutoIt Code in c# umwandeln und diesen mit .NET kompilieren?! oO


    Genau, PenGuin.
    autoBert: progandy hat mich darauf auch schon hingewiesen.

    Siehe auch:

    Hallo,
    Meine Idee war es, einen Compiler für AutoIt zu schreiben.
    Da das aber viel zu umständlich ist, ist die Idee jetzt, einen Parser zu schreiben, der den AutoIt3-Code in C#-Code umwandelt und diesen dann mit dem .NET Framework kompiliert.


    Habt ihr Lust mitzumachen?

    MfG, James C.

  • Und wie stellt ihr euch das mit den Includes und so vor??

    Und ich kann mir das schlecht OHNE den AutoIt Interpreter vorstellen... Sonst müssen ja X-Wieviele Funktionen übersetzt werden! Und ausserdem gibt es in AU3 nicht float-, char-, str- Variablen ; das mußt du dann alles Manuell interpretieren bzw. Auslesen lassen.


    Grüsse

  • Das wäre dann endlich mal eine ernstzunehmende Herausforderung. :D

    Viele der Funktionen basieren auf DLLCalls, weshalb das nicht das größte Problem werden dürfte.
    (Zur Not könnten wir statt AutoIt auch erstmal mit VBScript oder Batch anfangen.)

  • Batch?? :rofl:

    Nunja, ich Denke Ihr (du) stellt euch das zu leicht vor!

    Ich selber kann zwar einzelne Funktionen in andere Sprachen übersetzten - ABER es basiert eben nicht alles auf DLL-Calls! Übersetze dir mal nen ganzen Ars... voll mit Formeln... Und viele Funktionen mußt dir selber erstellen wie Arraybinarysearch,...

    Ich Denke das würde der Rahmen sprengen!

    Grüsse!

  • Und ausserdem gibt es in AU3 nicht float-, char-, str- Variablen


    Das würd ich so nicht ganz sagen..
    Es gibt String und Int oder so weiter.. aber in Autoit wird es nicht eindeutig definiert... erst nach der Wertzuweisung sucht sich AutoIt die passende Variable..

  • Batch?? :rofl:


    Bei Batch hat man nicht 2000 Funktionen. :D

    Nunja, ich Denke Ihr (du) stellt euch das zu leicht vor!
    Ich Denke das würde der Rahmen sprengen!


    Es würde ja für den Anfang schon reichen, wenn ich ein paar Freiwillige finde, die mit an den Build-in-Funktionen arbeiten, ohne UDFs.

    MfG, James C.

    EDIT #1:
    Der Parser kann ja auch 2 Durchgänge machen:
    Im 1. schaut er sich Variablen und sowas an und was die für Werte die haben.
    Im 2. wird der Code übersetzt.

  • Von C# halte ich ja nicht soviel :D .
    Ich habe schon ein paar Funktionen für mich in C (ohne ++) übersetzt und programmiere einfache Sachen einfach damit.

    Spoiler anzeigen


    TheShadowAE hat auch schon einige Funktionen mit C++ erstellt.
    Funktionssammlung, Autoit ähnlich [ISMS]

  • Es gibt String und Int oder so weiter.. aber in Autoit wird es nicht eindeutig definiert... erst nach der Wertzuweisung sucht sich AutoIt die passende Variable..

    Kann man doch in C++ auch machen. Man erstellt eine Klasse, die als Member einen typ hat und einen pointer auf Daten enthält.
    Dann erstellt man Methoden, die die Klasse in die Standarttypen (integer, float, string, wstring, pointer) konvertieren können.

  • Kann man doch in C++ auch machen. Man erstellt eine Klasse, die als Member einen typ hat und einen pointer auf Daten enthält.
    Dann erstellt man Methoden, die die Klasse in die Standarttypen (integer, float, string, wstring, pointer) konvertieren können.


    Das ist doch genau das, was der AutoIt-Interpreter tut (Stichwort "Templates"). Also wo wäre da der Gewinn/Sinn/Zweck ? ;)

    Und C# würde ich auch nicht wählen, das wäre evtl. noch langsamer als der AutoIt-Interpreter ...
    Man müsste eine Bibliothek erstellen, die den AutoIt-Funktionen entspricht, usw. usf.

    Na, da habt ihr aber ewas vor ... :D
    Wäre aber mit Sicherheit interessant.


    Gruß
    Greenhorn


  • Der Vorteil ist, dass der C#, C, C++ Code mit immer neuen Compilern immer flotter wird.
    Der AutoIt interpreter optimiert, wenn überhaupt, nicht wirklich viel, was bei Compilern schon eine andere Sache ist.

    Weiterer Vorteil ist die weitaus geringere Dateigröße.
    Bei AutoIt wird immer der ganze Interpreter mitgeschleppt, selbst wenn davon nur 1% benötigt wird.

    Selbst wenn man exakt das, was der Interpreter interpretieren würde als C++ Code speichert wäre die Ausführung nach dem Kompillieren wesentlich schneller.

    Wie schon gesagt wurde bauen die meisten UDF´s auf DllCalls auf. Zur Not muss man eben die UDF´s portieren.

    die Idee ansich hatte ich auch schon und ich finde es gut, dass das auch von anderer Seite aufgegriffen wird.

    Man kann den Übersetzer ja in AutoIt schreiben. Und AutoIt ist einfach.
    Ich sage nicht, dass das ein Zuckerschlecken wird, aber es ist auch nicht so unmöglich, wie es immer dargestellt wird. Dazu haben wir hoer ausreichend Leute die das theoretisch mit etwas Einarbeitung könnten.

    Angefangen wird natürlich erstmal mit kleinen Scripten die man übersetzen lässt. Und anschließend kann man sich an die UDF´s wagen.

    lg
    Mars(i)