2016-08-26 3 views
4

Nous avons des modèles de domaine décrits dans certains formats xml. Étant donné les modèles de domaine que je veux générer des outils qui aident les testeurs/experts de domaine à exprimer des données dans le texte (et un cadre de test spécifique à un domaine plus tard). Le support IDE est obligatoire (IDEA ou eclipse).syntaxe textuelle pour les modèles de domaine

dire, j'ai ce modèle pseudo

User 
fn string 120 chars mandatory 
ln string 120 chars mandatory 
address not-mandatory 

Address 
street mandatory 
city mandatory 

Un scénario typique d'utilisation:

user opens the IDE 
creates a new file 
when content assist invoked, should give options 'user', 'address' etc 

If I choose user, furthur ctrl-space should give 'fn', 'ln', 'address' as options. 

Je sais que cela peut être fait par XText ou JetBrains mps etc. Mais, je veux comprendre ce qui la technologie prête pour les exigences suivantes.

  1. les modèles sont fournis au système lors de l'exécution (nouveaux, mises à jour, suppressions, etc.). donc, je ne peux pas avoir un ensemble statique de grammaires. Comment puis-je le structurer pour que l'aide modèle/propriété soit résolue au moment de l'exécution ou au moins la grammaire est générée (peut en faire partie)
  2. lorsque je travaille avec un ensemble de «grammaires», si je pointe mon serveur cible à une version différente (qui peut avoir différents ensembles de modèles), je veux que l'éditeur valide mes fichiers existants et signale les erreurs. Je reçois les fichiers de données en XML, texte ou via des recherches de serveur.
  3. Il est très important pour moi de transformer les modèles dans un autre format ou de les interpréter dans java/groovy.

Ex, je peut avoir le fichier de données suivantes

user { 
fn : Tom 
ln : Jill 
hobby : movies 
} 

mais, quand je valide ce fichier sur un serveur qui ne connaît pas la propriété « passe-temps », je veux l'éditeur pour marquer l'erreur sur cette propriété.

J'ai prévu d'ajouter beaucoup plus de fonctionnalités à ce dsl/toolkit. Est-ce que la technologie est plus appropriée?

grâce

+0

Votre question a besoin d'une réponse très importante. Cependant, vous pouvez suivre ce lien et voir s'il y a des mises à jour. https://mps-support.jetbrains.com/hc/en-us/community/posts/206609185-textual-representation-of-the-module –

Répondre

0

Je sais que cela peut être fait par xtext ou JetBrains mps etc. Mais, je veux comprendre que la technologie prête pour les exigences suivantes.

Je pense que Xtext est bon pour vos besoins à la condition que vous ayez (ou pouvez créer) un schéma XML pour vos modèles de domaine XML.

  1. les modèles sont introduits dans le système au moment de l'exécution (nouveau, mises à jour, suppressions, etc.). donc, je ne peux pas avoir un ensemble statique de grammaires. Comment puis-je structurer de telle sorte que le modèle/propriété d'assistance est résolu à l'exécution ou au moins la grammaire est générée (peut être une partie de celui-ci)

Si je vous comprends bien, vous n'avez pas vraiment besoin de règles de grammaire spécifiques pour chaque modèle de données XML, mais seulement des références croisées au modèle de données.EMF prend en charge la génération de classes Java EMF à partir de fichiers XSD et Xtext peut référencer des fichiers XML conformes au schéma XSD si vous les ajoutez à l'index Xtext à l'aide de votre indexeur personnalisé (interface Xtext IDefaultResourceDescriptionStrategy). Vous pouvez donc créer un projet Xtext normal avec grammaire, etc. pour votre DSL et utiliser des références croisées qui se réfèrent à votre modèle de domaine XML.

  1. quand je travaille avec un ensemble de « grammaires », si je pointe mon serveur cible à une autre version (qui peut avoir un ensemble différent de modèles), je veux que le éditeur valide mes fichiers existants et signale les erreurs. Je reçois les fichiers de données en XML, texte ou via des recherches de serveur.

FEM utilise URIs pour identifier les ressources, donc si vous générez un modèle Ecore comme je l'ai décrit, il devrait être possible d'importer les modèles de domaine XML utilisant http: // ou file: // (ou autre chose, il est extensible) URI, ou quelque chose que vous résolvez en interne pour les URI.

  1. Il est très important pour moi de transformer les modèles en un autre format ou les interpréter en java/groovy.

Ici, vous avez le choix entre faire un interprète, un inferrer Xbase ou un générateur (dont chacun peut être mis en œuvre en utilisant bien Xtend), en fonction de vos besoins.

(Disclaimer: Je suis un employé à itemis, qui est l'un des principaux contributeurs à Xtext)