Académique Documents
Professionnel Documents
Culture Documents
2|Page
DSL qui reconnait un programme écrit en langage C
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’où les DSIs. 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 reconnaissance d’un programme écrit en langage C. 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.
3|Page
DSL qui reconnait un programme écrit en langage C
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,
4|Page
DSL qui reconnait un programme écrit en langage C
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.
Une fois téléchargé, ouvrez le setup, scrollez et sélectionnez «Eclipse IDE for Java and
DSL Developers»
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
5|Page
DSL qui reconnait un programme écrit en langage C
3. Implémentation de la grammaire de notre DSL
Le projet consiste à concevoir un langage spécifique (DSL) utilisant Xtext, un outil de
développement de langages intégré à Eclipse, pour la reconnaissance et l'analyse de programmes écrits en
langage C. L'objectif est de créer un outil qui permettra aux développeurs de travailler avec des
programmes C de manière plus efficace et avec une syntaxe spécifique au domaine.
❖ Présentation du projet :
Le projet vise à développer un DSL capable de reconnaître et d'analyser des programmes C à l'aide de
Xtext. L'outil permettra de créer des fichiers source C valides, de les éditer et de générer des informations
utiles à partir du code. Il offrira également des fonctionnalités d'analyse statique pour détecter les erreurs
potentielles, les incohérences et les problèmes de qualité du code.
En utilisant Xtext, nous pourrons définir une grammaire spécifique au langage C qui permettra de
décrire la syntaxe valide et les règles de structure du code C. Nous créerons également des règles
sémantiques pour vérifier la cohérence du code et identifier les erreurs courantes.
❖ Ensemble des règles recensées :
6|Page
DSL qui reconnait un programme écrit en langage C
Figure 2 Règles de notre DSL1/4
7|Page
DSL qui reconnait un programme écrit en langage C
Figure 4 Regles de notre DSL3/4
❖ Notre démarche :
8|Page
DSL qui reconnait un programme écrit en langage C
• Définir une grammaire pour la syntaxe du langage C en utilisant Xtext.
• Définir les règles lexicales pour les jetons du langage C (mots-clés, identificateurs, opérateurs,
etc.).
• Définir les règles syntaxiques pour les différentes constructions du langage C (déclarations,
fonctions, structures de contrôle.
9|Page
DSL qui reconnait un programme écrit en langage C
Conclusion
Dans le cadre de cet exposé, nous avons exploré le thème de la conception d'un langage
spécifique (DSL) capable de reconnaître et d'analyser des programmes écrits en langage C. À l'aide
de l'outil Xtext, nous avons pu définir une grammaire spécifique au langage C, des règles lexicales
et syntaxiques, ainsi que des règles sémantiques pour garantir la validité et la cohérence du code.
La création d'un DSL pour le langage C présente de nombreux avantages. Tout d'abord,
cela permet aux développeurs de travailler avec une syntaxe spécifique au domaine, simplifiant
ainsi la compréhension et la rédaction du code. De plus, un DSL peut offrir des fonctionnalités
d'analyse statique avancées, permettant de détecter les erreurs potentielles, d'améliorer la qualité
du code et de faciliter la maintenance.
L'utilisation de Xtext s'est révélée être une approche efficace pour le développement de
notre DSL. Xtext fournit une infrastructure solide pour la création de langages spécifiques en
offrant des fonctionnalités telles que la validation syntaxique, l'édition assistée par l'IDE et la
génération de code. Grâce à ces fonctionnalités, nous avons pu concevoir un DSL pour le langage
C qui offre une expérience de développement améliorée.
En conclusion, la conception d'un DSL pour la reconnaissance de programmes écrits en
langage C avec Xtext présente un potentiel significatif pour les développeurs. Cela leur permet de
bénéficier d'un langage spécifique au domaine, de fonctionnalités d'analyse avancées et d'une
expérience de développement plus efficace. Le DSL offre ainsi une approche innovante pour
améliorer la productivité, la qualité et la maintenabilité des projets logiciels basés sur le langage
C.
10 | P a g e
DSL qui reconnait un programme écrit en langage C