Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Creation D'Un DSL Pour Confectionner Des Cartes de Voeux: Inf: Compilation

Télécharger au format docx, pdf ou txt
Télécharger au format docx, pdf ou txt
Vous êtes sur la page 1sur 13

REPUBLIQUE DU CAMEROUN REPUBLIC OF CAMEROON

PAIX-TRAVAIL-PATRIE PEACE-WORK-FATHERLAND
********** **********
MINISTERE DE MINISTRY OF HIGHER EDUCATION
L’ENSEIGNEMENT SUPERIEUR ********
******** UNIVERSITY OF DSCHANG
UNIVERSITE DE DSCHANG ********
******** FACULTY OF SCIENCES
FACULTE DES SCIENCES *******
******* DEPARTMENT OF MATHEMATICS
DEPARTEMENT DE AND
MATHEMATIQUES- COMPUTER SCIENCES
INFORMATIQUE

INF : COMPILATION

CREATION D’UN DSL POUR CONFECTIONNER DES


CARTES DE VOEUX

Noms et Prénoms Matricules Options

TSOWEMOO MENTSEYE VALENTIN LECLERC CM-UDS-16SCI0909 IA

FOGOUANG NANGNA LOIQUE CM-UDS-18SCI2658 IA

GUETCHUENG SIMO MARIE LOUISE CM-UDS-18SCI0507 IA

NGUETOUM LIKEUFACK ANDERSON CM-UDS-18SCI0680 IA

Superviseur : Pr. TCHOUPE MAURICE

Année Académique

2021-2022
TABLE DES MATIERES
Introduction.................................................................................................................................3

I. PRESENTATION DES OUTILS............................................................................................4

XTEXT................................................................................................................................4

GEMOC..............................................................................................................................4

II. INSTALLATION DES OUTILS...........................................................................................5

Installation et démarrage de XTEXT..................................................................................5

III. IMPLEMENTATION DE LA GRAMMAIRE DE NOTRE DSL.......................................6

Création du projet du DSL..................................................................................................7

Code de notre DSL..............................................................................................................8

La validation de notre DSL...............................................................................................10

Évaluation (test) du DSL...................................................................................................10


Introduction

La programmation est une tache assez difficile. Le programmeur doit


constamment jongler avec des concepts abstraits, des règles d'affaires et des
considérations multiples. Là ne se trouve pas le seul problème, le fait est qu’il semble
tout d'abord illusoire de penser pouvoir rassembler les « dix commandements» du
développement de logiciels i.e. un ensemble fini de lois et de dictas incarnant la vérité
absolue en matière de programmation dont le respect assurerait la place de notre
programme au paradis des logiciels. Les connaissances sont plutôt accumulées et
documentées sous la forme de patrons et de « bonnes pratiques ». Un seul langage de
programmation n’est pas suffisant pour exprimer tout ce qui est possible et nécessaire
à la réalisation d'un programme .Par exemple dans une application web de petite
envergure, on dénombre déjà plusieurs langages(HTML,CSS,JavaScript,PHP,etc.)qui
coexistent et remplissent différents rôles. S'ils possèdent tous la même syntaxe, ils
sont définis à l'aide de grammaires différentes et donc, sont écrits en langages
différents. Il existe des GPL (General Purpose Language) tels que Java, C, C++…
dont le but est de proposer des solutions à tout type de problème solvable par
ordinateur. Ce qui peut ne pas être la manière la plus Optimale, d’ou les DSLs. Un
DSL est un langage miniature conçu afin d'accomplir une tâche très précise. Un DSL
s'oppose à un langage généraliste comme Java. Les concepts et les notations d'un DSL
doivent alors être choisis pour être suffisamment proches des objets manipulés dans le
domaine traité. Notons que les problèmes du domaine traité sont naturellement ceux
pouvant être résolus par ordinateur. Dans notre cas le problème est celui de la
confection des cartes de vœux. Pour créer un DSL qui résoudra ce problème, nous
organisons notre travail comme suit on présentera de façon générale les outils utilisés,
ensuite de L’installation des outils et enfin de l’implémentation de la grammaire de
notre DSL.
I. PRESENTATION DES OUTILS

Pour la mise sur pied de notre DSL nous utiliserons plusieurs outils mais
l’outil par excellence sera XTEXT.

XTEXT

Xtext est un framework développé sur Eclipse et permettant d'implémenter


votre propre DSL textuel ou même de mettre sur pied un langage de programmation
générique (un GPL). Il fonctionne sur une JVM (Machine Virtuelle Java) et est
constitué de plusieurs API qui vous permettent de décrire les différents aspects du
langage que vous voulez créer et propose une implémentation complète de ce langage.
Notons que le langage développé sera alors un langage qui s'appuie et qui surcouche
le langage Java. C'est-à-dire que les objets offerts par ce framework sont
complètement des objets Java et le développement du compilateur de votre langage
sera alors écrit en Java.

Notons aussi que les langages développés via Xtext peuvent selon son tutoriel
être définis non seulement avec le langage Java, mais aussi d'autres langages tels que
C, C++, C# objective C, Python et Ruby. De plus, une fois que le DSL est mis en
œuvre, son utilisation devient indépendante de la JVM.

GEMOC

Le studio Eclipse GEMOC offre un cadre pour la conception et l'intégration


des langages de modélisation EMF. Le cadre fournit une interface générique pour
brancher différents moteurs d'exécution associés à leurs métalangages spécifiques
utilisés pour définir la sémantique opérationnelle des événements discrets et la
coordination comportementale des DSL. Il intègre également des services d'exécution
génériques qui sont partagés entre les approches utilisées pour implémenter la
sémantique d'exécution, telles que l'animation graphique ou le débogage omniscient.
Basé sur une API commune, GEMOC propose un framework pour intégrer tout type
d'approche de métaprogrammation utilisée pour définir la sémantique opérationnelle
des événements discrets dans un moteur d'exécution . Un moteur est développé en
utilisant le framework d'exécution et est spécifique à une approche de
métaprogrammation. Le projet propose différentes implémentations de moteurs.
Puisqu'une partie importante de la logique est commune à tous les moteurs
d'exécution, le framework fournit un moteur d'exécution abstrait de base qui peut être
étendu en un moteur concret pour toute nouvelle approche de métaprogrammation.

II. INSTALLATION DES OUTILS

Installation et démarrage de XTEXT

Le plus simple pour commencer à utiliser Xtext est de télécharger la


distribution d'Eclipse correspondante sur le site officiel. Cette distribution contient
déjà tous les plugins nécessaires au bon fonctionnement d'Xtext (EMF notamment).
Néanmoins, il est possible de l’obtenir en téléchargeant Eclipse Xtext téléchargeable à
l’adresse : https://www.eclipse.org/Xtext/download.html

Une fois téléchargé, ouvrez le setup, scrollez et selectionnez «Eclipse IDE for
Java and DSL Developers»
Figure 1: Installation de Xtext

Poursuivez juste l’installation, c’est prêt! Eclipse Xtext est installé! Il est nécessaire
de téléchargez ANTLR generator téléchargeable à l’adresse :

http://www.java2s.com/Code/Jar/a/Downloadantlrgenerator320jar.htm

III. IMPLEMENTATION DE LA GRAMMAIRE


DE NOTRE DSL
Notre carte de vœux aura la structure suivante :

Figure 2 : Structure d’une carte de vœux


 Entête : contiendra les informations sur le vœux à souhaiter au correspondant;

 Contenu : Il contiendra le texte portant le vœux à souhaiter;

 Salutation : il s’agit de la salutation finale.

Création du projet du DSL

Nous donnerons l’extension .carteVoeux à notre DSL

Code de notre DSL

Après codage de cette grammaire dans Eclipse, nous avons le code suivant, qui est en
fait notre DSL :
Quelques explications du DSL

Une carte de vœux est constituée d’une entête, d’un contenu (situé entre des
accolade) et d’une salutation.
Une entête contient une formule de politesse (non terminal Formule), un vœux à
souhaiter et éventuellement le nom d’une personne, qui est en fait la personne à qui
est destinée la carte.

Les formules de politesses (initiales et finales) et les vœux possibles.

NB: La liste des formules et vœux que nous avons utilisés n’est pas exhaustive. Nous
nous sommes restreints à quelques termes.

Un contenu est un ensemble de paragraphes. Un paragraphe quant à lui est un


ensemble de phrase. Une phrase contient un ensemble de STRING ou alors un voeux.

Une salutation contient une formule finale et le nom de la personne qui envoie la
carte, en guise de signature.

Un nom est constitué du nom et éventuellement d’un prénom.


La validation de notre DSL

Cette validation consistera à vérifier que dans la première phrase du premier


paragraphe de la carte de vœux, l’on doit avoir le vœux qui est souhaité qu
correspondant.

Évaluation (test) du DSL

Afin d’évaluer notre DSL, nous créons un projet de test dans eclipse après avoir
généré les artefacts du projet. Dans ce projet, nous créons un fichier avec l’extension de notre
DSL qui est .carteVoeux.
Après validation de cette opération de création du fichier .carteVoeux, éclipse nous
demande de convertir le projet contenant le fichier nouvellement créé en un projet xtext.

Ci-dessous un test que nous effectuons avec le DSL conçu:

Le DSL reconnaîtra toutes les cartes de vœux qui ont le formalisme que nous
avons décrit et affichera des erreurs pour celle qui ne e respectent pas.

Vous aimerez peut-être aussi