You are on page 1of 20

Creación de lenguajes textuales de dominio específico

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


Juan Manuel Cueva Lovelle
MDE-OOTLAB Research Group
Noviembre 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 aviones
C. 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
*todos los archivos están en la carpeta ejemplo 1

facilitará la generación de artefactos


 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


***siempre que se cambie
poner las restricciones
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 Xtext


nature 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 models  New  Other 
File

 Cuando Eclipse nos pregunté Do you Want to add the Xtext


nature 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 generator


que nos dan, y así “ahorramos” algún paso
 1- Copiar un programa (modelo) en
el archivo Example.myprocess

como no estamos
trabajando con el
plugin, aquí no
tenemos resalte de
sintaxis…
 2- Preparar la plantilla de generación
Lenguaje Xpand
 3- Crear extensiones (OPCIONAL)
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 este es nuevo
que a realizar procesamiento lógico

Lenguaje Xtend

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)
 4- Preparar el Workflow para nuestro
lenguaje

slot es una estructura


de datos interna, lo
podemos llamar como
queramos

type es uno de los


elementos de nuestro nos interesa recorrer todo el proceso
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/

You might also like