Beiträge von Mac Bacon im Thema „BASIC ohne Zeilennummern schreiben“

    Es gibt Befehle, die nach einem THEN sauber verarbeitet werden, andere nicht.

    Eine Möglichkeit wäre, Zeile 314 zu ändern von

    elsif (match = /^(?<code>then\s*(go(sub|to))|then|go(sub|to))\s*(?<labels>[\w\s,.]+)+/

    zu

    elsif (match = /^(?<code>go(sub|to))\s*(?<labels>[\w\s,.]+)+/

    Dann werden Labels nur noch hinter GOTO und GOSUB erwartet, nicht mehr hinter THEN. Sowas wie IF condition THEN target funktioniert dann natürlich nicht mehr, da muss man dann IF condition GOTO target oder IF condition THEN GOTO target schreiben. Ein richtiger Fix ist das also nicht, aber vielleicht hilft es ja.

    Es werden Leerstrings wie i$="" nicht korrekt erkannt / übersetzt.

    Änder mal Zeile 310 von

    if (match = /^["](?<string>[^"]+)["]/.match(@text))

    zu

    if (match = /^["](?<string>[^"]*)["]/.match(@text))

    Falls der Woltlappen jetzt was zerhaut: Es geht nur darum, das Pluszeichen durch ein Sternchen zu ersetzen. Das Pluszeichen sagt, dass zwischen Doublequotes mindestens ein Zeichen stehen muss (also keine Leerstrings erkannt werden), bei einem Sternchen sind auch "Null Zeichen" erlaubt.

    Ich hab das jetzt nicht groß getestet, das überlass ich Dir. ;)

    Ich wär ja dafür, GOTO zu enfernen und dafür Strukturmakros hinzuzufügen (die dann natürlich u.U. auch zu GOTOs konvertiert würden), dann wird aus den Basic-Programmierern vielleicht doch noch was... :whistling:

    Disclaimer: Ja, mir ist durchaus bewusst, dass GOTO auch in höheren Programmiersprachen mal sinnvoll eingesetzt werden kann.