Un atelier de langage est un outil ou un ensemble d'outils qui permet le développement de logiciels dans le paradigme de développement logiciel de programmation orientée langage . Un atelier de langage comprend généralement des outils pour prendre en charge la définition, la réutilisation et la composition de langages spécifiques à un domaine ainsi que leur environnement de développement intégré . Les ateliers de langage ont été introduits et popularisés par Martin Fowler en 2005.
Les ateliers de langage prennent généralement en charge :
- Spécification des concepts du langage ou métamodèle
- Spécification des environnements d'édition pour la langue spécifique au domaine
- Spécification de la sémantique d'exécution, par exemple via l'interprétation et la génération de code
Exemples
- Racket est un atelier de développement de langage multiplateforme comprenant un compilateur, un compilateur JIT, un IDE et des outils de ligne de commande conçus pour permettre la création de langages spécifiques à un domaine et de langages entièrement nouveaux avec des fonctionnalités permettant d'ajouter de nouvelles notations, de contraindre des constructions et de créer des outils IDE.
- JetBrains MPS est un outil de conception de langages spécifiques à un domaine. Il utilise l'édition projectionnelle qui permet de dépasser les limites des analyseurs de langage et de créer des éditeurs DSL, tels que ceux avec des tableaux et des diagrammes. Il implémente la programmation orientée langage. MPS combine un environnement pour la définition du langage, un atelier de langage et un environnement de développement intégré (IDE) pour ces langages.
- Kermeta est un atelier de langage académique open source. L'atelier Kermeta utilise trois méta-langages différents : un méta-langage pour la syntaxe abstraite (aligné sur Emof ) ; un pour la sémantique statique (aligné sur OCL ) et un pour la sémantique comportementale (appelé le langage Kermeta lui-même).
- Melange est un atelier de langage qui fournit une approche modulaire pour personnaliser, assembler et intégrer plusieurs spécifications et implémentations de langage spécifique à un domaine (DSL).
- Spoofax. est un atelier de langage open source pour générer des analyseurs, des vérificateurs de types, des compilateurs, des interprètes, ainsi que des plugins IDE pour Eclipse et IntelliJ . Il utilise SDF et un analyseur GLR sans scanner pour la syntaxe, et des formalismes dérivés de Stratego/XT pour la sémantique.
- Xtext est un framework logiciel open source pour le développement de langages de programmation et de langages spécifiques à un domaine (DSL). Contrairement aux générateurs d'analyseurs standard, Xtext génère non seulement un analyseur, mais également un modèle de classe pour l'arbre syntaxique abstrait. De plus, il fournit un IDE basé sur Eclipse entièrement fonctionnel et personnalisable.
- Meeduse est un framework basé sur EMF qui permet de construire, prouver et animer des langages exécutables spécifiques à un domaine (xDSL) en utilisant la méthode B. L'outil intègre ProB, un animateur et un vérificateur de modèles de la méthode B.