10
votes

Qu'est-ce que l'utilisation pratique des MPS de l'idée et Eclipse XText

Ces deux cadres traitent de méta-modèle:

  • xtext (Eclipse)
  • MPS (JetBrain)

    Avez-vous un exemple d'applications pratiques basées sur la transformation méta-modèle avec ces outils?


0 commentaires

3 Réponses :


7
votes

Ils sont différents en termes de document stocker le métamodel .

En ce qui concerne xtext , Cet article illustre une utilisation, quand il s'agit de créer vos propres langues de programmation et Langues spécifiques au domaine (DSLS).

Une fois que vous avez une langue, vous voulez le traiter et cela signifie généralement transformer votre modèle en une autre représentation.
L'installation responsable de cette transformation est appelée génératrice et consiste en un groupe de modèles de transformation (par exemple xpand ) et du code les exécutant. Sur un événement, le modèle est lu et les transformations sont appliquées pour produire du code.

Exemple d'une telle transformation de modèle :

dot3zest , qui vient avec un point à l'interpréteur de zeste (qui Utilise maintenant l'API de commutateur XText généré pour la grammaire DOT) est prise en charge des définitions de bord de points ad-hoc.

text alt

En ce qui concerne les députés, vous avez ici une série d'exemples pratiques ,
comme cette génération de code sur GPL telle que Java, C #, C ++ ou XML :

 text alt
(source: googlecode.com < / a>)


3 commentaires

Remarque: un conférence en octobre 2010 illustrera un exemple pratique avec les deux cadres. Pour les différences, voir également ici


La génération de code est-elle le but ultime ou je ne le vois pas assez loin?


@ S.R: Aucun objectif ultime reste la transformation du modèle. Vous transformez un AST (arbre syntaxot abstrait) en un autre, et cela vous donnera: Code (génération de code) ou nœuds (le graphique de noeud dans les premiers exemples), ou tout autre AST qui représentera tout ce que le modèle de destination est censé .



11
votes

Nous avons créé tout Tracker de bogues en utilisant des députés. La génération de code n'est pas l'objectif mais signifie obtenir du code exécutable. L'objectif est de donner un outil au développeur qui permet de créer des DSL avec un effort minimum.

Une chose cool à propos des députés est que cela vous fournit également une IDE pour votre langue. Et différents dsls que vous créez sont compatibles, c'est-à-dire que vous pouvez créer DSL qui étend Java avec des fermetures et une autre DSL qui permet des méthodes externes et ces extensions fonctionneront ensemble.


2 commentaires

Pourriez-vous s'il vous plaît aidez-moi à trouver une extension de fermeture pour Java? Je ne trouve pas d'exemples comment prolonger la syntaxe Java.


Pour utiliser des fermetures pour Java dans les députés, vous devez simplement importer des langues jetbrains.mps.baselanguage.clusures



2
votes

Je pense que l'utilisation principale du xtext est d'abord pour créer une DSL à partir du grénage que vous avez défini et un workbench Eclipse généré automatiquement pour vous. Deuxièmement, il peut transformer le SCRPIT écrit dans votre DSL en Java. Les expressions intégrées de XText2 sont un avantage. Le framework vous donne une IDE gratuite pour appuyer votre DSL d'écriture que vous avez créée. Et le DSL est le produit ultime à fournir. Il peut être utilisé pour résumer les règles et la logique du monde réel. Par exemple, dans notre projet, la règle de configuration du produit. Seul Spécialiste les connaît, alors ils écrivent certains dans la DSL que vous créez.


0 commentaires