Diseño e implementación
Macro-diseño¶
Introducción
Este documento da una visión general de los
aspectos de diseño más importantes del sistema desde un punto de vista
"macro". Puede utilizarse como una guía para nuevos miembros que desean
participar en desarrollo y necesitan decidir en dónde podrían
concentrar su trabajo. Es de anotar que la implementación actual es el
resultado de diversas etapas de actividad con distintos niveles de
dedicación, expectativas e ideas de diseño. Si bien ya se ha avanzado
muy significativamente en un plan de "refactoring" que mejore el diseño
general del sistema, aún faltan algunos elementos importantes que se
comentarán en su oportunidad. Todo comentario será muy bienvenido y
puede canalizarse a través de la lista de correo loro-dev.
Nota: En construcción!
Subsistemas principales
- Núcleo de servicios del lenguaje
- Clientes de interface
Núcleo
Este subsistema está diseñado de tal forma que pueda utilizarse flexiblemente por diversos tipos de usuarios o clientes, así como por programadores que deseen cambiar algunos de sus componentes. En cuanto a los clientes, se ofrece una API bien definida y relativamente simple para acceder a los servicios más importantes:
- Inicializar el núcleo
- Obtener algunos objetos (a través de las interfaces correspondientes) encargados de ciertas tareas como compilación, ejecución, generación de documentación, etc.
- Terminar la sesión de trabajo con el núcleo.
(Diagrama de clases formato PDF generado con JVision).
En cuanto a facilidades para reprogramación, se han
concentrado esfuerzos principalmente en lo correspondiente a la
generación del árbol sintáctico. Actualmente se cuenta con una
implementación basada en la herramienta JavaCC para esta tarea, pero el
sistema está preparado para acoplarse con otras implementaciones a
través de las interfaces adecuadas. Entre las alternativas interesantes
están ANTLR y SableCC.
Clientes de interface
Se refieren a componentes de software que se comunican con el núcleo para ofrecer facilidades hacia los usuarios finales.
LoroEDI
Actualmente se ofrece un entorno de desarrollo integrado encargado de ofrecerle un interfaz gráfica al usuario final para canalizar los servicios ofrecidos de una manera cómoda y tratando de incorporar algunas pautas didácticas en su diseño. Aquí aún hay mucho por hacer.
Plug-ins
En esta categoría, un poco menos didáctica, se busca
contar con posibilidades de utilización del lenguaje en otros ambientes
de interfaz. Por ejemplo, se cuenta con una primera versión de un
plug-in para el editor jEdit. Pero también sería interesante explorar
otras posibilidades como Eclipse y Netbeans. Aunque no es muy
prioritario, lo que se busca es facilitar el desarrollo de paquetes de
extensión por parte de programadores no principiantes que desearían
utilizar herramientas más sofisticadas de edición y desarrollo.