I. Rappel sur le développement du DSL « Madsl »

Dans l'article « Introduction à Xtext : créer son propre DSLcomment créer un DSL avec Xtext », nous avons présenté la procédure nécessaire pour mettre en place un DSL. Nous avons pris pour exemple d'application, le développement d'un DSL nommé « Madsl » qui est un langage permettant la saisie d'un code spécifique pour la réalisation d'opérations statistiques telles : le calcul de la moyenne, de la variance, écart type... d'une série statistique. Pour développer ce nouveau langage, nous avons utilisé le framework Xtext développé par le groupe itemis qui l'a intégré à eclipse. Ce nouveau eclipse est donc celui que nous appelons eclipse-Xtext (téléchargeable sur le site web d'itemis). Lors du développement du nouveau DSL, nous avons créé un projet Xtext. Cette création génère trois plugins projects : org.xtext.maDsl, org.xtext.maDsl.generator et org.xtext.maDsl.ui. Les deux plus importants des trois sont : org.xtext.maDsl et org.xtext.maDsl.ui. Le premier permet de développer la grammaire du langage et le deuxième permet d'enrichir l'IDE eclipse-Xtext de nouvelles vues, commandes, menus... spécifiques au nouveau langage. Pour l'instant, nous ne nous occupons pas de cet enrichissement de l'IDE, mais de l'intégration du nouveau langage à eclipse-Xtext.

les plugins projects créer lors du développement du DSL

II. Un feature project pour le rassemblement des plugins projects de « Madsl »

Pour étendre eclipse-Xtexttélécharger eclipse-Xtext lui permettant de prendre en compte de nouveaux nouvelles choses, nous devons lui ajouter de nouveaux les plugins. Notamment dans les répertoires features et plugins de son dossier d'installation situé sur le disque dur.

Notre objectif dans cette section est de pouvoir créer et rassembler les plugins dédiés à notre DSL Madsl. Ensuite, ces plugins seront ajoutés dans le dossier plugins d'eclipse-Xtext. Le processus consiste alors à créer un feature project pour rassembler les plugins qui correspondent aux différents sous-projets (org.xtext.maDsl, org.xtext.maDsl.generator et org.xtext.maDsl.ui) du projet Madsl. Ce feature project générera également une archive jar devant être ajouté au répertoire features d'eclipse-Xtext.

Nous donnons ci-dessous, les étapes à suivre :

1. Création du feature project :

File --> New --> Project --> Plug-in Developement --> Feature Project.

créer un feature project

2. Cliquer Next et saisir le nom du feature project. Dans notre cas, feature.madsl.

donner un nom au feature project

Puis cliquer sur Next.

3. Choisir les plugins qui doivent être rassemblés (groupés) par ce feature project : nous devons choisir les trois plugins générés par le projet Xtext de création du langage.

choisir les plugins que feature project doit rassembler

Cliquer sur Finish.

4. Le feature project est créé.

vue du feature project crée

Nous pouvons remarquer les trois plugins projects du langage Madsl dans l'onglet Plug-ins du fichier feature.xml. Il ne nous reste plus qu'à exporter le projet feature.madsl pour l'intégrer à eclipse-Xtext.

III. Exportation des plugins du feature project et extension d'eclipse-Xtext

III-A. Exportation des plugins du feature project

Pour exporter un feature project :

1.
File --> Export --> Plug-in Developement --> Deployable features

deployable feature

Cliquer sur Next

2. Choisir le feature à déployer ainsi que le répertoire où il sera déployé. Dans notre cas, nous déployons feature.madsl dans le répertoire « dossier features » du disque D.

exportation du feature

3. Cliquer sur Finish et attendre que la fenêtre montrant l'évolution du déploiement ait terminé.

suivi du deploiement

III-B. Extension d'eclipse-Xtext pour la prise en compte du nouveau langage

Lorsque nous avons fini de déployer le feature project rassemblant les plugins du nouveau langage (Madsl), nous devons les récupérer dans le répertoire indiqué et les ajouter dans les répertoires correspondants où est installé eclipse-Xtext. Nous montrons ci-dessous la procédure à suivre.

1. Ouvrir le dossier dans lequel le feature project a été déployé.

dossier feature

2. Ouvrir le dossier plugins et copier les archives jar qui s'y trouvent. Dans notre cas, trois archives jar. Ouvrir le répertoire où eclipse-Xtext a été installé et naviguer jusqu'à son dossier plugins. À l'intérieur de ce dossier plugins, coller les archives jar précédentes.

les trois plugins du projet Madsl

répertoire plugins d'eclipse

3. Retourner dans le répertoire où a été déployé le feature project, ouvrir le dossier feature. À l'intérieur, se trouve un fichier jar, dézipper ce fichier. Copier les deux éléments et les coller dans le dossier features du répertoire où est installé eclipse-Xtext

l'archive jar feature de Madsl

répertoire features d'eclipse

L'extension d'eclipse pour la prise en compte du nouveau langage est ainsi terminée. Nous devons démarrer eclipse-Xtext s'il ne l'était pas encore ou le redémarrer au cas contraire.

N.B. : nous insistons sur le fait que la version d'eclipse qu'il faut utiliser pour réaliser toutes les opérations précédentes, est celle téléchargée sur le site d'itemis. Car cette version d'eclipse (que nous appelons eclipse-Xtext) a déjà préalablement été étendue pour prendre en compte plusieurs aspects spécifiques au framework Xtext nécessaires pour une intégration rapide d'un nouveau langage. Dans le cas d'un non choix d'une version d'eclipse d'itemis, le développeur devra commencer par intégrer tous les plugins liés à Xtext, puis, ceux de son propre langage.

IV. Création d'un projet Madsl sur eclipse-Xtext

Pour créer un nouveau projet permettant de saisir des programmes Madsl, nous allons, après le redémarrage précédent d'eclipse-Xtext, essayer de voir si le nouveau langage est pris en compte par ce dernier. Pour cela : Help --> About Eclipse SDK --> Installation Details --> Installed Software :

le langage Madsl est installé sur eclipse

Nous remarquons que Madsl est bien installé sur eclipse tout comme Swing, SWT et autres.

Pour créer un projet Madsl :
File --> New --> Project --> General --> Project :

general project

Puis, cliquer sur Next. Dans la nouvelle fenêtre, entrer un nom quelconque du projet Madsl (dans notre cas, test.projet.madsl). Le nouveau projet est créé dans la vue Package Explorer d'eclipse-Xtext.

un projet Madsl sur eclipse

Pour saisir un programme Madsl, appartenant au projet test.projet.madsl : Clic droit sur le projet test.projet.madsl, puis choisir New, puis File. Une fenêtre apparaît, nous demandant de donner le nom du fichier programme. Dans notre cas, nous lui donnons le nom de calculMoyenne.madsl. L'extension donnée à ce nom de fichier est obligatoire, car c'est via cette extension qu'eclipse détermine qu'il s'agit d'un programme du langage Madsl. Cette extension, pour rappel, est définie depuis la création du langage, lors du développement de sa grammaire.

un fichier programme Madsl

Cliquer sur Finish. Une petite fenêtre apparaît demandant s'il faudrait ajouter une « Xtext nature » au projet test.projet.madsl. Le choix du oui ou du non apparemment n'est d'aucune influence sur le reste. Le fichier calculMoyenne.madsl du projet test.projet.madsl, s'ouvre en édition. Nous pouvons ainsi saisir du code Madsl et le sauvegarder. Nous donnons ci-dessous deux programmes saisis dans cet éditeur. L'un correct et l'autre incorrect, tous marqués par des colorations syntaxiques de mots clés et des colorations signalant des erreurs dans le code.

programme Madsl correct

programme Madsl incorrect

Si nous pointons la curseur sur le mot souligné ou sur la croix rouge signalant l'erreur commise dans le programme, eclipse nous signale le message suivant «mismatched input 'begi' expecting 'begin'». Cela voudrait dire que c'est le mot « begin » qui est attendu à ce niveau du code plutôt que « begi ». Cela signale une erreur syntaxique dans le programme due peut être à une faute de saisie. Notons que hormis l'exemple pris sur le signalement d'une erreur syntaxique dans le programme Madsl, le langage bénéficie généralement dans l'éditeur eclipse des aspects tels que la complétion de code et autres.

V. Conclusion et perspectives

Au terme de cet article, nous avons montré comment intégrer à eclipse un nouveau langage que nous avons développé. Nous pouvons ainsi ouvrir eclipse, créer librement un projet de type "notre nouveau langage" et saisir du code dans des fichiers de ce projet. Cette leçon nous a permis d'aborder des notions, telles les notions de plugins, de features (développement de features et d'exportation de features) et les notions d'extension d'eclipse pour la prise en compte de nouveaux aspects.

Comme première perspective à ce travail, nous pouvons remarquer que, dans la fenêtre «New Project» (de création d'un projet sur eclipse), nous créons un projet de notre nouveau langage dans le nœud General puis, Project. Ce qui reste très générique. Un travail à faire serait de compléter celui-ci de sorte que l'on puisse particulariser cela en ayant dans la fenêtre « New Project », un nœud Madsl Project (comme le nœud Java Project) permettant de créer un nouveau projet Madsl.
Une deuxième perspective (que nous proposons de faire dans l'article qui suivra celui-ci) est de retoucher le plugin project org.xtext.madsl.ui afin de lui ajouter des menus, des handlers, des commandes et peut être des vues. Ceci dans le but de permettre à l'éditeur eclipse-Xtext, intégrant notre nouveau langage, de présenter des éléments (boutons, menus, vues...) pouvant permettre de manipuler particulièrement le nouveau langage.

VI. Remerciements

Je termine cet article en remerciant monsieur Mickael BARON (responsable de la rubrique eclipse sur Developpez.com) qui m'a aiguillé sur les pistes me permettant d'arriver à mon objectif qui était celui présenté à l'introduction de cet article. Un merci également à Jean-Philippe ANDRÉ (jpcheck) et à jacques_jean pour leurs relectures orthographiques de cet article.