goloMAK,
dieser "Knoten" läßt sich allerdings auflösen, wenn man auf die (einfache) Editierbarkeit im C64 verzichtet und den Hauptaugenmerk auf die Ausführbarkeit legt.
Dann hätten wir einen Präprozessor für BASIC-Quelltext und von dem könnte man durchaus auch mehr verlangen, eben z.B., daß längere Variablennamen erlaubt sind. Diese längeren Namen könnte der Präprozessor dann auf 1- oder 2-buchstabige Variablennamen abbilden. Leerzeichen im Quelltext wären außerhalb von Anführungszeichen egal, da man sie problemlos beim Tokenisieren wegstrippen kann (bei der Ausführung werden sie übersprungen) und damit bleibt der Speicherverbrauch auch unten.
Das oben beschriebene geht übrigens mit Einschränkungen auch schon "ab Werk" - schreibst Du statt "...:FORT=STOP:..." die FOR-Anweisung wie folgt: "...:FORT=S{SHIFT-Z}TO{SHIFT-Z}P:..." erhältst Du nach dem LISTen tatsächlich wieder "...:FORT=STOP:...", was aber tatsächlich als "S TO P" tokenisiert ist! Die geshifteten Zeichen werden als ungültige Abkürzung erkannt und dann vom Tokenizer eliminiert. Heißt, im tokenisierten Programmtext tauchen die geshifteten Zeichen nicht auf.
Welchen geshifteten Buchstaben man da hernimmt ist erstmal egal, Hauptsache er bildet mit dem vorherigen Teil nicht zufällig doch ein Schlüsselwort. "Z" kommt aber in keinem V2 Schlüsselwort vor und ist darum für diesen Zweck ideal geeignet.
Diese Technik macht dann auch Variablennamen wie "IF", "TO", "ON" oder "OR" zugänglich, indem man das {SHIFT-Z} zwischen dem ersten und zweiten Buchstaben hinschreibt.
Viele Grüße,
Michael
P.S. ich nehme mal an der OP sucht einfach nach bereits vorhandenem Quelltext für einen Tokenizer in C#. Nicht mehr und nicht weniger. Daß das Original im ROM nicht so ganz die einfache Nummer zum rausrippen und portieren ist, hat Endurion ja schon geschrieben.