2010-07-28 5 views

Répondre

7

They are different in term of document storing the metamodel.

En ce qui concerne XText, this article illustre une utilisation, quand il vient à y créer vos propres langages de programmation et des langages spécifiques au domaine (DSLs).

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

Example of such a model transformation:

dot3zest, qui est livré avec un DOT interprète Zest (qui utilise maintenant l'API de commutateur Xtext généré pour la grammaire DOT) est un soutien pour le bord DOT ad-hoc définitions.

alt text


En ce qui concerne MPS, vous avez here a serie of practical examples,
comme celui-ci code generation to GPL such as Java, C#, C++ or XML:

alt text

+0

Note: une [conférence d'octobre 2010] (http://www.voelter.de/conferences/index/detail803128037.html) illustrera un exemple pratique avec les deux frameworks. Pour les différences, voir [ici aussi] (http://lambda-the-ultimate.org/node/3994#comment-60524) – VonC

+0

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

+0

@ S.R: non, le but ultime reste la transformation du modèle. Vous transformez un AST (arbre de synthaxe abstrait) en un autre, et cela vous donnera: code (génération de code), ou nœuds (le graphe de nœud dans les premiers exemples), ou tout autre AST qui représentera le modèle de destination . – VonC

11

Nous avons créé ensemble bug tracker à l'aide de MPS. 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 minimum d'effort.

Ce qui est cool à propos de MPS, c'est qu'il vous fournit également un IDE pour votre langue. Et les différents DSL que vous créez sont compatibles, c'est-à-dire que vous pouvez créer un DSL qui étend Java avec des fermetures et un autre DSL qui active des méthodes externes, et ces extensions fonctionneront ensemble.

+0

Pourriez-vous s'il vous plaît m'aider à trouver l'extension de fermeture pour Java? Je ne peux pas trouver quelques exemples comment étendre java synthax. –

+0

Pour utiliser les fermetures pour Java dans MPS, il suffit d'importer la langue jetbrains.mps.baseLanguage.closures –

1

Je pense que l'utilisation principale de XText est d'abord de créer un DSL à partir du grammeur que vous avez défini et un plan de travail eclipse généré automatiquement pour vous. Deuxièmement, il peut transformer le scrp écrit dans votre DSL en Java. Les expressions intégrées de XText2 sont un plus. Le cadre vous donne un IDE gratuit pour soutenir votre écriture DSL que vous avez créé. Et le DSL est le produit ulimate à fournir. Il peut être utilisé pour extraire les règles et les logiques du monde réel. Par exemple, dans notre projet, la règle de configuration du produit. Seul un spécialiste les connaît, alors ils en écrivent dans la DSL que vous créez.

Questions connexes