20
Creación de lenguajes textuales de dominio específico Vicente García Díaz ([email protected]) Juan Manuel Cueva Lovelle MDE-OOTLAB Research Group Noviembre de 2010

Xtext (guía rápida)

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Xtext (guía rápida)

Creación de lenguajes textuales de dominio específico

Vicente García Díaz ([email protected])

Juan Manuel Cueva LovelleMDE-OOTLAB Research GroupNoviembre de 2010

Page 2: Xtext (guía rápida)

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

Page 3: Xtext (guía rápida)

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

Page 4: Xtext (guía rápida)

Ejemplo 1

facilitará la generación de artefactos

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

Page 5: Xtext (guía rápida)

1- Definir la gramática

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

Page 6: Xtext (guía rápida)

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

As MWE2 Worflow

Page 7: Xtext (guía rápida)

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)

Page 8: Xtext (guía rápida)

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)

Page 9: Xtext (guía rápida)

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

Page 10: Xtext (guía rápida)

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…

Page 11: Xtext (guía rápida)

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

Page 12: Xtext (guía rápida)

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)

Page 13: Xtext (guía rápida)

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

Page 14: Xtext (guía rápida)

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

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

Page 15: Xtext (guía rápida)

2- Preparar la plantilla de generaciónLenguaje Xpand

Page 16: Xtext (guía rápida)

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

Page 17: Xtext (guía rápida)

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

Page 18: Xtext (guía rápida)

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)

Page 19: Xtext (guía rápida)

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

Page 20: Xtext (guía rápida)

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

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

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