Während der Entwicklungsphase meines Compilers stieß ich auf ein ziemlich komplexes Problem: Wie man schwach typisierte Variablen in meiner Sprache speichert.Methoden zur Speicherung schwach typisierter Variablen
Da ich Variablen deklarieren lassen, ohne ihren Typ explizit anzugeben, und Funktionen erlauben, einen der beiden Typen zurückzugeben (zB Funktion kann ein skalares OR-Array zurückgeben), stehe ich vor der Schwierigkeit, in welcher Form diese Variablen gespeichert werden.
Hier sind die Möglichkeiten, die ich concidered habe, aber alle von ihnen haben einen signifikanten Kopf:
- Regard alle Variablen wie Listen von Doppel (
List<double>
) und haben das erste Element festlegen, ob es sich um ein Skalar ist oder Array (0
oder1
zum Beispiel). - Betrachte alle Variablen als
object
Instanzen. - Betrachten Sie alle Variablen als
TVar
(benutzerdefinierte Klasse), die entwederdouble
oderList<double>
sein kann.
im Auge zu behalten:
- Die nur zwei Arten von Variablen, die ich haben die Absicht, Doppelzimmer und Doppel-Arrays, da alle anderen von einer solchen abgeleitet werden (zB char ist ein Fall von ein doppelt, string ist ein Array von Zeichen, usw.)
- I
ILAsm
verwenden, die ein übergeordnetes Geschmack Baugruppe (NET Zwischensprache ist im Grunde)
Der List-of-doubles-Ansatz erlaubt keine Listen von Listen darzustellen. – sepp2k
@ sepp2k Eine Liste von Listen kann man sich als eine mehrdimensionale Liste vorstellen, die ich mit Werten des ersten Index größer als 2 (z. B. 3 -> 3-dimensionales Array/Liste), e.t. –
Floats sind nicht für alle Ganzzahlen genau. JavaScript hat dieses Problem. Alle Zahlen dort sind Schwimmer. – usr