Ich denke, dass jede grundlegende Implementierung einen bestimmten Ansatz verwendet.
Das Basic, mit dem ich aufgewachsen bin, war ein Microsoft Basic, der auf dem MSX-Computer lief. Laut "The MSX Red Book", das ich zu dieser Zeit sehr aufmerksam gelesen habe, hat das MS-Basic tatsächlich eine lineare Liste verwendet.
Jede Basic-Zeile wurde als Zeiger auf die nächste Zeile gespeichert, gefolgt von der eigentlichen Zeilennummer in binärer Form, gefolgt von der Token-Version der Zeile gefolgt von einem Null-Zeichen; so etwas wie diese:
Address | Content
8000 | 8009 -- next line
8002 | 10 -- this line number
8004 | .... -- opcodes for each instruction in the line
... | ...
8007 | ...
8008 | Null -- terminator
8009 | ... -- the next line
Trotz der Tatsache, dass die Linien, wo eine verknüpfte Liste, das Basic-Interpreter nicht das auszunutzen haben. Jede Linie wurde physikalisch in linearer Abfolge gespeichert.
Wie Sie sich vorstellen können, bedeutete das Einfügen und Löschen von Zeilen in der Mitte eines vorhandenen Programms viel Arbeit. Wenn neue Zeilen zwischen bestehende Zeilen eingefügt wurden, wurden die nachfolgenden Zeilen im Speicher nach oben verschoben, um Platz für die neuen zu schaffen. In ähnlicher Weise würde das Löschen von Zeilen in der Mitte des Programms dazu führen, dass die nachfolgenden Zeilen im Speicher nach unten bewegt werden, um den Platz zu füllen, der von den entfernten Einsen übrig geblieben ist. Das Verschieben des Speichers nach oben und unten bedeutete, dass alle diese Links für jede verschobene Zeile aktualisiert werden mussten.
Ich weiß es eigentlich nicht, aber ich würde annehmen, dass sie etwas wie eine BST-basierte Karte verwenden würden, die automatisch sortiert wird. Das heißt, Elemente werden so eingefügt, dass die Karte immer sortiert ist. – sepp2k
@ sepp2k, danke! BST wurde in den sechziger Jahren erfunden und Microsoft BASIC wurde in 75 erstellt, also wahrscheinlich das, was sie verwendet haben. – Victor