oder gleich halt als include undf fertig.....ts-soft hat geschrieben:Naja, seit Tailbite 1.4 gibts MultiLib Support, Subsysteme sind also unnötig, lediglich MultiLib in TailBite aktivieren.CSHW89 hat geschrieben:tja da ich eigentlich noch nie mit unicode gearbeitet hab, hatte ich auch erst den gleichen fehler. ich weiß also wovon du redest.
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
PBScript - Scriptsprache mit PureBasic-Syntax
Re: PBScript - Scriptsprache mit PureBasic-Syntax
Rings hat geschrieben:ziert sich nich beim zitieren
- Josef Sniatecki
- Beiträge: 657
- Registriert: 02.06.2008 21:29
- Kontaktdaten:
Re: PBScript - Scriptsprache mit PureBasic-Syntax
Gute Arbeit. Das Ganze hat sich gut entwickelt. 
Und da ich mich für Kompilerarchitekturen interessiere, hätte ich auch gleich ein Interview
:
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.
Gruß Josef

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

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.

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ß
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ß
Re: PBScript - Scriptsprache mit PureBasic-Syntax
also, dann stell ich mich mal dem interview:
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.
, 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
.
lg kevin
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 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).
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.Josef Sniatecki hat geschrieben:Wie ist dein ByteCode so in etwa aufgebaut? Ähnelt dieser ASM? Ist eine Decodierung möglich?
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.
hm, also ne include wird definitiv nicht geben, hab nämlich was zu verbergenJosef 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.

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

lg kevin



http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Re: PBScript - Scriptsprache mit PureBasic-Syntax
Tachchen,
Noch ein paar Wüsche:
Könntest du Typenspeziele Prozeduren zum Aus- und Einlesen von Variablen hinzufügen:
Damit meine ich:
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:
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)
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

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
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: PBScript - Scriptsprache mit PureBasic-Syntax
wow so viele wünsche stargate, ich dachte man hat nur 3. naja dann wollen wir mal:
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
wird auf jeden fall erledigt.STARGÅTE hat geschrieben:PBSExamineVariables() mit PBSNextVariable()
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: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 ) einfacherund wenn du es richtig bei dir einbindest wäre es bestimmt schneller, als wenn ich die Teile selber schreibe.
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 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
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.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)
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



http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Re: PBScript - Scriptsprache mit PureBasic-Syntax
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
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



http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Re: PBScript - Scriptsprache mit PureBasic-Syntax
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
. 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
), damit ich auch weiter am ball bleibe, is ja nur mím euren interresse
tschüssikovski
lg kevin
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

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

tschüssikovski
lg kevin



http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Re: PBScript - Scriptsprache mit PureBasic-Syntax
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
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
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: PBScript - Scriptsprache mit PureBasic-Syntax
ALLES!!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?
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



http://www.jasik.de - Windows Hilfe Seite
padawan hat geschrieben:Ich liebe diese von hinten über die Brust ins Auge Lösungen
Re: PBScript - Scriptsprache mit PureBasic-Syntax
Ich glaube mit dem direkten Einbinden von PureBasic-Funktionen gibt es Probleme wegen der Lizenz:
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.
Schau sonst einfach nochmal bei entsprechenden Diskussionen von anderen mit PureBasic erstellten Skriptsprachen vorbei, wie z.B. Operno oder PaladiumX.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.
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