PROYECTO N° 032614 2/I TITULO: ANALISIS SINTACTICO Y SEMANTICO DE PROGRAMAS ESCRITOS EN JSHIELD. Investigador Principal Luis Gajardo Díaz Facultad/Depto. Ciencias Empresariales/Auditoría e Informática E-Mail lgajardo@ubiobio.cl Coinvestigadores Mª Angélica Caro G. OBJETIVOS: - Desarrollar un dialecto de Java llamado Jshield que integra los conceptos de Safethreads y Rendez-Vous. RESUMEN Y RESULTADOS: La programación concurrente permite crear procesos denominados threads que comparten las mismas estructuras de datos de manera simultánea. En este esquema, uno de los errores más temidos corresponde a los data races que se produce cuando dos o más procesos modifican simultáneamente estas estructuras de datos dejándolas en un estado de inconsistencia. Es bastante común que los programadores no identifiquen todas las secciones críticas donde se accesan estas estructuras y más aún que no las sincronicen adecuadamente. El problema de los data races ha sido analizado desde diferentes puntos de vista. Uno de ellos es el Rendez-Vous, el cual es una poderosa herramienta para estructurar el código que permite facilitar la comprensión y escritura de los programas concurrentes, pero no ataca la detección y prevención de los data races. Otro punto de vista corresponde al modelo de Safe-threads, que resuelve este problema por medio de modificaciones a la semántica del lenguaje Java originando así un nuevo dialecto, denominado Jshield. Sin embargo, el mecanismo utilizado en Jshield es distinto del Rendez-Vous y carece de la legibilidad y elegancia de este último. Por otra parte, la implementación de un preprocesador de Jshield a Java estándar, utiliza herramientas como JavaCC y Java Tree Builder (JTB) que generan automáticamente el analizador sintáctico para la gramática y el árbol de derivación respectivamente. El problema de estas herramientas es que generan árboles de gran tamaño que se originan a partir de la gramática original del lenguaje Java. Esto hace que el proceso de traducción sea ineficiente y además que el código del preprocesador sea incomprensible por la cantidad de reglas sintácticas que hay que considerar. En este trabajo desarrollaremos un diseño ad-hoc, que contempla un árbol de sintaxis abstracta (AST) para la gramática de Jshield y lo enriqueceremos con la construcción sintáctica denominada Rendez-Vous que permite mejorar la legibilidad de los programas. Por tanto, se desarrollará la mitad de un preprocesador para Jshield el cual contempla cuatro etapas: el análisis léxico y sintáctico para la fase de reconocimiento de la gramática y el análisis de interfafaz y de tipos para la fase semántica. Resultados: Mostramos que un Arbol de sintaxis abstracta (AST) es más conveniente que un árbol de derivación ya que permite ventajas en términos del espacio de memoria necesario para almacenarlo, tiempo requerido para recorrerlo y facilidad de mantención. Entregar a la comunidad de una herramienta de libre distribución, que permite realizar análisis semántico sobre programas escritos en Jshield y java. De esta manera se facilita la implementación de nuevos módulos de análisis semántico, como por ejemplo de RendezVous. Los investigadores pueden enriquecer experimentalmente la gramática de java agregando nuevas capas, por ejemplo, sobre el análisis de tipos para desarrollar nuevas funcionalidades en java. PUBLICACIONES: - Análisis semántico de programas escritos en Java. Revista THEORIA: Ciencia, Arte y Humanidades. PRESENTACION EN CONGRESOS Y/O EVENTOS: - Luis Gajardo y Luis Mateu. Análisis semántico de programas escritos en Java. XII Encuentro Chileno de Computación de las Jornadas Chilenas de Computación. Universidad de Tarapacá, Noviembre 2004. TESIS: - Análisis sintáctico y semántico de programas escritos en Jshield. Luis Gajardo Díaz. Tesis de Magister.