Scriptsprache, eigene Funktionen implementieren
Übersicht

dont_know_to_useBetreff: Scriptsprache, eigene Funktionen implementieren |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Ich schreibe gerade eine eigene Scriptsprache, welche über einen Interpreter eingelesen wird und jede Zeile mittels Instr nach einem Befehl überprüft wird. Nun habe ich ein Problem: Ich möchte eigene Funktionen in meiner Scriptsprache haben, ungefähr so, wie die Funktionen in BlitzMax und BlitzBasic, welche so gebildet werden: BlitzBasic: [AUSKLAPPEN] Function BlaBlub() Anders als bei BlitzBasic ist es für meine Funktionen wichtig, dass keine Parameter erlaubt sind, also etwas wie Function BlaBlub(parameter1) darf es nicht geben. Es müsste also so aussehen: Code: [AUSKLAPPEN] Aufruf function1
;... Function1: ;Funktionscode End Function Und der Code im Interpreter so(Pseudocode): BlitzBasic: [AUSKLAPPEN] If Instr(Zeile,"Aufruf") Then Aber wie genau mache ich es jetzt? Wie überspringe ich all die Zeilen bis eine Funktion gefunden wurde? Wie kann ich zu der Zeile springen, in der der Aufruf stattgefunden hat? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Springen mit den Zeilen ist keine gute Idee. Am besten, du parst das Script erstmal mit Funktionen, die du dann z.B. in einem Type![]() BlitzBasic: [AUSKLAPPEN]
Ich hoffe, du verstehst, was ich meine. |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du liest den gesamten Text auf einmal in ein Text-Array ein. Jede Zeile wird eine Element.
Danach kannst Du Dich nach Belieben im Array rauf und runter bewegen. Code ist nur symbolisch gemeint: BlitzBasic: [AUSKLAPPEN] For i=0 To 999 Den Sprung in die Unter-Routinen könnte man rekursiv machen: Code ist nur symbolisch gemeint: BlitzBasic: [AUSKLAPPEN] Function Action(ZeilenNummer%) |
||
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke ![]() Ich setze mich ran und schaue, wie ich dies am besten in meinen Interpreter einbauen kann. Wenn es Probleme gibt, melde ich mich wieder. ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group