Définir une grammaire DSL avec xtext - Sofiane-13/tutorialXtextSirius GitHub Wiki

Définir une grammaire DSL avec xtext (pas à pas)

Pourquoi un DSL ?

Un DSL (Domain Specific Language) est un langage dédié à une problématique métier spécifique. C’est une notion qui s’oppose aux langages de programmation dits généralistes, de type Java ou C, ou bien aux langages de modélisation généralistes de type UML. L’avantage des DSLs réside dans leur puissance d’expression, puisque conçus pour une problématique précise, et dans leur facilité de traitement lorsqu’il s’agit d’effectuer de la validation ou de la transformation (génération de code par exemple). En contrepartie, un DSL nécessite de définir un méta-modèle et une notation, ce qui représente un temps de développement et d’apprentissage du langage supplémentaire.

DSL textuel ou graphique ?

Il y a plusieurs manières de concevoir un DSL. Tout d’abord, la définition du DSL peut être envisagée de différentes manières.

octocat

De même, la notation du DSL peut être graphique ou textuelle sous Xtext.

![octocat](https://raw.githubusercontent.com/wiki/Sofiane-13/tutorialXtextSirius https://github.com/Sofiane-13/tutorialXtextSirius/blob/master/image/image1.png) ![octocat](https://raw.githubusercontent.com/wiki/Sofiane-13/tutorialXtextSirius https://github.com/Sofiane-13/tutorialXtextSirius/blob/master/image/image2.png)

Les notations graphiques sont bien sûr plus visuelles et efficaces pour représenter des relations entre éléments. Par contre, dès qu’il s’agit de décrire et d’éditer des détails, la notation textuelle est souvent plus simple à utiliser. D’autre part, elle permet de mettre en œuvre plus simplement des mécanismes de diff et merge. Il est également possible de mixer les deux notations. Exemple : Grammaire textual avec Xtext Tout d’abord et avant de commencer , il faut préparer l'environnement de travail . Donc il faut : Télécharger eclipse modeling sur votre ordinateur, rendez vous sur le site officiel: http://www.eclipse.org/downloads/eclipse-packages/ Ajouter le plugin Xtext à votre bibliothèque eclipse comme suit : dans eclipse : help -> Install New software et terminer le processus d'intégration . Les étapes

Etape 1: Créer un nouveau projet Xtext

Pour commencer, nous devons d'abord créer des projets Eclipse. Utilisez l'assistant Eclipse pour le faire: File → New → Project… → Xtext → Xtext project Choisissez un nom de projet significatif, un nom de langue et une extension de fichier, par exemple :

ProjectName : org.example.applicationPfe

Language name: org.example.applicationPfe.ApplicationPfe

Language extensions: pfe

Cliquez sur Terminer pour créer les projets.

octocat

Après avoir terminé l'assistant, vous trouverez quatre nouveaux projets dans votre espace de travail.

org.xtext.example.applicationPfe : La définition de grammaire et tous les composants spécifiques au langage (analyseur, lexer, linker, validation, etc.) org.xtext.example.applicationPfe.sdk : Fonctionnalité IDE indépendante de la plate-forme. //à revoir org.xtext.example.applicationPfe.tests : Tests unitaires pour la langage. org.xtext.example.applicationPfe.ui : L'éditeur Eclipse et d'autres fonctions connexes

Etape 2: Ecriture de la grammaire

Le fichier applicationPfe.pfe s'ouvrira automatiquement, dans lequel vous allez écrire votre grammaire DSL. Comme vous pouvez le voir, il contient déjà une simple grammaire de Hello World:

octocat

Maintenant vous pouvez modifier ce fichier avec votre propre grammaire :

![octocat](https://raw.githubusercontent.com/wiki/Sofiane-13/tutorialXtextSirius https://github.com/Sofiane-13/tutorialXtextSirius/blob/master/image/image5.png)

Examinons plus en détail ce que signifient les différentes règles de grammaire, nous les regroupons dans la figure suivante: https://eclipse.org/Xtext/documentation/102_domainmodelwalkthrough.html

octocat