Hallo und danke für das schnelle Update.
Die Deklaration von Funktionen ohne Parameter und ohne Rückgabewert (void) funktioniert jetzt.
Allerding sind mir ein paar Dinge aufgefallen:
Benutzung von "Message" funktioniert nicht innerhalb von Funktionen.
Code: Alles auswählen
DefFunc test() : void
Message "test wurde ausgeführt"
EndFunc
Message "--------"
test()
Message "--------"
Erzeugt folgende Logausgabe. (Timestamps stimmen nicht, weil meine VM Probleme mit dem Datum hat)
Code: Alles auswählen
[5] [Apr 25 11:26:39:380] message --------
[8] [Apr 25 11:26:39:383] We are coming from function with index: -1 (-1 = base)
[8] [Apr 25 11:26:39:385] We enter the defined function: test with 1 lines. inDefFuncLevel: 1
[8] [Apr 25 11:26:39:390] We leave the defined function: test ; inDefFuncLevel: 0
[5] [Apr 25 11:26:39:392] message --------
Wenn ich eine Funktion, die per Deklaration keine Parameter bekommt mit Parametern aufrufe ist die Fehlermeldung irreführend.
Code: Alles auswählen
DefFunc test() : void
Message "test wurde ausgeführt"
EndFunc
test("eigentlich darf hier kein parameter rein")
Führt zum Fehler.
Code: Alles auswählen
[2] [Apr 27 08:49:07:583] Syntax Error: Parameter parsing failed: ")" expected ) expected
Das ist zwar kein großes Problem aber es kann irreführend sein, wenn man Pakete schreibt. Technisch gesehen ist es auch kein Syntax Fehler. Weder Parser noch Lexer dürften hier fehlschlagen, das ist ein semantischer Fehler der erst später überprüft werden sollte. Beispielsweise mittels Attributgrammatiken oder ähnlichen Checks.
Eine Fehlermeldung wie die Folgende wäre besser.
Code: Alles auswählen
Es wurde ein Parameter für Funktion "test" angegeben, aber die Funktion "test" erwartet keine Parameter.