Projet Sepi
Date de publication : 05/12/2004 , Date de mise à jour : 09/06/2007
Par
Sébastien Doeraene (sjrd.developpez.com)
Projet de compilateur/interpréteur développé en Delphi, pour les Delphistes
Présentation
Le forum
Licence
Informations techniques
Versions de Delphi supportées
Dépendances
Modules
FAQ Sepi
SourceForge.net
Sources de Sepi
Documentation
Présentation
Le projet Sepi est un projet de moteur de script pour applications Delphi.
La principale différence d'avec les 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 seront compilés en un pseudo-code intermédiaire avant d'être exécutés. Ce pseudo-code sera unique pour Sepi,
mais les scripts pourront être écrits en divers langages. Il suffira de développer un compilateur pour chaque langage de
script, Sepi proposant des facilités pour la gestion des types et la génération de son pseudo-code.
Il sera 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.
Le forum
Pour permettre à tous de se coordonner, de proposer des idées, d'en corriger d'autres, et de développer,
un forum public sur ce projet a été mis en
place sur Développez.com.
Vos contributions quant aux idées, développement ou quoi que ce soit d'autre sont les bienvenues sur ce forum.
J'ai besoin de vous !
Licence
Les fichiers contenus dans le sous-dossier source/run/SCL/ forment le sous-projet SCL : Sepi Code Library.
L'exception Classpath à la GPL, telle que rappelée ci-dessous, s'applique à ces fichiers et à la SCL, et à eux
seulement.
Linking this library -the SCL- 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 la SCL (et elle seule) dans un projet non open source,
voire commercial.
Informations techniques
Versions de Delphi supportées
Le projet Sepi est développé en Delphi 2005. Toutes les éditions, y compris l'édition personnelle, doivent être
en mesure de compiler et d'utilier Sepi. Les versions supérieurs à 2005 ne poseront pas de problème.
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 es versions 3 et antérieures, car celles-ci ne proposent pas de RTTI
suffisamment avancées, or Sepi repose sur les RTTI.
Dépendances
Contrairement à ce qui a longtemps été dit, Sepi ne dépendra d'aucune autre bibliothèque.
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.
FAQ Sepi
Vous pouvez consulter la
FAQ Sepi, qui reprend les questions fréquentes sur
Sepi.
SourceForge.net
C'est SourceForge qui héberge actuellement le repository Subversion de Sepi. Merci à eux.
Sources de Sepi
Pour récupérer les sources de Sepi, vous devez installer un client Subversion - comme
TortoiseSVN - puis extraire une copie locale du tronc commun.
 |
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".
 |
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)
- SepiBinaries.bpl : Sepi Binaries
- DclSepiBinaries.bpl : Sepi Binaries (design)
- SepiCompiler.bpl : Sepi Compiler
- DclSepiCompiler.bpl : Sepi Compiler (design)
- SepiInterpreter.bpl : Sepi Interpreter
- DclSepiInterpreter.bpl : Sepi Interpreter (design)
- SepiEditor.bpl : Sepi Editor
- DclSepiEditor.bpl : Sepi Editor (design)
- SepiOptions.exe : Options de Sepi
- SepiEdit.exe : Éditeur Sepi
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 164 du repository SVN (24 décembre 2007).
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 164 du repository SVN (24 décembre 2007).

