(Eine Bitte vorab - diesen Thread nicht für eine vom Thema abgleitende Diskussion nutzen, Danke!)
Ich habe nach brauchbaren GWBASIC nach PASCAL (ISO PASCAL oder Turbo PASCAL, das ist hier nicht so wichtig) Umsetzer/Konverter gesucht.
Leider können die gefundenen Programme nicht GOTO Konstrukte auflösen, sondern wenn überhaupt, benutzen sie das eigentlich unerwünschte GOTO1) auch im PASCAL Code.
Ich hätte nicht den Anspruch, beliebig verschachtelte Sprünge aufzulösen, aber vielleicht in der Tiefe der Verschachtelung, die so üblich in (schlechten) BASIC-Programmen ist.
Also habe ich mir einige Beispiele für eine (spätere) maschinelle Umsetzung ausgedacht. Mir ist noch nicht ganz klar, wie man bei den komplizierteren Beispielen das mit einer Programmvorschrift/-regel zu machen, ich denke nicht an einer manuellen Umsetzung (das kriege ich natürlich auch hin, macht aber absolut kein Spaß bei großen Programmlistings).
Ich fange mal bei den einfachen BASIC-Programmkonstrukten an.
Da ich die Formatierung/Einrückung und Einfärbungen hier im Forum nur mit großem Aufwand hinbekommen würde, habe ich das in Bildern gemacht:
Das Beispiel ist m.E. noch recht einfach auch bei einem maschinellen Umsetzer zu programmieren.
1) GOTO ist schon im Sprachumfang enthalten, entspricht aber keiner strukturierten Programmierung und funktioniert in einigen PASCAL-Implementationen nicht global, sondern nur lokal (also nur innerhalb einer Funktion/Prozedur)