Ces deux cadres traitent de méta-modèle: P>
3 Réponses :
Ils sont différents en termes de document stocker le métamodel . P>
En ce qui concerne xtext strong>, Cet article illustre une utilisation, quand il s'agit de créer vos propres langues de programmation et Langues spécifiques au domaine (DSLS). P>
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. Exemple d'une telle transformation de modèle : p>
dot3zest strong>, 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. p>
blockQuote>
En ce qui concerne les députés, vous avez ici une série d'exemples pratiques ,
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 code> strong>) 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. P>
blockQuote>
p>
comme cette génération de code sur GPL telle que Java, C #, C ++ ou XML : p>
(source: googlecode.com < / a>) sub> p>
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é .
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. p>
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. p>
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
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. P>