PBScript - Scriptsprache mit PureBasic-Syntax

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

PBScript Beta V. 0.73
Userlib bzw. DLL für Windows 32-Bit
Auch mit Unicode
---------------------

Hi Leute,
ich hab mich mal an eine Scriptsprache rangemacht. Jetzt werden ihr wahrscheinlich sagen, dass schon tausende Scriptsprachen erstellt worden sind. Ich wage aber mal zu behaupten, dass meine was gaaaanz besonderes ist 8). Mein Ziel war es nämlich, dass meine Scriptsprache die Syntax von PureBasic benutzt, sodass ganz normale PB-Dateien als Script verwendet werden können. Natürlich ist meine Sprache noch nicht fertig. Aber ich arbeite weiter daran, sie so ähnlich wie möglich kompatibel zu PureBasic zu machen.

Die Funktionsweise meiner Scriptsprache ist geteilt. Das heißt es gibt einen Kompiler, der PB-Dateien in ByteCode umformt. Dazu gibt es einen Interpreter, der den ByteCode dann interpretiert und ausführt. Somit ist ein Kompilieren (welches für gewöhnlich Zeit in Anspruch nimmt) im fertigen Projekt nicht mehr nötig.

Hier eine Liste von den Features von PureBasic, die bereits im Kompiler umgesetzt wurden:

- Variablen, Pointer, Adressen von Variablen '@'
- Konstanten / Enumeration
- Structure (auch mit StructureUnion und Arrays) / Extends
- Dim / Arrays (Ein- und Mehrdimensional / vollkommen kompatibel zu PureBasic)
- NewList / LinkedLists (vollkommen kompatibel zu PureBasic)
- Arrays und Listen auch in Strukturen
- Procedure (auch optionale Parameter) (kann im Script definiert werden oder außerhalb)
- Global/Protected/Shared/Static/Define ('Static' noch ohne Startwertzuweisung)
- IncludePath / (X)IncludeFile
- Data / DataSection
- Read / Restore
- Sprungmarken
- Debug
- EnableExplicit/DisableExplicit
- If/ElseIf/Else
- Select/Case/Default
- While/Wend, Repeat/Until/ForEver, For/Next, ForEach/Next
- Break/Continue
- With
- End mit ExitCode
- Variablenzuweisung (auch die kurze Form 'var + 1' statt 'var = var + 1')
- Alle Operatoren mit gleicher Priorität wie in PureBasic
- Booleanvervollständigung (aus 'If var And string' wird 'If (var <> 0) And (string <> "")')

Ich freue mich auf eure Meinungen, Verbesserungsvorschläge und (hoffentlich nicht) Bug Meldungen.

Hier der Link zur aktuellen Version:
http://cshw89.mevedia.de/PBScript.zip

Für PureBasic <= 4.61:
Version 0.72: http://cshw89.mevedia.de/PBScript_0.72.zip

Für PureBasic <= 4.51:
Version 0.71: http://cshw89.mevedia.de/PBScript_0.71.zip
Version 0.69: http://cshw89.mevedia.de/PBScript_0.69.zip
Version 0.60: http://cshw89.mevedia.de/PBScript_0.60.zip
Für PureBasic <= 4.40:
Version 0.24: http://cshw89.mevedia.de/PBScript_0.24.zip

Mfg Kevin
Zuletzt geändert von CSHW89 am 14.10.2012 23:01, insgesamt 24-mal geändert.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
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

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von ts-soft »

:allright: schöne Idee, eine Art Lua mit PB-Syntax.

Die wichtigsten Infos haste aber im ersten Beitrag weggelassen :(
1. Es ist eine UserLib
2. Sie erfordert Windows
3. Sie unterstützt nur 32-Bit
4. Unicode, Threadsafe usw., weiß ich jetzt nicht, den Rest hab ich ja schon erraten :wink:

Gruß
Thomas
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

Ach was, hab ich doch gar nicht. Sorry hab nicht dran gedacht. Hab die Info wohl etwas zu schnell geschrieben. :oops:
Danke schon mal für Lob.
Bild Bild Bild
http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von STARGÅTE »

Sehr gut :allright:

Aber du hast was "wichtiges" vergessen, wieso kennt deine Lib kein ":" ?

Code: Alles auswählen

Global var1.i
Global var2.i
Procedure main()
  var1 = 1 : var2 = 2
EndProcedure
---------------------------
PBSScriptCompiler
---------------------------
Zeile 5: Garbage at the end of line.
---------------------------
OK
---------------------------
Hier hängt sich das Programm auf, was habe ich falsch gemacht ?

Code: Alles auswählen

Define string.s, file.s
Define *bytecode
Define value.PBSValue
  
; Hier das Scriptprogramm
string = #LF$
string + "Global var.i"+#LF$
string + "Procedure.i test()"+#LF$
string + "  ProcedureReturn 10"+#LF$
string + "EndProcedure"+#LF$
string + "var = test()"+#LF$
  
file = GetTemporaryDirectory()+"Script.pb"
  
If CreateFile(0, file)
  WriteString(0, string)
  CloseFile(0)
    
  *bytecode = PBSCompileScriptFile(file)
  If PBSOpenByteMemory(0, *bytecode)
    PBSStartByteCode(0)
    PBSGetVariableValue(0, "var", value)
    Debug value\integer
    PBSCloseByteScript(0)
  EndIf
EndIf
Liegt scheinbar an PBSStartByteCode(), aber das muss ja ausgeführt werden damit der Code außerhalb der Procedure ausgeführt wird ...

Und noch n Frage, Proceduren von PB werden überhaupt nicht unterstützt ?
Also Abs(), Sin() usw.

Auch und was noch nett wäre , wäre ein PBSCompileScriptString()
damit man nicht immer temp-Datein erstellen muss
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
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

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von ts-soft »

Unicode geht anscheinend auch nicht :(

Mein Test funktioniert auch nicht, aber da hab ich wohl was mißverstanden, Beispiele fehlen
ja auch noch.

Ich hab folgende Datei angelegt:
bla.txt hat geschrieben:a.s = "Hello World"
und folgenden Code probiert:

Code: Alles auswählen

Define *ByteCode
*ByteCode = PBSCompileScriptFile("bla.txt")
Define.PBSValue MyVar

If PBSOpenByteMemory(0, *ByteCode)
  PBSGetVariableValue(0, "a", @MyVar)
  Debug MyVar\string
EndIf
Bekomme aber nur einen leeren Debugger zu sehen?
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6999
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von STARGÅTE »

@TS: du musst den Code erst ausführen, PBSStartByteCode(0)

PBSOpenByteMemory öffnet nur ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
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

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von ts-soft »

Okay, hab bla.txt geändert:
bla.txt hat geschrieben:Global a.s
a.s = "Hello World"
und PBSStartByteCode(0) hinzugefügt, dann gehts :allright:
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von hjbremer »

mal ne blöde Frage ?

wozu brauch ich das ? wenn ich PB habe.
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von X0r »

mal ne blöde Frage ?
Jo, warum nicht.
wozu brauch ich das ? wenn ich PB habe.
Stell dir vor, du willst ein Spiel entwickeln, welches dem Benutzer selbst die Möglichkeit bieten soll, durch Scripts modifiziert werden zu können. ;)
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

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von ts-soft »

hjbremer hat geschrieben:mal ne blöde Frage ?

wozu brauch ich das ? wenn ich PB habe.
Wenn Du PB nicht hast, wäre es ziemlich unnütz :mrgreen:

Ansonsten hat XOr ja schon hinweise gegeben. Man kann dem User also erlauben
z.B. eigene Level, eigenes Skinning o. ä. zu Skripten um die PB-Anwendung zu
manipulieren. Etwas ähnliches gibts ja schon, http://de.wikipedia.org/wiki/Lua

Gruß
Thomas
Antworten