PBScript - Scriptsprache mit PureBasic-Syntax

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von Rings »

ts-soft hat geschrieben:
CSHW89 hat geschrieben:tja da ich eigentlich noch nie mit unicode gearbeitet hab, hatte ich auch erst den gleichen fehler :iamwithstupid: . ich weiß also wovon du redest.
Naja, seit Tailbite 1.4 gibts MultiLib Support, Subsysteme sind also unnötig, lediglich MultiLib in TailBite aktivieren.
Die UserLib wird dann zwar etwas grösser, da sie ascii, unicode und threadsafe versionen enthält, das hat aber
auf die Exen keinerlei Einfluss und das lästige SubSystem wählen entfällt.

Gruß
Thomas
oder gleich halt als include undf fertig.....
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
Josef Sniatecki
Beiträge: 657
Registriert: 02.06.2008 21:29
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von Josef Sniatecki »

Gute Arbeit. Das Ganze hat sich gut entwickelt. :allright:

Und da ich mich für Kompilerarchitekturen interessiere, hätte ich auch gleich ein Interview :mrgreen::

Wie wird ein PB-Quellcode in ByteCode umgewandelt? Also damit meine ich einfach nur eine Kurzbeschreibung der Vorgänge. (z.B. die Verwendung eines Lexers, oder eines Syntax-Baumes).

Wie ist dein ByteCode so in etwa aufgebaut? Ähnelt dieser ASM? Ist eine Decodierung möglich?

Das war eigentlich schon alles, was ich gerne wissen möchte.

Rings Meinung kann ich mich nur anschließen. Als Include, oder am besten als DLL mit PB-Wrapper, damit du auch später die Möglichkeit hast, den Cpluspluslern und anderen Programmierern etwas von PB-Script zu geben. :wink:

Gruß Josef
PB 4.61 | Windows Vista - 32Bit
Homepage

"Wahrlich es ist nicht das Wissen, sondern das Lernen, nicht das Besitzen sondern das Erwerben, nicht das Dasein, sondern das Hinkommen, was den grössten Genuss gewährt." - Carl Friedrich Gauß
Benutzeravatar
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

also, dann stell ich mich mal dem interview:
Josef Sniatecki hat geschrieben:Wie wird ein PB-Quellcode in ByteCode umgewandelt? Also damit meine ich einfach nur eine Kurzbeschreibung der Vorgänge. (z.B. die Verwendung eines Lexers, oder eines Syntax-Baumes).
omg lass mich bloß mit den syntax-bäumen in ruhe. hab ich schon in info DREIMAL durchgekaut. und besonders toll find ich die auch nicht. nene ich hab n lexer genommen, und wärend ich mit dem lexer durch den text gehe und die syntax überprüfe, erstell ich dabei den bytecode. is vielleicht nicht die beste möglichkeit, aber es funktioniert.
Josef Sniatecki hat geschrieben:Wie ist dein ByteCode so in etwa aufgebaut? Ähnelt dieser ASM? Ist eine Decodierung möglich?
asm? naja. also einfacher hab ichs mir schon gemacht. kanns schlecht erklären. is halt ne aneinanderreihung von befehlen, wie in asm. bei ausdrücken z.b. hab ichs mir aber dann doch vereinfacht. dass können dann komplexe ausdrücke sein, wie in einer ganz normalen sprache. also nix mit zwischenspeichern in irgendwelchen registern oder so.
decodierung? zum teil, da ja von außen auf variablen durch ihren namen zugegriffen werden kann, sind diese im bytecode integriert. allerdings konstrukte, wie schleifen und verzweigung (if), sind sehr vereinfacht im bytecode geschrieben. da gibt es nur die zwei befehle "JUMP" und "NULLJUMP" (also nur jumpen wenn die nachfolgende bedingung nicht erfühlt ist). damit kann man ja alles realisieren. ob man das dann erkennen kann und wieder in lesbaren code umwandeln kann, weiß ich nicht, habs noch nicht ausprobiert. wäre aber mal ein feature für die zukunft.
Josef Sniatecki hat geschrieben:Rings Meinung kann ich mich nur anschließen. Als Include, oder am besten als DLL mit PB-Wrapper, damit du auch später die Möglichkeit hast, den Cpluspluslern und anderen Programmierern etwas von PB-Script zu geben. :wink:
hm, also ne include wird definitiv nicht geben, hab nämlich was zu verbergen :-? , nein quatsch. erlich gesagt, vor allem bei so großen projekten, geb ich ungern mein quellcode heraus.
obwohl ich dll's nicht besonders mag, kann ichs ja parallel auch als dll rausgeben. mal sehen, ob schon in der nächsten version.

so ich hoffe, die fragen wurden relativ zufriedenstellend beantwortet, und freue mich natürlich auf weitere anregungen und natürlich besonders auf viel lob von euch :mrgreen: .
lg kevin
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: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von STARGÅTE »

Tachchen,

Noch ein paar Wüsche:
Könntest du Typenspeziele Prozeduren zum Aus- und Einlesen von Variablen hinzufügen:
Damit meine ich:

Code: Alles auswählen

Procedure.i PBSGetInteger(Script, Name$)
  Protected Value.PBSValue
  PBSGetVariableValue(Script, Name$, Value)
  ProcedureReturn Value\integer
EndProcedure
Das ist (wie ich finde ) einfacher ;-) und wenn du es richtig bei dir einbindest wäre es bestimmt schneller, als wenn ich die Teile selber schreibe.

Außerdem wäre noch eine Prozedur:
PBSExamineVariables() mit PBSNextVariable()

Womit man nach dem Ausführen eines Scripts alle VariablenNamen erhalten kann

Es wäre vllt noch ganz nett wenn du selber ein kleinen Editor schreibt in dem man dann Codes eingeben kann F5 drückt und dein Scipt dann Läuft. Und ein Ausgabefenster mit den benutzen Variablennamen (daher die neue Procedure) und deren Inhalte...
Das macht es für mich und andere einfacher schnell dein Script zu testen ... (ich selber hatte für meine Scriptsprache auch n Editor geschrieben, aus dem selben Grund ;-) )

Klar könnte ich auch selber n Editor schreiben ^^, was ich vllt auch tuen werde, wenn du nicht willst

Es gibt noch n Fehler:

Code: Alles auswählen

Global var.i
For var = 1 To 10
 
Next var
Syntax-Error in 4
Auch wenn man die Variable hinter Next weglassen kann, sollte man sie dennoch schrieben dürfen (bei schachtlungen ist es dann einfach zu lesen)
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

wow so viele wünsche stargate, ich dachte man hat nur 3. naja dann wollen wir mal:
STARGÅTE hat geschrieben:PBSExamineVariables() mit PBSNextVariable()
wird auf jeden fall erledigt.
STARGÅTE hat geschrieben:Könntest du Typenspeziele Prozeduren zum Aus- und Einlesen von Variablen hinzufügen:
Damit meine ich:
Code:
Procedure.i PBSGetInteger(Script, Name$)
Protected Value.PBSValue
PBSGetVariableValue(Script, Name$, Value)
ProcedureReturn Value\integer
EndProcedure

Das ist (wie ich finde ) einfacher ;-) und wenn du es richtig bei dir einbindest wäre es bestimmt schneller, als wenn ich die Teile selber schreibe.
naja da sehe ich ein problem: ich müsste ja überprüfen, ob der typ auch wirklich stimmt. wenn nicht, oder auch wenn die variable gar nicht existiert, müsste ich ein error zurückgeben (normal 0). dann weiß aber der benutzer nicht, ob das ergebnis jetzt 0 ist, oder ob was schief gegangen ist. ja gut, man könnte jetzt sagen, das das bei der pb-funktion 'val' auch ist. da weiß man ja auch nicht, ob der string falsch war, oder das ergebnis wirklich 0 ist. mal sehen, werd nochmal drüber überlegen. ne funktion PBSGetVariableType() wäre dabei warscheinlich nicht schlecht.
STARGÅTE hat geschrieben:Es wäre vllt noch ganz nett wenn du selber ein kleinen Editor schreibt in dem man dann Codes eingeben kann F5 drückt und dein Scipt dann Läuft. Und ein Ausgabefenster mit den benutzen Variablennamen (daher die neue Procedure) und deren Inhalte...
Das macht es für mich und andere einfacher schnell dein Script zu testen ... (ich selber hatte für meine Scriptsprache auch n Editor geschrieben, aus dem selben Grund ;-) )

Klar könnte ich auch selber n Editor schreiben ^^, was ich vllt auch tuen werde, wenn du nicht willst
also eigentlich dachte ich, wird haben für pbscript schon einen editor. nämlich der von purebasic. ok das ausführen des scripts kann man dann nicht so einfach machen. ich könnte ja ein kleines tool schreiben, das man dann in die ide einfügen kann, um das script dann ausführen zu können.
STARGÅTE hat geschrieben:Es gibt noch n Fehler:
Code:
Global var.i
For var = 1 To 10

Next var

Syntax-Error in 4
Auch wenn man die Variable hinter Next weglassen kann, sollte man sie dennoch schrieben dürfen (bei schachtlungen ist es dann einfach zu lesen)
ach verdammt, ich dacht das merkt keiner. na gut, ich bin schon auf das problem gestoßen. ist schrieriger als es aussieht. werd mich nochmal dahinter setzen.


so, ok ich arbeite grad an konstanten, wenn ich damit fertig bin, gibts die neue version mit den neuen features.
mfg kevin


edit:
hab grad nochmal über PBSExamineVariable() nachgedacht. ich hoffe ist ok wenn ich es etwas anders mache: mit PBSCountVariables() und PBSGetVariableName() mit index
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

So es ist soweit:
Version Alpha 0.15 ist da

Also erst mal alles Neues im Script:
- Konstanten (vorallem Operationen mit Konstanten werden zur Compilezeit berechnet)
- Enumeration (mit Startwert/Step und der vordefinierten Konstante #PB_Compiler_EnumerationValue)
- Nach Next darf jetzt eine Variable stehen

Und jetzt außerhalb:
- Für jeden Typ gibt es jetzt eine Get/Set-Methode, um einer Variablen einen Wert zu zuweisen bzw. zu ermitteln
- PBSGetCountProcedures()/PBSGetProcedureName() und PBSGetCountVariables()/PBSGetVariableName(), um alle Namen der Proceduren und globalen Variablen im Script auszulesen
- Get-Methoden für Proceduren: PBSGetProcedureType() / PBSGetProcedureCountParams() / PBSGetProcedureParamType()
- Get-Methode für Variablen: PBSGetVariableType()

Dazu gibt es jetzt eine DLL-Version mit einem PB-Wrapper (Ascii und Unicode).

Bei der Userlib hab ichs nicht geschafft eine Multilib zu erstellen. TailBite wollte nicht. Die UnicodeVersion ist also immer noch im Ordner SubSystem.

Ich hoffe das ist erstmal genug, um zu testen. Link immer noch im ersten Posting. Viel spass damit.
lg Kevin
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

So leute,
hab mal ein wenig weiter gewerkelt, und das kam dabei raus:

Version Alpha 0.20

Der Schwerpunkt lag diesmal auf die Structuren:

Im Script:
- StructureUnion
- Arrays in Structuren

Außerhalb gabs ein wenig mehr zu tun:
- Einige Get-Methoden für Structuren, wie sie auch bei Proceduren und Variablen schon gibt
- Bei Variablen und Parameten von Proceduren gibts ne Zusatz-Funktion, um die Structure zu bestimmen, mit der sie definiert wurden (falls sie 'structured' sind)
- Was mir besonders viel Fleiß gekostet hat: In allen Get/Set-Methoden für Variablen kann nun der Parameter 'Name$' nicht nur der Name einer Variablen sein, sondern kann auch mit '\' durch eine 'Structure' einer Variable durchgehen (Beispiel: "var\struc[10]\byte").

- Es gibt noch eine weitere Funktion 'PBSGetErrorText'. Sie gibt eine Beschreibung zurück, falls in irgendeiner Funktion ein Fehler auftrat. ACHTUNG: Bei den zwei Compilierungsfunktionen gibt es jetzt keine Fehlermeldung mehr, wenn ein Fehler auftrat. Dies kann man dann mit der Funktion selber tun.


Da ja von Stargate gefordert wurde einen Editor zuschreiben, hab ich das mal NICHT getan :twisted: . Stattdessen hab ich ein kleines Tool geschrieben, was man dann in die IDE von PureBasic integrieren kann. So kann man ein Script in der IDE schreiben, und dann mit dem Tool kompilieren und ausführen. Ich hab das Programm noch nicht so ausgiebig getestet, also testet was das Zeug hält.


So das wars erst mal von mir, ich hoffe ich bekomm nun etwas mehr feetback von euch, als beim letzten Update (ist auch nicht schwer, muss nur ein Beitrag sein :mrgreen:), damit ich auch weiter am ball bleibe, is ja nur mím euren interresse

tschüssikovski
lg kevin
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: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von STARGÅTE »

so die frage ist halt was man so testen soll ...
Hast du da "besondere" Bereiche die man näher untersuchen soll?

PS: das Tool ist ganz gut gelungen
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
CSHW89
Beiträge: 489
Registriert: 14.12.2008 12:22

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von CSHW89 »

STARGÅTE hat geschrieben:so die frage ist halt was man so testen soll ...
Hast du da "besondere" Bereiche die man näher untersuchen soll?
ALLES!!

nein, eigentlich nur die neuerungen, ob alles so funktioniert, wie es sein soll. insbesondere aber das tool: ich hab, wie schon geschrieben, nicht viel damit getestet, und ein paar mal, als ich einen script-code benutzt hab, der so ein,zwei sekunden lief, stürzte das tool ab. weiß nicht so ganz, ob das jetzt behoben ist. in letzter zeit lief es stabil.

ACH JA: hab noch vergessen, was zu erwähnen. hab jetzt mal angefangen pb-proceduren direkt im script zu integieren. die funktionen (Str,StrF,StrD,Val,ValF,ValD) können schon ohne weiteres benutzt werden. ich möchte aber auch nicht zu viele bereit stellen, da die lib und dann auch die exen unnötig groß werden. habt ihr noch vorschläge welche unbedingt rein müssen. ich denk mal ein paar aus der string-lib wären noch ganz hilfreich. ansonsten, naja es ist eine scriptsprache, da brauch man für gewöhnlich nicht viele.

so, natürlich freu ich mich auch weiter für vorschläge, was ich als nächstes in angriff nehmen sollte. also dann
lg kevin
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
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Re: PBScript - Scriptsprache mit PureBasic-Syntax

Beitrag von c4s »

Ich glaube mit dem direkten Einbinden von PureBasic-Funktionen gibt es Probleme wegen der Lizenz:
PureBasic Lizenz Auszug hat geschrieben:Die PureBasic Lizenz verbietet ausdrücklich die Erstellung von DLL's, deren Hauptfunktion es ist, als ein 'Wrapper' für PureBasic-Funktionen zu dienen.
Schau sonst einfach nochmal bei entsprechenden Diskussionen von anderen mit PureBasic erstellten Skriptsprachen vorbei, wie z.B. Operno oder PaladiumX.


Ansonsten scheint mir dein Ansatz sehr vielversprechend zu sein. Nur leider habe ich momentan überhaupt keine Verwendung dafür, aber in Zukunft weiß ich ja wo ich nachschauen muss. ;)
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Antworten