Danke erstmal für eure Antworten!
@Guybrush Threepwood:
Der soll so ähnlich wie QBasic werden, nur für Windows...
@waterhouse533-lp:
Entwurfsmuster sind doch sozusagen beschreibungen, wie die einzelnen Teile des Programms funktionieren oder? Das hab ich schon grob aufgeschrieben...
@JesterDay:
Variablen definieren und so wird alles vom Interpreter übernommen, da die Sprache möglichst auch für Anfänger sehr leicht zu benutzen sein soll.
Für die Variablen dachte ich auch, dass ich ein Record/Structure/Type (und wie auch immer das heißt in den verschiedenen Sprachen ) nehmen werde.
So also ich bin inzwischen ein bischen weiter, und er kann immerhin schon einfache Befehle ausführen
Der Interpreter übersetzt den Source zuerst in Bytecode, der ungefähr so aussieht:
- Id des 1. Befehls
- Anzahl der Parameter
- Länge des 1. Parameters
- 1. Parameter (String)
- Länge des 2. Parameters
...
-Id des 2. Befehls
...
Ich denke Schleifen, If-Abfragen usw- werd ich in Labels umwandeln, die eine eigene ID bekommen.
Ich hab alle Funktionen die der Interpreter versteht auch in meinem Programm, und die Poiter dahin in einem Array.
Jetzt hat ja jeder Befehl eine ID, und die steht in dem Array im Index.
Der Interpreter ließt also die ID ein, dann die Parameter und führt dann die entsprechende Funktion durch den Pointer im Array aus. Die Parameter übergibt er in einem String-Array.
Soweit funktionierts auch zuverlässig und relativ schnell
Jetzt hab ich mir erstmal gedanken gemacht wie ich die Konstanten machen soll, und da der Code evtl. vor jeder Ausführung neu "kompiliert" werden muss darf das ersetzen der Konstanten durch ihre Werte auch bei 1000 Konstanten nicht viel länger als eine Sekunde dauern. Ich hab schon in einem anderen Forum gefragt wie ich das anstellen soll, und bin so an Hashtabellen gekommen.
Gibt es vielleicht auch eine noch schnellere Variante?