J'ai un cours dans lequel le proffesor nous a demandé de créer une DSL pour notre projet final. Il nous a présenté dans les premiers cours xText avec Eclipse. Ceci étant un nouveau cours, je suis encore un peu flou sur la signification des langages spécifiques au domaine.
Voici ma compréhension actuelle: un langage spécifique à un domaine est un langage créé pour des problèmes spécifiques de développement logiciel. Des exemples de DSL sont PHP, SQL, JavaScript et au contraire des langages comme Java, C #, C ++, Ruby etc.
N'hésitez pas à me corriger si je me trompe.
Ce que je voudrais savoir: existe-t-il un outil pour .NET / Visual Studio similaire à Xtext, qui me permette de définir une grammaire et d'être autorisé à générer un langage de programmation basé sur cela avec un diagramme d'activité?
Réponses:
La meilleure façon de procéder est une interface fluide . Cela ne nécessite aucun outil et vous offre une excellente prise en charge IntelliSense, mais vous devez toujours écrire des choses à la manière d'un .NET, telles que
Alternativement, vous pouvez écrire de belles DSL dans Boo . Il y a un livre entier sur ce sujet.
la source
Vous pouvez essayer ANTLR (ou ANother Tool for Language Recognition) un générateur d'analyseur qui est entre autres disponible pour dotnet. Dans la communauté, vous pouvez trouver des définitions pour sql, c # et de nombreuses autres langues.
Selon Google, il existe également un support IDE:
la source
Votre première question - qu'est-ce qu'une langue spécifique au domaine ... car elle est trop grande pour tenir dans un commentaire.
Une langue spécifique à un domaine est une langue conçue pour fonctionner dans un domaine à problème particulier. Par exemple, dans le moteur Unreal (utilisé pour les tireurs à la première personne), il existe un langage spécifique au domaine appelé UnrealScript qui permet de modifier le comportement du moteur Unreal. Ce langage est conçu pour résoudre des problèmes généraux mais est plutôt limité à son domaine spécifique. Redcode (pour corewars) serait une autre langue spécifique au domaine. Le langage de Context Free Art est spécifique à son domaine.
L'idée est qu'avec un langage spécifique au domaine, on pourrait créer un DSL qui cartographie de près le problème en question. À ce stade, il est plus facile de programmer dans le DLS que de programmer dans un langage général, même avec les bibliothèques ajoutées pour gérer le domaine problématique.
Quant à votre deuxième question - les outils en C # ... Je ne connais pas C # et donc je ne connais pas bien les outils. Cela dit, à l'époque où je suivais un cours de compilation à l'université, deux des outils qui étaient utilisés (et que j'ai utilisés depuis) sont lex et yacc. Over at Stack Overflow ... Lex / Yacc pour C #?
la source
Il existe un SDK de visualisation et de modélisation pour Visual Studio qui prend en charge les modèles de texte (modèles T4) et les langages spécifiques au domaine.
http://msdn.microsoft.com/en-us/library/dd820703.aspx
la source
Ce site peut vous intéresser: http://nemerle.org . C'est un langage pour la plate-forme .net avec de riches fonctionnalités de métaprogrammation. Plus récemment, le projet est sous l'aile des JetBrains: http://blogs.jetbrains.com/dotnet/2012/06/jetbrains-and-nemerle/ .
la source