Question

Je me fais de plus en plus taquiner dans le développement de DSL. J'en ai développé un minuscule avec F # en utilisant fslex et fsyacc mais les messages d'erreur sont inexacts (je ne trouve pas non plus le moyen d'en générer de meilleurs, il semble y avoir peu de documentation sur la façon de gérer les cas d'erreur) et le fait que ils n'analyseront pas correctement les chaînes UNICODE, ce n'est pas acceptable pour moi. En résumé, je cherche des outils qui facilitent le développement d’un DSL (les outils Visual Studio pour cela ne ressemblent en rien à ce que je recherche après) et je suis particulièrement intéressé par la partie génération / analyse syntaxique / AST. J'ai examiné ANTLR et le mélange de méta-langage de définition de code et de grammaire me semble très mauvais, aussi évitez de le mentionner, pas plus que des solutions présentant un problème similaire dans les réponses. De plus, j'ai vu qu'il y avait des choses pour une langue appelée Boo mais je ne suis pas vraiment intéressé à jouer avec une autre langue (surtout si elle a peu de support) pour le moment, donc ça ne convient pas non plus. Toute autre suggestion est appréciée, dans la mesure où elle est documentée de manière décente, fonctionne bien avec .NET et, enfin, n’implique pas l’utilisation d’un langage à typage dynamique ou l’utilisation du DLR.

Était-ce utile?

La solution

Vous souhaitez commencer à travailler avec Oslo. Il inclut les outils permettant de définir le DSL et des outils permettant de définir les grammaires sur le DSL. Les grammaires peuvent émettre un AST ou autre chose.

Un type de sortie qu'il peut générer à partir de la DSL est notamment le schéma SQL Server correspondant. Les instances de la DSL peuvent donc être stockées dans SQL Server Express (ou version ultérieure).

Oslo fait partie d’une vision plus large de Microsoft, mais vous pouvez l’ignorer et commencer à utiliser le " DSL " partie.

Je vous recommande de commencer et de faire savoir à Microsoft ce que vous aimez et ce que vous n'aimez pas. Vous avez leur attention en ce moment, que vous le sachiez ou non.

Autres conseils

Peut-être pourriez-vous essayer Oslo . Personnellement, je ne l’ai pas encore utilisé, mais les exemples me semblent assez intéressants.

  

" Oslo " consiste en:   Un outil qui aide les utilisateurs à définir et à interagir avec les modèles de manière riche et visuelle   Un langage qui aide les utilisateurs à créer et à utiliser des langages et des modèles de données spécifiques à un domaine textuel   Un référentiel relationnel qui rend les modèles disponibles pour les outils et les composants de la plate-forme

Voici une sorte d'aperçu général!

Vous pouvez toujours vouloir regarder le code source de Boo pour voir comment ils font les choses. Ils utilisent également ANTLR pour générer l’analyseur. Vous n'avez pas besoin de mélanger du code avec les grammaires ANTLR & # 8212; cela peut être utile car il est complètement descriptif, à condition que ce soit une langue LL (*).

Irony - situé à l'adresse Irony @ CodePlex pourrait être une bonne solution pour vous - vous pouvez construire votre grammaire. utiliser la fonctionnalité intégrée des langages .NET au lieu d’essayer de construire BNF fichiers de grammaire séparément.

Le moyen le plus simple de créer un ADSL dans un anglais presque clair: Créez votre propre DSL pour Java ou C # (partie 4): ajout d’une couche sémantique

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top