2010-07-28 12 views

Respuesta

7

They are different in term of document storing the metamodel.

En cuanto XText, this article ilustra un uso, cuando se trata de crear su propio y lenguajes de programación y lenguajes específicos de dominio (DSLs).

Una vez que tiene un idioma, desea procesarlo y, por lo general, esto significa transformar su modelo en otra representación.
La instalación responsable de esta transformación se llama generador y consiste en un grupo de plantillas de transformación (por ejemplo, ) y algún código que las ejecuta. En algún caso, se lee el modelo y las transformaciones se aplican para producir código.

Example of such a model transformation:

dot3zest, que viene con un punto para Zest intérprete (que ahora utiliza la API interruptor xtext generado para la gramática DOT) es el soporte para las definiciones de borde DOT ad-hoc.

alt text


En cuanto a MPS, que tienen here a serie of practical examples,
como esto code generation to GPL such as Java, C#, C++ or XML:

alt text

+0

Nota: una [conferencia en octubre de 2010] (http://www.voelter.de/conferences/index/detail803128037.html) ilustrará un ejemplo práctico con ambos marcos. Para las diferencias, vea [también aquí] (http://lambda-the-ultimate.org/node/3994#comment-60524) – VonC

+0

¿La generación de código es el objetivo final o no lo estoy viendo lo suficientemente lejos? –

+0

@ S.R: no el objetivo final sigue siendo la transformación del modelo. Transformas un AST (árbol de sintaxis abstracta) en otro, y eso te dará: código (generación de código) o nodos (el gráfico de nodos en los primeros ejemplos) o cualquier otro AST que represente lo que se supone que el modelo de destino debe . – VonC

11

Hemos creado toda bug tracker utilizando MPS. La generación de código no es el objetivo, sino que significa obtener algún código ejecutable. El objetivo es proporcionar una herramienta al desarrollador que permita crear DSL con el mínimo esfuerzo.

Lo bueno de MPS es que también le ofrece un IDE para su idioma. Y las diferentes DSL que cree son compatibles, es decir, puede crear DSL que amplíe Java con cierres y otra DSL que habilite métodos externos, y estas extensiones funcionarán juntas.

+0

¿Podría ayudarme a encontrar la extensión de cierre para Java? No puedo encontrar algunos ejemplos de cómo extender java synthax. –

+0

Para usar cierres para Java en MPS solo necesita importar el lenguaje jetbrains.mps.baseLanguage.closures –

1

Creo que el uso principal de XText es, en primer lugar, crear un DSL de la gramática que definió y un banco de trabajo de eclipse generado automáticamente para usted. En segundo lugar, puede transformar el escroto escrito en su DSL en java. Las expresiones integradas de XText2 son un plus. El marco te ofrece un IDE gratis para admitir tu escritura DSL que creaste. Y el DSL es el producto ulimate para proporcionar. Se puede usar para abstraer las reglas y las lógicas del mundo real. Por ejemplo, en nuestro proyecto, la regla de configuración del producto. Solo el especialista los conoce, por lo que escriben algunos en la DSL que crees.

Cuestiones relacionadas