AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte RUTIS Engine (Scripting) [WinCE spinnt]
Thema durchsuchen
Ansicht
Themen-Optionen

RUTIS Engine (Scripting) [WinCE spinnt]

Ein Thema von olee · begonnen am 14. Jun 2009 · letzter Beitrag vom 20. Aug 2010
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    
Benutzerbild von olee
olee
Registriert seit: 16. Feb 2008
DIES IST DIE ALTE VERSION VON RUTIS
Die neue Version gibts hier: RUTIS v2
----------------------------------------------

Hi,
Hier möchte ich euch eines meiner größten Projekte vorstellen.

RUTIS

Die "RunTime Script Engine" (RUTIS Engine) dient dazu, Scripte zur Laufzeit zu compilieren und auszuführen, um z.B. Die Funktionen von Programmen zu verändern, ohne diese neu zu compilieren.
Durch eine sehr hohe Geschwindigkeit lassen sich sogar ganze Programme allein mit einem solchen Script erstellen.
Die RUTIS Engine kann mehrere Compiler unterstützen wobei der Standardcompiler mit einem Delphi/Pascal Syntax arbeitet.

- - - HINWEIS: INFOS ETWAS VERALTET - WERDEN BEI GELEGENHEIT KORRIGIERT - - -
RUTIS bietet eine große Funktionsvielfalt:
  • Globale sowie lokale Variablen
  • Verschachtelbare Funktionen und Methoden, die auch rekursive Algorithmen lösen können.
  • Beliebige Deklaration von Records
  • Unterstützung von Pointern und Arrays
  • Einfache Verknüpfung von Hostprogramm und Script mittels speziellen, beliebig erstellbaren Verbindungsfunktionen.
  • NEU: Methode-Variablen (bisher jedoch nur parameterlose Prozeduren)
  • NEU: Formular Interface, wodurch sich ganze Anwendungen mit GUI erstellen lassen!
  • NEU: Aufruf von DLL-Funktionen über die deklaration im Script als 'external' ! (Hier ein DANKE an 'Astat')
  • uvm.
Das sollte vorerst an Informationen reichen.

RUTIS PROJEKTSEITE (Downloads, Infos usw.)
SVN-Portal: http://www.xp-dev.com/sc/77518


INFO : RUTIS unterliegt einer Creative Commons BY-NC-SA (DE) Lizenz
INFO 2: Die nachfolgenden Links könnten des öfteren nicht funktionieren, da sie nach jedem neuen Upload ungültig werden. Auf der Projektseite dagegen sollten
die Downloadlinks immer funktionieren. Ich entschuldige mich hier auch für eine solche Faulheit, die Links nur selten zu aktualisieren ^^
RUTIS Setup 1,04 MB RUTIS (zip) 1,28 MB RUTIS (Source) 2,08 MB


MFG
Codename: Performancepumpe

Geändert von olee (20. Mai 2011 um 04:50 Uhr)
 
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#11
  Alt 19. Jun 2009, 14:43
Ganz recht!

Es sind mehrere Scriptsprachen möglich.

Es gibt immerhin eine TRutisCompiler Klasse, von der dann z.B. TRutisCompilerDelphi abgeleitet ist, und
sogar eine Variable ScriptLanguage, wo man später eine sprache auswählen könnte.

Ich bin mir nur noch nicht sicher, ob und welche Syntax ich einbauen sollte (Vllt. auch einen eigenen).

fCode := @ScriptData^.Code; Funktioniert auch in Delphi und ich habe es kurzerhand in den Code eingebaut.

Aber die OpenGl-demos kannst du doch mit der schon kompilierten Version testen

Aber nochmals DANKE für das Interesse und deinen Beitrag

Ich werde demnächst eine neue Version uploaden.

Was ich noch vorhabe:
  • Freie Typendeklaration d.h. z.B. TInfoInteger = Integer
    Pointer-Typen (PBall = ^TBall) wird es wohl nicht geben, da sie unnötig sind.
  • Mit 1. -> Methodenvariablen (var proc: TDoSoThProc) und Vorausdeklaration von Methoden (also über implementation)
  • Finalization für Objekte/Vars (also freigeben von Arrays (Strings werden schon automatisch freigegeben^^))
  • String und Char Support (z.B. AString[i] := #13)
  • Sobald es möglich wird OOP

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

 
Delphi 7 Professional
 
#12
  Alt 20. Jun 2009, 00:50
Ich wollt mich auch mal zu der Script-Engine äußern.

Also erstmal: ein wirkliches Lob - ich weiß was für ein Aufwand es ist, so was zu schreiben. Ich hab mir das Testprogramm angeschaut und finde es wirklich gut.

Jedoch wollt ich noch kurz was sagen (jedoch wirklich ohne Konkurenzgedanken!):
Zitat von olee:
Ich habe mir mal die Sysygy angekuckt und gesehen, dass die mit Variant arbeitet, was nicht gerade
schnell ist.
Bei meiner Script-Engine gibt es den Delphi-Typ Variant nicht und er wird auch nicht benutzt. Die einzige Funktion, die Variant unterstützt ist die "Call"-Methode, die als Rückgabewert den Typ Variant hat (die Funktion ist dazu da, um einzelne Script-Funktionen ausführen zu können). Mein Datentyp hat zwar im Namen zwar "Variant" stehe, jedoch ist der Typ an sich (wie bei dir) nen Record mit ner case-anweisung variabel gestalltet ist.
Delphi-Quellcode:
type
  PSygScript_Variant = ^TSygScript_Variant;
  TSygScript_Variant = record
     ...
     case Byte of
      btU8 : (tu8 : TbtU8); // byte
      btS8 : (ts8 : TbtS8); // shortint
      btU16 : (tu16 : TbtU16); // word
      ....
  end;
Nur um das mal richtig darzustellen.

Ich denke, dass die Engine viel potential hat. Noch mal zum OOP: eine Script-Engine ist in meinen Augen nicht dazu da, um Datentypen zu definieren, sondern nur um den Programmablauf zu steuern. Ich will zwar in meiner neuen Script-Engine irgendwann mal OOP unterstützen, jedoch ist das wirklich nur zweitrangig.

Ich wünsch dir auf jeden Fall viel Glück und Erfolg mit der Script-Sprache und hoffe, dass es gut für dich weiter geht - und das Beste ist immernoch: man weiß sehr viel besser über die internen Abläufe des Compilers, über die CPU usw. bescheid .

Ach ja, was mir noch aufgefallen ist:
Delphi-Quellcode:
var i: integer;

implementation

begin
  i := 2.1; // <- das sollte nicht funktionieren
end.
Zudem würd ich noch die Operatoren mod shr und shl einbauen - das ist schon relativ wichtig.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#13
  Alt 20. Jun 2009, 14:41
Hm vllt. war das auch nur eine etwas alte Version der Sysygy oder ich hab mich geirrt sry

Aber ich habe noch eine Menge Arbeit vor mir.

Am meisten zerbreche ich mir momentatn den Kopf darüber, wie ich geschickt die Typen abspeichere.
Ich möchte dabei möglichst EIN array mit allen Typen haben...


MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#14
  Alt 21. Jun 2009, 15:12
Mal eine kleine Info, die bestimmt einige interessieren wird:

Die Engine wird ebenfalls mit FPC kompilliert für PocketPc

In einer älteren (sehr viel älteren ) Version hatte ich es sogar schon mal auf dem PPC laufen

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#15
  Alt 24. Jun 2009, 11:39
So ich habe mal eine neue Version hochgeladen.

Neuerungen:
  • Bugfixes
  • Conditions werden nun als Ausdrücke erkannt.
    (Bsp: Bool := Bool2 and (X = 3)
    Vorher gab es eine eigene Funktion zur erkennung von Conditions, sodass Anweisungen wie
    die genannte nicht möglich waren.
  • Break und Continue stehen nun zur Verfügung
  • Length, High und SetLength für Strings
  • uvm.

Außerdem habe ich eine zweite Version hochgeladen, die die komplette benötigte Source enthält
und so direkt kompilierbar ist (Wenn doch noch eine Unit fehlen sollte bitte melden).

Derzeit empfohlene Scripte:
  • Skeleton gl 2.rutis
  • DEMO_Gravity_OpenGl.rutis
  • GAME ICY TOWER.rutis
  • DEMO_Gravity_Canvas.rutis

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#16
  Alt 24. Jun 2009, 20:07
So ich habe mal die "IDE" vebessert - sowohl in Funktion, als auch Design.

Ich hoffe es gefällt euch.

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#17
  Alt 25. Jun 2009, 11:10
So ich habe nochmal einige kleine Bugfixes gemacht und die IDE verbessert.

Wer will darf selbstverständlich auch mal selbst erstellte Scripte hier hochladen.

Mich würde es auch mal interessieren, wie gut ihr die Bedienung u.a. findet.

Also wer Lust hat: Einfach mal ein geschriebenes Script hochladen

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
mimi

 
FreePascal / Lazarus
 
#18
  Alt 31. Jul 2009, 01:13
Das Projekt ist von der Idee her nicht schlecht. Für ein sehr Aktuelles Projekt, suche ich genau sowas.
Eine universale Script Engine.

Du hast geschrieben, dass die Sprache egal ist. Prima. Also könnte ich zum testen theoretisch, erst einmal die Objekt Pascal Sprache nehmen und später weitere die ich benötige hinzufügen z.b. wie JavaScript, JScript, VBScript und soweiter oder sogar eine Eigene.
Michael Springwald
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

 
Turbo Delphi für Win32
 
#19
  Alt 8. Sep 2009, 16:16
So nach langem Schweigen darf ich mal wieder meine Konkurrenz gegenüber
der Sysygy Engine ankündigen

Ok (fast-) Spaß beiseite:

Ich habe natürlich nicht an der Arbeit an RUTIS aufgehört, aber nur ne kleine Pause gemacht.

Ich habe mich in der Zeit mal meinem anderen laufenden Projekt LOZ zugewandt.

Jetzt aber kehren ich und RUTIS zurück ... mit neuen Ideen

Ich werde mich jetzt von ein paar Sachen trennen, und neue geniale Funktionen einbaun.

--------------------------------
Dabei die größte Änderung:
--------------------------------
Ich werde jetzt nichts mehr in den Stack als "Selfmade-Variant" ablegen, sondern
ich werde die Daten unmittelbar als (wenn man es so nennen kann) "Datenstream" abspeichern.
D.h. die Daten liegen so im Speicher, wie es auch bei Delphi der Fall ist.
Der Vorteil:
Man kann ganze Records aus dem Hauptprogramm direkt in das Script laden oder sogar
aus dem Script (über Pointer) heraus bearbeiten.

Das bedeutet im Klartext:
MEHR GESCHWINDIGKEIT UND FUNKTIONALITÄT ... und das nicht gerade wenig ^^

Was noch kommt:
  • Die Typen werden vollkommen neu abgespeichert.
  • Es werden neu Variablen zur Verfügung stehen:
    Von Byte über ShortInt biz zu Integer und Cardinal...
    Von Single über Real bis zu Extended
    Vermutlich kann man später eigene Varaiblentype (sowas wie ein TVector) definieren, die eigene Operatorenfunktionen ("Vector := Vector1 + Vector2" oder "Vector := Vector1 * Vector2") besitzen, deklarieren (aber nur aus dem Hauptprogramm raus)
  • Es sind dann auch solche Konstrukte möglich:
    "TMyInteger = Integer",
    "TIntArray = Array of Integer" usw.
  • Methoden werden auch als Typen deklariert -> es kann wie in Delphi Methoden-Variablen (events) geben.
    "TUpdateProc = procedure(time: Single);" usw.
  • UVM.

Ich werde euch sicherlich weiterhin auf dem Laufenden halten.

MFG
Björn Zeutzheim
  Mit Zitat antworten Zitat
mimi

 
FreePascal / Lazarus
 
#20
  Alt 8. Sep 2009, 21:29
Kling gut.

Wenn ich deine Script Engine auch unter FPC zum laufen bekomme, wenn es soweit ist. Im Moment habe ich noch keine Verwendung dafür, allerdings später währe so eine Script Sprache nicht schlecht. Inzwischen habe ich theoretisch vier zur Auswahl, mal sehen, welche ich als erste einbaue *G*.
Michael Springwald
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz