Interpreter

  • Hallo,

    hat jemand eine Idee wie man mit AutoIt einen eigenen Interpreter zusammenbasteln könnte?
    Soweit bin ich schonmal:

    [autoit]

    $Fileopen = FileOpen("Plug-In.txt",0)

    [/autoit][autoit][/autoit][autoit]

    $Read = FileRead($Fileopen)

    [/autoit][autoit][/autoit][autoit]

    $StringSplit = StringSplit($Read,@CRLF)

    [/autoit][autoit][/autoit][autoit]

    For $Var1 = 1 To $StringSplit[0]

    If Not $StringSplit[$Var1] = "" Then
    Execute($StringSplit[$Var1])
    EndIf

    [/autoit][autoit][/autoit][autoit]

    Next

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Sleep(3000)

    [/autoit]

    Aber ich weiß jetzt nicht wie ich da eine schleife auslesen kann bzw. If -Abfragen

  • Hi,

    was hast du denn eigentlich wirklich vor, bzw. was steht denn in der Plug-In.txt drin?

    Bisschen erklärung wäre nicht schlecht. Vielleicht kommen dann auch Antworten.

    Gruß rabbit

  • Für einen Interpreter brauchst du erstmal eine formale Grammatik, die deine Syntax und etc beschreibt, aufgrund dieser kannst du dann mit einem vorgefertigtem Werkzeug das erstellen lassen oder selbst in Autoit schreiben.

    Also du musst die Zeichen überprüfen und auf die Gültigkeit deiner Grammatik und wenn du Konstrukte verwendest über mehrere Zeilen, musst du natürlich auch verschiedene Dinge merken (Kellautomat), wie z.B. if <- Terminalsymbol oha jetzt muss eine ( kommen und dann einen boolschen Ausdruck und dann mit einer Klammer schließen dann kommt es auf deine Syntax drauf an, ob du then machst und EndIf oder mit { } oder anderen Symbolen die Anweisungen vom Rest trennst. Aber zwischen den { } können jetzt ja auch wieder Befehle stehen, die du überprüfen musst, aber du musst dir dann merken, dass du am Ende ein } brauchst, wo dein Konstrukt endet.

    Ist jetzt alles ein bissl ausm Kopf rausgeschrieben, aber ich würde mir erst überlegen, was gibt es alles für Befehle/Konstrukte und wie müssen diese aussehen. Danach kannst du mit String-Befehlen diese auseinandernehmen und überprüfen.