Xtext (guía rápida)

Preview:

DESCRIPTION

Introducción a la herramienta Xtext para el Máster en Ingeniería Web de la Universidad de Oviedo

Citation preview

Creación de lenguajes textuales de dominio específico

Vicente García Díaz (garciaviente@uniovi.es)

Juan Manuel Cueva LovelleMDE-OOTLAB Research GroupNoviembre de 2010

Lo más fácil es descargar un Eclipse con todo http://xtext.itemis.com/xtext/language=en/23

947/downloads http://download.itemis.com/distros/eclipse-SDK-

3.6-xtext-1.0.1-win32.zip

A. Crear un lenguaje E.g., diseñar un DSL para realizar videojuegos

B. Realizar programas (modelos) con el lenguaje E.g., un programa (modelo) para especificar cómo va a ser

un videojuego de avionesC. Generar artefactos con los programas

realizados con el lenguaje E.g., a partir del programa (modelo) le pasamos una o

varias plantillas para generar automáticamente código C# con el videojuego

Ejemplo 1

facilitará la generación de artefactos

*todos los archivos están en la carpeta ejemplo 1

1- Definir la gramática

este lenguaje nos va a permitir definir procesos con algunos de los elementos de jPDL

2- Generar el lenguaje Botón derecho en GenerateProcess.mwe2 Run

As MWE2 Worflow

3- Crear restricciones (OPCIONAL) 3.1- En GenerateProcess.mwe2 hay que añadir esta

línea: 3.2- Hay que volver a generar el lenguaje*** (paso A2)

..y así quedaría la carpeta del proyecto

los mejores ficheros para poner las restricciones***siempre que se cambie

algo del lenguaje, hay que volver a regenerarlo (paso A2)

3- Crear restricciones (OPCIONAL) 3.3- Especificar las restricciones

▪ Cuando Eclipse nos pregunté Do you Want to add the Xtextnature to the Project, le decimos que sí para poder trabajar con nuestro lenguaje

3.4- Como se ha hecho un cambio, hay que volver a generar el lenguaje (paso A2)

1- Instalar el plugin con el editor del lenguaje en un entorno Eclipse o ejecutar una segunda instancia de Eclipse (sirve para agilizar la fase de desarrollo) Botón derecho en uno de nuestros proyectos

Run As Eclipse Application

2- Crear un proyecto Java y dentro de la segunda instancia de Eclipse y una carpeta dentro del proyecto para meter los nuevos modelos

carpeta para los modelos, podría tener otro nombre…

3- Crear un fichero para nuestro programa Botón derecho en la carpeta modelsNew Other

File

Cuando Eclipse nos pregunté Do you Want to add the Xtextnature to the Project, le decimos que sí para poder trabajar con nuestro lenguaje

4- Realizar un programa (modelo) – o varios…

idealmente, el lenguaje podría ser tan potente como para reproducir cada uno de los ejemplos que vimos de jBPM

este nombre no está en minúsculas, entonces se muestra un Warning (lo hemos definido en la restricción del paso 3.3)

5- Cerrar la segunda instancia de Eclipse. En este momento ya hemos probado el entorno de desarrollo de nuestro lenguaje. Para probar ya no lo necesitamos más***

*** el programa (modelo) que hemos creado podríamos usarlo para generar artefactos (Java, html, …) en este mismo proyecto (sería lo ideal) porque reaprovecharíamos el entorno de desarrollo.

…pero vamos a reaprovechar el proyecto generatorque nos dan, y así “ahorramos” algún paso

1- Copiar un programa (modelo) enel archivo Example.myprocess

como no estamos trabajando con el plugin, aquí no tenemos resalte de sintaxis…

2- Preparar la plantilla de generaciónLenguaje Xpand

3- Crear extensiones (OPCIONAL)

este es nuevo

en este caso estamos implementando un método Java para timestamp(), método invocado desde Xpand. Se usa porque la sintaxis de Xpand está más orientada a generar artefactos que a realizar procesamiento lógico

Xtend, que inicialmente está pensado para realizar transformaciones entre modelos, aquí puede verse como un puente de unión entre Xpand (la plantilla) y el método Java (Java es más potente que Xtend y además YA lo conocemos)

Lenguaje Xtend

4- Preparar el Workflow para nuestrolenguaje

nos interesa recorrer todo el proceso

slot es una estructura de datos interna, lo podemos llamar como queramos

type es uno de los elementos de nuestro lenguaje, en este caso nos interesa el elemento raíz, Process, pero podría haber sido otro

5- Generar los artefactos finales Botón derecho en ProcessProcess.mwe2 Run As MWE2 Worflow

y finalmente, hemos generado artefactos (para este ejemplo, una clase java que al ejecutarla nos lista todas las actividades y transiciones)

Ejemplo 2*todos los archivos están en la carpeta ejemplo 2

Eclipse Project http://www.eclipse.org/

Eclipse Modeling Project http://www.eclipse.org/modeling/

Xtext Project http://www.eclipse.org/Xtext/