BASIC

Author Topic: GLScriptBasic  (Read 40687 times)

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1641
    • View Profile
    • http://lostrevenant.blogspot.com
Re: GLScriptBasic
« Reply #15 on: 2010-May-18 »
Hey, wann ist es denn soweit?

Das GLScript würde sich optimal zum "scripten" für LR eignen! Bin schon richtig heiss drauf!  :good:
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Re: GLScriptBasic
« Reply #16 on: 2010-May-19 »
Puh ich schätze gegen Ende von den Sommerferien wird es was zum testen geben.

Leider fehlen im Moment noch die zwei wichtigsten Dinge: Types und Funktionen. Vorallem die Types sind in GLBasic recht eigenwillig, weshalb diese viel Zeit in Anspruch werden.

Btw. Nun gibt es auch die fehlenden Operatoren >=,<=,<> und das in GLBasic lange vermisste NOT ;)
That's no Bug, that's my project!

http://programming-with-design.at/

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10649
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Re: GLScriptBasic
« Reply #17 on: 2010-May-19 »
NOT kommt in V8. In der Online-Hilfe ist's schon drin ;)

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: GLScriptBasic
« Reply #18 on: 2010-May-19 »
Wann kommt denn GLB 8?  :blink:

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10649
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Re: GLScriptBasic
« Reply #19 on: 2010-May-19 »
Wenn's fertig ist ;)
Ich habe mir viel vorgenommen und will auch alles reinpacken. Ich weiß aber, dass manche Sachen schon ziemlich pressieren. Mal sehen. Ich schätze in den nächsten 8 Wochen.

Offline backslider

  • Community Developer
  • Prof. Inline
  • ******
  • Posts: 892
    • View Profile
Re: GLScriptBasic
« Reply #20 on: 2010-May-19 »
Du bist der Beste  :) Freu mich schon, was es wohl alles Neues gibt!

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
SUB
« Reply #21 on: 2010-May-19 »
Hey ho!

Nun habe ich SUB's implementiert. Das war einfacher als ich gedacht habe. Naja was gibt es viel dazu zu sagen? Rekursion kann ich noch nicht viel testen, scheint aber bis jetzt zu funktionieren.

Aber Code sagt mehr als 1000 Worte:
Code: GLBasic [Select]
GLOBAL gg=10
FOR i=0 TO 10 STEP 2
        GOSUB sub1
NEXT

SUB sub1:
        LOCAL Hallo=10 //Damit kommt der Stack auch klar
        STDOUT "In Sub1 "+Hallo
        GOSUB sub2
ENDSUB

SUB sub2:
        STDOUT "zzz "+gg
ENDSUB
That's no Bug, that's my project!

http://programming-with-design.at/

Offline WPShadow

  • Administrator
  • Prof. Inline
  • *******
  • Posts: 1641
    • View Profile
    • http://lostrevenant.blogspot.com
Re: GLScriptBasic
« Reply #22 on: 2010-May-19 »
Hey, das wird ja so richtig genial, wie ich sehe!  :good:

Wird es auch Möglichkeiten für z.B. Ladefunktionen, Graphikfunktionen usw. geben? z.B. Loadsprite oder Drawrect?
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Re: GLScriptBasic
« Reply #23 on: 2010-May-20 »
SOfern Gernot nichts dagegen hat natürlich ;).
That's no Bug, that's my project!

http://programming-with-design.at/

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10649
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Re: GLScriptBasic
« Reply #24 on: 2010-May-20 »
Jo. Hau rein. Ich werde in die AGB reinschreiben, dass ein Export der Script-Language als eigenes Produkt unzulässig ist.
(Nicht, dass einer GLBasic.script macht und als Stand-Alone verkauft).

Soll das Teil was kosten?

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Re: GLScriptBasic
« Reply #25 on: 2010-May-20 »
Da bin ich mir nicht sicher. Vllt. wird es was kosten, da hierbei nur der Source Code mitgeliefert wird, wäre es noch immer von GLBasic abhängig. Es ist schließlich ziemlich viel Aufwand. Aber nur wenn du es auch erlaubst ;)


Ich will das ganze erstmal fertig kriegen und dann schau ich weiter.
That's no Bug, that's my project!

http://programming-with-design.at/

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Re: GLScriptBasic
« Reply #26 on: 2010-May-27 »
Soooooooo

nun habe ich die VM mal ordentlich umstrukturiert. Am meisten hat sich was bei den Stacks verändert. Nun gibt es anstatt einem drei Stacks. Warum habe ich mich dazu entschieden? Ganz einfach, es war mir zu fehleranfällig. Es musste nur irgendwo irgendein Wert vom Stack gelöscht werden damit alles durcheinander kommt. Nun kommt zwar auch alles durcheinander, allerdings kann ich den Fehler um einiges leichter finden, da ja alles geordnet ist. Dadurch entsteht ein geringer Overhead bei Funktionen/subs da ja nun 3 anstatt ein Stack verwaltet werden muss. Aber diesen Nachteil nehme ich in Kauf (es ist eh ziemlich gering).

Ich habe mir nun einen "Plan" gemacht was welche Version können muss:
0.1: Alle Kontrollstrukturen (done)
0.2: Alle Schleifen (done)
0.3: Variablen, Arrays (es fehlen noch String Variablen und Arrays können noch nicht als Parameter fungieren)
0.4: Subs und Funktionen (Subs bereits implementiert)
0.5: Types (Das wird SEHR schwierig)
0.6: Alle Funktionen aus GLBasic implementieren(2D, 3D und NET...) und auch div. Kleinigkeiten wie DATA Statements oder CONSTANT
0.7: API fertigstellen: Diese soll ähnlich flexibel wie die von Lua werden
0.8: Fehlerbereinigung (Hoffentlich nicht allzuviel)
0.9: Geschwindigkeits Optimierung
1.0: ddgui erfolgreich kompilieren und praktisch jedes beliebige Projekt
<1.0: Bugfixes und erweiterte Syntax (FUNCTION in Types, CALLBACk und PROTOTYPEs)
<2.0: Eigene Erweiterungen (stark Erweitertes OOP [Vererbung, Polymorphie,...], div. andere Syntax Elemente und die Java Version des Interpreters)

Tja bis dahin ist ein langer Weg. Mittlerweile ist GLScriptBasic bei Version 0.25. Ich bin allerdings guter Dinge in den Sommerferien (sind ja nurnoch ein Monat bis es soweit ist) bis zur Version 0.5 zu kommen. Ab da wären dann alle Syntax Elemente implementiert.

Ach ja bevor ich es vergesse: FUNCTION's können mittlerweile einen Parameter entgegennehmen:
Code: GLBasic [Select]
funk(-999)
FUNCTION funk: Param1
    STDOUT "Parameter: "+Param1
ENDFUNCTION
 
« Last Edit: 2010-May-27 by coolo »
That's no Bug, that's my project!

http://programming-with-design.at/

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Re: GLScriptBasic
« Reply #27 on: 2010-May-31 »
Hi!

Nun wurden Strings fertig implementiert. Das heißt, sie können in Variablen gespeichert werden, als Parameter arbeiten uvm. Dabei sind mir einige böse Bugs aufgefallen, welche ich noch nicht alle entfernen konnte.
Code: GLBasic [Select]
LOCAL txt$
txt$="Hallo Welt"
STDOUT txt$
txt$=txt$+100 //Hier wird nicht addiert sondern aneinandergefügt
STDOUT txt$
Somit hat GLScriptBasic Version 0.275 erreicht (Sobald die Arrays 100%ig funktionieren ists bei Version 0.3).
That's no Bug, that's my project!

http://programming-with-design.at/

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Weiter gehts
« Reply #28 on: 2010-Jun-08 »
Hallo,
nun nach einer einwöchigen Programmierpause mache ich mit GLScriptBasic weiter. Weshalb die Pause? Ich habe einen hartnäckigen Bug nicht gefunden. Ich habe noch keine Ahnung wo sich dieser Käfer eingenistet hat, aber den werde ich nich finden. Er tritt dann auf wenn eine Subfunktion innerhalb einer Fallunterscheidung/Schleife aufgerufen wird. Hier wird aus irgendeinem Grund jede Variable in ein Array umgewandelt. Worauf hin die gesamte VM durcheinander gerät...

Naja eine kleine Sache habe ich implementiert: INLINE - ENDINLINE
Nun jetzt werdet ihr bestimmt denken "Woah cool" oder "Warum ist der Himmel blau?".
Aber ich muss euch enttäuschen. INLINE ist nur dazu da um OpCodes direkt zu verwenden. Das entspricht quasi Inline Assembler.
Wofür das gut ist? Nunja dadurch dass das ganze bereits "vorkompiliert" ist, braucht der Compiler weniger Zeit zum kompilieren. Außerdem können diverse Optimierungen vorgenommen werden, wozu der Compiler auch nicht in der Lage ist.
Code: GLBasic [Select]
INLINE
pushstr "Ich werde in Inline ausgegeben" //Haa Inline OpCodes
call SCRIPT_STDOUT
ENDINLINE
STDOUT "Ich werde in nicht inline ausgegeben"
 
« Last Edit: 2010-Jun-08 by coolo »
That's no Bug, that's my project!

http://programming-with-design.at/

Offline metzzo

  • Mr. Polyvector
  • ***
  • Posts: 140
  • Coolo ist cool!
    • View Profile
    • programming with design
Funktionen ftw.
« Reply #29 on: 2010-Jun-09 »
So Funktionen funktionieren nun auch einwandfrei. Das heißt Rekursion und so funktioniert auch.
Code: GLBasic [Select]
LOCAL Array[]
DIM Array[5]
Array[-1]=99
STDOUT funk(20,"Hallo",Array[])
STDOUT rekursiv(-2)

FUNCTION funk: Param, Test$, Arr[]
        Param=Param+5
        STDOUT "In Funktion!! "+Param+ "    "+Test$+" --"+Arr[-1]
        RETURN 100
ENDFUNCTION

FUNCTION rekursiv: Pum
        IF Pum>10
                STDOUT "Aus "+Pum
                RETURN Pum
        ELSE
                STDOUT "Rek: "+Pum
                RETURN rekursiv(Pum+1)
        ENDIF
ENDFUNCTION

Man kann bereits Strings, Numbers und Arrays als Parameter übergeben. Zurückgeben kann man allerdings nur Numbers. Dies werde ich demnächst ändern. Die Arrays werden im Gegensatz zu GLBasic (noch) kopiert beim übergeben. Dies werde ich allerdings ebenfalls ändern.

Außerdem kann man mittlerweile auch (wie man sieht) Arrays als Parameter übergeben. Das heißt sowas wie "DIMPUSH Array[],10" ist bereits möglich.

Somit erreicht GLScriptBasic Version 0.35
That's no Bug, that's my project!

http://programming-with-design.at/