IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sepi Discussion :

Sepi, moteur de script orienté objet pour les applications Delphi


Sujet :

Sepi

  1. #1
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut Sepi, moteur de script orienté objet pour les applications Delphi
    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.



    Le projet est sur le point d'être terminé pour sa première version. Il est d'ailleurs tout à fait utilisable. Il faut juste encore le stabiliser un peu.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 152
    Points
    10 152
    Par défaut Fonctionnalités supportées
    Les fonctionnalités supportées sont les suivantes :

    Fonctionnalités globales

    • Moteur de script orienté objet pour les applications Sepi.
    • Un byte-code unique avec son interpréteur.
    • Un compilateur prêt à utiliser pour le langage Delphi.
    • Des facilités considérables pour créer des compilateurs pour d'autres langages (ex. : domain-specific language), avec notamment un générateur d'analyseur syntaxique sur base de grammaire.
    • Les scripts peuvent utiliser les objets et classes (champs, méthodes et propriétés), tous les types de données, et toutes les routines de l'application Delphi native, via un programme d'import.
    • Les scripts peuvent créer de nouvelles classes, qui s'intègrent de façon transparente dans la hiérarchie des classes de l'application Delphi native.
    • Les RTTI de tous les types Sepi sont construits comme s'ils avaient été créés par le compilateur Delphi natif, ce qui permet d'utiliser les mécanismes de RTTI sur les objets de classes Sepi.
    • Interpréteur thread-safe.

    Constructions du langage supportées par le compilateur Delphi

    En fait, l'entièreté du langage Delphi (version Delphi 7) est supportée, à l'exception des points suivants :

    • Types fichiers, c-à-d Text et les file of TSomeRecord ;
    • Variables locales déclarées absolute ;
    • Directive automated ;
    • Directive implements ;
    • La directive inline est ignorée ;
    • Types dispinterface : ils sont parsés et compilés mais ne sont pas traités correctement plus loin ;
    • Appels de méthodes ou sélection de propriétés de Variant (comme les Variant implémentés avec TPublishableVariantType) ;
    • Constructions amenées avec Delphi 2005 ou supérieurs (génériques, class/record helper, etc.) - néanmoins, sont supportés les types internes, les record avancés (méthodes et propriétés), ainsi que les variables, constantes et propriétés de classe ;
    • Déclaration de routines external (dans des DLL) - il est possible d'utiliser LoadLibrary et Co. manuellement.

    Voilà, à moins que j'aie oubliée quelque chose, tout ce qui n'a pas été cité est supporté

    En particulier, les points suivants sont bel et bien supportés :

    • Routines et méthodes overload, y compris pour celles importées depuis le code natif ;
    • override dans un script de fonctions natives virtual, dynamic ou message ;
    • Support des interfaces ;
    • Paramètres tableaux ouverts et paramètres non typés ;
    • La compilation conditionnelle avec {$IFDEF}, {$IFNDEF} et même {$IF}, avec notamment les pseudo-routines Defined() et Declared() dans les {$IF} ;
    • L'inclusion de fichier avec {$INCLUDE} ou {$I} ;
    • try..except, try..finally et raise.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

Discussions similaires

  1. [POO] Problématique objet pour les "pros"
    Par robux dans le forum C++
    Réponses: 12
    Dernier message: 21/10/2008, 14h41
  2. RMI & Chat - Quel Objet pour les messages ?
    Par Mister_Kp dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 26/06/2008, 17h58
  3. [Debat] Php Orienté Objet et les bibliotheques
    Par kagura dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 21/11/2006, 17h55
  4. [debutant][JNI]Stocker des objet pour les rappeler plus tard
    Par Celenor dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 28/03/2004, 01h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo