Developpez.com - Delphi
X

Choisissez d'abord la catégorieensuite la rubrique :


Sepi, moteur de script orienté objet

Date de publication : 05/12/2004 , Date de mise à jour : 08/09/2010

Par Sébastien Doeraene (sjrd.developpez.com)
 

Moteur de script orienté objet développé pour Delphi
info Looking for information in English about Sepi? You should go to the English-speaking Website about Sepi.

       Version hors-ligne (Miroir)
Viadeo Twitter Facebook Share on Google+        



Présentation
Gestionnaire du projet
Le forum
Licence
Informations techniques
Versions de Delphi supportées
Dépendances
Modules
SourceForge.net
Sources de Sepi
Documentation


Présentation

Sepi est un moteur de script orienté objet pour applications Delphi.

La principale différence d'avec les autres moteurs de script existant, tels que Pascal Script de RemObjects Software ou Scripter Studio de TMS Software, est que Sepi permet non seulement aux scripts d'instancier et de manipuler des objets de classes Delphi natives, mais aussi et surtout de créer leurs propres classes.

Les classes ainsi créées par Sepi sont des classes Delphi natives, mais créées à l'exécution. Elles sont tellement natives que les appels de méthodes virtuelles, dynamiques, de messages ou l'utilisation d'opérateurs comme is fonctionnent de manière complètement transparente.

Pour réaliser cela, le module principal de Sepi est un module de réflexion. Donc un module qui permet d'obtenir des informations détaillées sur les types et classes pendant l'exécution du programme. Mais qui permet aussi - et c'est unique dans le monde des langages compilés ! - de créer des types et des classes entièrement compatibles avec les classes natives pendant l'exécution.

Les scripts sont compilés en un pseudo-code intermédiaire avant d'être exécutés. Ce pseudo-code est unique pour Sepi, mais les scripts peuvent être écrits en divers langages. Il suffit de développer un compilateur pour chaque langage de script, Sepi proposant de grandes facilités pour la construction de compilateurs pour son pseudo-code. Par exemple, la partie spécifique au langage Delphi ne fait actuellement que 2000 lignes - rien en comparaison de tout ce qui est offert par Sepi et partagé entre tous les compilateurs.

Il est ainsi possible aux applications de proposer du scripting personnalisé pour leurs besoins, afin de permettre à leurs utilisateurs finaux de les personnaliser. C'est là le but essentiel de Sepi.


Gestionnaire du projet

Le projet est géré au travers de la plateforme projets de Developpez.com. Vous y trouverez les bug trackings, annonces, etc.


Le forum

Si vous avez la moindre question sur Sepi, son but, son utilisation ou son fonctionnement interne, n'hésitez pas consulter le forum de Sepi, sur Developpez.com.

Vos contributions quant aux idées, développement ou quoi que ce soit d'autre sont les bienvenues sur ce forum.


Licence

Sepi est distribué sous licence en GNU General Public License (GPL) version 3. Vous pouvez trouver le texte complet de cette licence à l'adresse en http://www.gnu.org/licenses/gpl.html.

L'exception Classpath à la GPL, telle que rappelée ci-dessous, s'applique à tous les fichiers de Sepi.

Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.

Concrètement, cela signifie qu'il est possible d'utiliser Sepi dans un projet non open source, voire commercial.

Finalement, les programmes d'exemple (SepiDelphiCompiler, SepiRun et SepiExplorer) sont dans le domaine public. Vous pouvez donc en faire tout ce que vous voulez.


Informations techniques


Versions de Delphi supportées

Le projet Sepi est développé en parallèle avec Delphi 2007 et Delphi 2009. Toutes les éditions, y compris l'édition personnelle, doivent être en mesure de compiler et d'utiliser Sepi. Les versions 2005, 2006 et 2010 ne poseront pas de problème, a priori, et sont testées de temps en temps.

Pour ce qui est des versions 4 à 7 et antérieures, des modifications concernant les .bdsproj etc. seront peut-être à prévoir, mais le projet devrait être utilisable.

En revanche, il n'y a aucun espoir pour les versions 3 et antérieures, car celles-ci ne proposent pas de RTTI suffisamment avancées, or Sepi repose sur les RTTI.


Dépendances

Sepi en lui-même ne dépend d'aucune autre bibliothèque tierce. En revanche, le programme d'exemple SepiExlorer utilise le composant en TVirtualTreeview.


Modules

Sepi est décomposé en un certain nombre de modules, sous forme de packages Delphi. Chaque module est susceptible d'être dépendant des précédents, mais pas des suivants :

  • Module de code utilitaire : SCL (Sepi Code Library) - des tas de routines et classes d'usage divers ;
  • Module de composants : SVCL (Sepi Visual Components Library) - quelques composants pratiques ;
  • Module de boîtes de dialogues : SDL (Sepi Dialogs Library) - plus pour des applications tierces, sauf pour la boîte de dialogue À propos utilisée dans la suite ;
  • Module de réflexion : ce module est le module le plus important de Sepi. Il s'agit d'intégrer à Delphi un outil puissant qui lui fait défaut : la réflexion (des RTTI poussées à l'extrême) - c'est cette partie qui permet de créer des classes à l'exécution ;
  • Module d'interprétation : permet d'interpréter du code pseudo-compilé, et de créer des méthodes en mémoire ;
  • Module de compilation : compile des scripts écrits en langages divers en l'unique forme intermédiaire que comprend l'interpréteur ;
  • Module d'édition : un module accessoire, qui ne sera développé que lorsque le projet sera déjà fonctionnel, destiné à faciliter l'édition de scripts Sepi ;
  • Module de compilation de source Delphi : compile des unités Delphi dans Sepi - Delphi étant le langage "officiel" de Sepi, il est normal qu'il recoive un compilateur au sein même de Sepi.

SourceForge.net

Vous pouvez retrouver Sepi sur SourceForge.net à l'adresse https://www.sourceforge.net/projects/sepi/.

C'est SourceForge qui héberge actuellement le repository Subversion de Sepi. Merci à eux.


Sources de Sepi

info Le thread Installer Sepi + Lancer les programmes exemples explique en plus de détails comment obtenir Sepi (y compris en .zip) et l'installer, puis comment lancer les programmes d'exemple.
Pour obtenir les sources de Sepi dans une version (presque) stable, téléchargez Sepi.zip.

Si vous voulez récupérer les sources de développement de Sepi, vous devez installer un client Subversion - comme TortoiseSVN - puis extraire une copie locale du tronc commun.

Le repository se situe à l'adresse suivante. Son accès est en lecture seule pour les authentifications anonymes.
https://sepi.svn.sourceforge.net/svnroot/sepi/trunk

warning Avant toute chose (avant même de lancer Delphi), vous devez ajouter les deux variables d'environnement suivantes dans le panneau de configuration :
  • SEPISDK : chemin jusqu'au dossier de la copie de travail ;
  • SEPI : chemin du dossier bin se trouvant dans le dossier indiqué juste avant.
Ensuite, il ne vous restera plus qu'à mettre à jour votre copie de travail lorsque cela sera nécessaire.

Dans ces sources, les conventions de nommage des paquets sont celles d'Indy, à savoir que la version du compilateur est ajoutée à la fin du nom du paquet, et que les paquets de design commencent par le préfixe "Dcl".

warning La liste indiquée ci-après ne reprend pas les suffixes de version du compilateur.
Le groupe de projet contient les projets suivants :
  • SCL.bpl : Sepi Code Library
  • SVCL.bpl : Sepi Visual Component Library
  • DclSVCL.bpl : Sepi Visual Component Library (design)
  • SDL.bpl : Sepi Dialogs Library
  • DclSDL.bpl : Sepi Dialogs Library (design)
  • SepiCore.bpl : Sepi Core
  • DclSepiCore.bpl : Sepi Core (design)
  • SepiReflection.bpl : module de réflexion
  • SepiInterpreter.bpl : module d'interprétation
  • SepiCompiler.bpl : module de compilation
  • SepiEditor.bpl : module d'aide à l'édition
  • SepiDelphiCompiler.bpl : module de compilation pour le langage Delphi

Documentation

Le projet Sepi est documenté au moyen du logiciel DelphiCodeToDoc, une adaptation pour Delphi de JavaDoc.

Une fois que vous avez téléchargé les sources et installé DelphiCodeToDoc, il vous suffit d'ouvrir le fichier doc\Sepi.xml avec ce logiciel, puis de construire la documentation. Vous trouverez alors un fichier Sepi.chm dans ce même répertoire doc.

Vous pouvez aussi télécharger le fichier Sepi.chm (miroir HTTP), qui est actuellement à jour avec la révision 511 du repository SVN (5 septembre 2010).

Vous pourrez aussi trouver la documentation complète de Sepi sur ce site. Mais sachez que cette documentation n'est pas très régulièrement mise à jour, en raison du temps cela prend. Merci de votre compréhension. Elle est actuellement à jour avec la révision 511 du repository SVN (5 septembre 2010).


Tutoriels
Les génériques avec Delphi 2009 Win32 (English version) - également disponible en espagnol et en russe
Réaliser un plug-in comportant un composant
Construire une procédure pointant sur une méthode
Création de composants - en 4 parties
Refactoring avec Delphi 2007
Prise en main de Delphi 2005
Analyseurs syntaxiques - Leur fonctionnement par l'exemple
Créer un fichier d'aide HLP
Pourquoi un paramètre const change-t-il mystérieusement de valeur ?
Sources
SJRDUnits - Routines et classes diverses
SJRDComps - Quelques composants
Projet Sepi
Présentation
FAQ Sepi
Programmes
FunLabyrinthe - Jeu de labyrinthe très spécial et très fun
TrickTakingGame - Jeux de cartes à plis en ligne
MultiAgenda - Agenda multi-répertoires
DecodeFormulaires - Décode les formulaires
Excel --> HTML - Convertisseur de tableaux Excel en HTML
AddressLinks - Lie les adresses Internet et e-mail d'un document HTML
Vipion - Tic Tac Toe sur 4x4 cases avec jeu de l'ordinateur
BigCalc - Calculatrice de haut niveau
Espace paroissial Astérion de Watermael-Boitsfort

Valid XHTML 1.0 TransitionalValid CSS!

Copyright © 2005-2010 Sébastien Doeraene. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -