Tal y como comentabamos hace uno o dos posts, algunos equipos como
AJDT o
Scala IDE construyen el entorno de desarrollo para
Eclipse basándose en el servicio de tejido de
JDT (
JDT Weaving Service).
Vamos a realizar un pequeño ejemplo para nuestro lenguaje (ficticio) de programación Demo, que corre sobre la máquina virtual de Java, integrándolo en el modelo JDT (voy a asumir que se disponen de una serie de conocimientos básicos de Eclipse).
En primer lugar necesitaremos tener disponibles las siguientes dependencias en nuestro entorno de desarrollo:
- AJDT 1.6.4 o superior (http://download.eclipse.org/tools/ajdt/35/update).
- Servicio JDT de weaving debe estar activado.
Con el objetivo de facilitar el seguimiento de este pequeño ejemplo creo que será mejor disponer del proyecto desde el principio, por lo que, desde vuestro cliente
subversion preferido obteneis una copia de trabajo desde la siguiente dirección:
http://reclipse.googlecode.com/svn/com.blogspot.miguelinlas3.ajdt.demo/trunk/(y haceis un
Import del proyecto en el
Eclipse si habeis obtenido la copia de trabajo desde un cliente externo).
Una vez disponemos del proyecto accederemos al archivo
plugin.xml y veremos los siguientes puntos de extensión:

Los puntos de extensión
org.eclipse.contribution.weaving.* nos permiten extender el modelo
JDT, integrando en él los componentes de nuestro lenguaje.
La clase principal es
DemoSourceProvider, la cual contribuye al modelo mediante el punto de extensión
org.eclipse.contribution.weaving.jdt.sourcetransformer.
El objetivo principal de la clase anterior consiste en traducir nuestro lenguaje (completamente absurdo :) ). Si la definición de un archivo de código fuente de nuestro lenguaje fuese algo como lo siguiente:
name: MyDemo { x: 10 y: 5 z: 12 }el traductor intentará convertirlo en algo como lo que sigue:
class MyDemo { int x= 10; int y= 5; int z = 12; }Intentad darle un vistazo al código (son cuatro clases con muy poco código) y mañana os dejaré un proyecto de ejemplo que haga uso de esta construcción para que veais que realmente se integra nuestro absurdo lenguaje!
Hasta pronto!