D-Lib 2.0 script sprache

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

D-Lib 2.0 script sprache

Beitrag von Mischa »

Hi!

Hier kommt D-Lib 2.0 .beta.

(Zur Erinnerung D-Lib ist ein ByteCode generierender Compiler,
inklusive Runtime-Modul. Natürlich kann er aber auch
Stand-Alone-Single-Files generieren. Die Größe der mindestens
erforderlichen Dateien ist zusammen gerade mal ca 70 kb.
Das macht die Sache äußerst portabel)

Was ist neu:

D-Lib wurde komplett neu geschrieben.

-Mathematische Operatoren * + - /
-And + Or Operatoren für If und While
-Keine Variablen-Limitierung mehr (abgesehen vom Speicher)
-Floats sind nun auch integriert
-Prozeduren sind nun volständig rekursiv
-Lokale dynamische Arrays
-Daten-Sektionen
-Vollständige Integration der dlls ins compilat
-Window callback
-Integriertes message handling für nahezu alle Window-Controls
-Variablen können nahezu on the fly deklariert werden
-UserLibs werden nun auch kompiliert
-Mehrzeilige Anweisungen (Zeilenverbindung mit dem ~ Zeichen)
-Bessere syntax
-und mehr...

http://www.thinkrelative.de/dlib.zip

Hilfe-Datei folgt in Kürze.. ;)

Bitte testet die beigefügten Beispiele. Danke!

Und seid nicht allzu kritisch, insbesondere was die Geschwindigkeit
des Parsers angeht. Ist nun mal nicht so hochoptimiert wie
das einige andere hier drauf haben. Dafür ist es mein eigener
Entwurf, der nicht basiert auf anderen Vorlagen, oder Tutorials.

Gruß,
Mischa
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

toll, dass es da was neues gibt und es weiter geht :D
ich hatte mir es vor einer weile mal angeschaut,
aber es gab glaub ich keine schleifen-konstrukte.
geht sowas jetzt?
ansonsten: spitze :allright:

<edit:>
es gab scheinbar schon immer ein while-konstrukt,
da hab ich also mist erzählt, sorry.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Schön das D-Lib weiter lebt :allright:
Hab mir damals ne menge Libs dafür erstellt. Werde es mir auf jedenfall
genauer anschauen :D

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: D-Lib 2.0 script sprache

Beitrag von Kiffi »

Mischa hat geschrieben:Hier kommt D-Lib 2.0 .beta.
Prima! Ich habe mich mit der damaligen Version nicht so genau
auseinandergesetzt, weil mir der rechte Verwendungszweck fehlte, aber nun
könnte ich die D-Lib ganz gut gebrauchen. Werde mich mal reinfriemeln und
freue mich schon auf die Hilfe! :allright:

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@Mischa
Wie wäre es mit einer, evtl. unvollständigen, Beschreibung der neuen
Runtimefunktionen. Hab meine erste Funktion trotdem zustande bekommen :D

Code: Alles auswählen

Procedure GetEnv(variable.s)
	Declare buffer.l, size.l
	size = GetEnvironmentVariable(variable, buffer, 0)
	buffer = MemoryCreate(size)
	If buffer <> 0
		GetEnvironmentVariable(variable, buffer, size)
		ProcedureReturn PeekS(buffer)
	EndIf
	ProcedureReturn ""
EndProcedure

DebuggerOpen(100, 100, GetScreenWidth() - 200, 30)
DebugS(GetEnv("path"))
DebuggerWait()
Funktioniert soweit, weiß aber nicht, ob ich den Mem freigeben muß/sollte.

Gefällt mir bisher sehr gut.

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

wenn ich das beispiel "examples\grafictest.dsf" über die GUI mit <Debug>
starte (oder konsole mit "/debug /run"), und die "grafictest.dcf" vor programm-ende lösche, stürtzt DRun.exe beim programm-ende ab.
ist zwar unfug, aber ein absturtz muß ja nicht sein.
bei den anderen beispielen stürzt nix ab.

warum werden eigentlich keine relativen pfade angenommen? also z.b.
DRun.exe examples\grafictest.dcf


..mh, also bei
dcompiler /debug /run examples\grafictest.dsf
wird richtig compiliert und "grafictest.dcf" erzeugt, aber die relative pfad-übergabe an DRun scheint nicht zu funktionieren, DRun startet jedenfalls nicht automatisch.
das wäre sowieso besser, wenn DRun sagt, das es keinen gültigen pfad erhalten hat oder dergleichen, z.b. wenn man es ohne parameter startet.

..hab schon wieder zu viel geredet. tschüß.
my pb stuff..
Bild..jedenfalls war das mal so.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@#NULL
DRun nutzt relative Pfade, aber immer vom Source ausgehend, was ja
eigentlich auch sinnvoll ist. Wo die Runtime ist, interessiert doch nur den
Compiler und evtl. die Verknüpfung für *.dcf im System.

Oder hab ich was übersehen?

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
#NULL
Beiträge: 2238
Registriert: 20.04.2006 09:50

Beitrag von #NULL »

also bei
C:\think\dlib>dcompiler /debug /run c:\think\dlib\examples\grafictest.dsf
wird kompiliert und mit debugger gestartet, also alles wie es soll.

..
C:\think\dlib>drun examples\grafictest.dcf
geht aber nicht, datei ist aber vorhanden.
stimmt, das macht ja auch eigentlich nix, wie du schon sagtest.

aber bei
C:\think\dlib>dcompiler /debug /run examples\grafictest.dsf
kriegt es der compiler hin (*.dcf wird erstellt), aber es wird nicht gestartet.

-> ich meine nur, wenn der compiler die datei schon findet, und die *.dcf richtig platziert, muß er ja auch in der lage sein, den richtigen *.dcf-pfad an DRun weiterzugeben, bzw notfalls auf absolut zu ergänzen, wenn DRun das so brauch.
my pb stuff..
Bild..jedenfalls war das mal so.
DW

Beitrag von DW »

Super Arbeit!

Ich hätte da noch ein paar Fragen:

Ist D-Lib ein richtiger Parser/Interpretierer?

Hast du eine eigene DirectX Engine und eine eigene GUI Engine geschrieben oder "wrappst" du das alles von PB? Wenn ja, ist sowas für solche Zweche überhaupt erlaubt?
Benutzeravatar
Mischa
Beiträge: 152
Registriert: 29.08.2004 06:52
Wohnort: Hellhorst

Beitrag von Mischa »

@All

Danke fürs Lob!

Dafür habe ich die Runtime heute Mittag mal in 'ne Dll gepackt.
Entsprechendes Beispiel für Plaudereien zwischen PB-Programm
und D-Lib-Script ist beigefügt.

Load down again..


@DW

DirectX? Nein bislang noch nicht, aber D-Lib kann ja jede Standard-Dll
einbinden.
GUI heißt wohl Fensterelemente und so was. Die habe ich alle mühevoll
von Hand per API gebaut. (Das sind all die UserLibs im Verzeichnis)
Darüber hinaus für jedes mögliche Control dieMessages entsprechend
ausgewertet. Lediglich der WindowOpen-Befehl
baut auf PBs zur Zeit auf, ist aber stark erweitert, insofern Tool- und
Statusbars, sowie evtle grafische Pufferung des Hintergrundes gekoppelt
sind. Es wird keine komplexe Funktion PBs gewrappt, nur ein paar
Standardfunktionen wie Len(), CreateMemory() und natürlich a+b 8)
werden im Runtime verwendet. Andersherum ist D-Lib aber auch für
die PBler gedacht, daher auch eine ähnliche Syntax. (Wobei manches
bei der Syntax aber auch anders kein Sinn machen würde)

D-Lib ist ein ByteCode-Compiler/Interpreter
DCompile.exe parst den source und generiert ByteCode.
DRun.exe wertet diesen aus, spielt ihn also ab.

@#NULL

Habe etwas modifiziert, vieleicht geht es jetzt besser.

@ts-soft

Eine superrudimentärelementare Befehlsliste habe ich mit
eingetütet. Stehen aber nur die Befehle und Anzahl der Params.
An der Hilfe bin ich dran.

Gruß,
Mischa
Antworten