So, liebe Leute, heute werde ich meinen Compiler auf http://www.yun7x.de verbessern. Ich habe die Einführung in die imperative Programmierung bestanden. Deswegen denke ich, kann ich gut mit Programmiersprachen - aber nur so viel dazu. Aber: Ich werde eine verbesserte Variablenverwaltung einführen. Und die Idee wird im Kern so aussehen - ich fragte, mich, was wäre, wenn ich eine Programmiersprache schaffe, in der Assembler ebenso erlaubt ist, also die Befehle ADD, ADC, SUB, SBB, ... Das bringt nichts, kam ich zu dem Ergebnis. Wenn ich (5+5)*6 habe. Möchte ich nicht schreiben, mov ax, 5 add ax, 5 mul ax, 6 Aber ich kam auf eine Idee - was wäre, wenn ich ax, bx, cx, ... wie in Assembler erlaube? Und das brachte mich auf eine neue Idee - ich erlaube ax, bx, cx, dx, ... Doch halt - das ist es nicht. Ich erlaube Variablen, die als Addressen erreichbar sind. Ich reserviere einen Speicherbereich, meinetwegen 64k. Die Varialbennamen sind dann $0 bis $64k-1. Jetzt ist jede Variable meinetwegen 4 Byte groß. Man kann sich auch darauf einigen, sie ist zwischen 4 Byte groß und ein Byte. Ich kann auch beliebig, FLOAT mit INT vermischen. Denn sowohl FLOAT als auch INT werden in Binärformat dargestellt. Dann kann ich sie ohne Typüberprüfung addieren. Also, halten wir fest: Die Variablen sind $0 bis $64k-1 Jetzt dachte ich darüber nach, dass ich Konstanten einführen kann. Ich kann, wenn ich $5 als Variablenname nehme, $5 benennen. Wenn ich aber $5 benenne, kann ich gleich $i einführen. Das ist dann, wie in PHP. Sobald $i etwas zu gewiesen wird, wird eine freie Stelle genommen und es wird vermerkt, diese gehört zu $i. Genau wie vorher mache ich aber keine Typüberprüfung - jede Variable ist 4 Byte groß. Arrays kann ich genauso einführen, weil, wenn wir wieder von Addressen her rechnen, das ganze so sehen $5[5]. Dann sind das eben 5 Byte hinter $5. Dabei müssen wir gar nicht auf Grenzen achten. Das bleibt dem Programmierer überlassen. Die Frage ist, was passiert, wenn nicht zu gewiesen wird. Dann ist der Wert undefiniert. Jetzt zu den Funktionen. Was es in Pascal mit den Namespaces schwierig macht, ist dass Funktionen innerhalb von Funktionen definiert werden können. Aber, wir können es machen, wie in C. In C wird keine Funktion innerhalb einer Funktion definiert. Und jetzt können wir neben dem Variablenbereich einen Stack einführen. Bei jedem Funktionsaufruf wird der Stackpointer entsprechend erhöht. Bisher habe ich mit Funktionen gearbeitet, indem ich Objekte erzeugte.