Hi Rudi & alle,
freut mich
riesig, dass es in den letzten Tagen so erfolgversprechend weiter gegangen ist mit dieser Geschichte!
Seid ihr schon dabei, es im Bugtracker anzumelden?
Ich habe mir gedacht, dass es bei dieser Anmeldung bestimmt nützlich wäre, zusätzlich zur Lösung auch kurz zu verdeutlichen, wie schwerwiegend das Problem ist, welches sie löst. (Mein Eindruck ist, dass zwar jeder weiß, dass es irgendeinen Bug mit dem IF gibt, aber gemeinhin nicht so bekannt ist, wie schwerwiegend er eigentlich ist, wie auch uns hier im Forum ja vielleicht erst in den letzten Wochen so richtig klargeworden.) Vielleicht ein kurzes Script-Stück, an dem man verdeutlichen kann, dass es mit der jetzigen uBasic-Version unrettbar "krank" ist? Nur so eine Idee ...
Außerdem natürlich die "3 goldenen Regeln" nicht vergessen.
Und hier aber noch ein anderer Gedanke. Ich zögere etwas, das zu schreiben, weil es vielleicht zu Unzeit kommt. Aber ich befürchte natürlich, dass ein naheliegender Einwand gegen die Übernahme von Rudi's Verbesserung sein könnte, dass sie existierende Scripts inkompatibel macht. Ich hatte früher dazu bemerkt, dass das nur Scripts beträfe, die eh "defekt" sind. So ganz stimmt das aber natürlich nicht, weil ein alleine stehender (= nicht verschachtelter) Einzeiler mit "endif" in der bisherigen Version läuft, in der neuen aber nicht mehr. Das ist in der Praxis wahrscheinlich der häufigste Fall. Daher meine Frage an Rudi: wäre es denn nicht möglich, den uBasic-Code so zu ändern, dass auch in Zukunft ein "endif", welches
nicht alleine in einer Zeile steht (also eines am Ende eines Einzeilers) einfach
ignoriert wird, ohne einen parse error zu liefern? So dass es also quasi optional wäre am Ende eines Einzeilers? Ohne irgendwas anderes zu verändern an deiner Lösung?
Ich stelle mir vor, dass der Parser doch ohnehin auf jeden Fall weiß, ob das endif "unerwartet" (am Ende eines Einzeilers) kommt, und warum dann nicht einfach ignorieren?
Kann natürlich sein, dass die Idee ganz dumm ist und das nicht so einfach geht, wie ich mir das meiner Naivität vorstelle. Wenn's zu kompliziert wäre oder falls es ohnehin zu spät ist für so eine Überlegung, dann kann man es auch lassen.