Título: Una herramienta interactiva para la construcción de analizadores léxicos y sintácticos basados en gramáticas LL(1)
Autor: Gabriel Alejandro Cravchik
Directores: Mg. Gerardo Parra y Lic. Daniel Dolz
Carrera: Licenciatura en Ciencias de la Computación
Fecha de defensa: 2 de septiembre de 2009
Resumen
En este trabajo de tesis nos proponemos desarrollar una herramienta interactiva que brinde soporte en la construcción de analizadores léxicos y sintácticos basados en gramáticas de tipo LL(1). A través de esta herramienta es posible modelar la sintaxis de un lenguaje de programación mediante la definición de especificaciones léxicas y sintácticas. Luego, interpretando estas especificaciones la herramienta podrá determinar si una cadena de entrada cumple con la sintaxis requerida por el lenguaje modelado. Contar con una herramienta de estas características, que nos permita analizar una cadena de entrada formada por lexemas relacionando las etapas de análisis léxico y sintáctico, simplificará el proceso de definición de un lenguaje. Además, hará que avancemos a la etapa de codificación con definiciones ya probadas. A diferencia de otras aplicaciones existentes que hemos relevado en donde las etapas de análisis léxico y sintáctico no se presentan relacionadas, en este trabajo nos enfocamos en integrar ambas etapas en una única herramienta, de manera tal que en pocos pasos podamos definir la sintaxis de un lenguaje de programación y determinar si el lenguaje definido es el esperado. Como parte de este trabajo, describimos un meta-lenguaje para la definición de especificaciones léxicas y sintácticas, que son luego interpretadas por la herramienta. La especificación léxica es representada por medio de expresiones regulares que determinan los componentes léxicos válidos del lenguaje. La especificación sintáctica modela una gramática libre de contexto que define la sintaxis del lenguaje. Diseñamos este meta-lenguaje de manera tal que su incorporación en herramientas de procesamiento de lenguajes no resulte compleja, aún así manteniendo la expresividad suficiente para representar los símbolos de los lenguajes formales reales y con un formato amigable al usuario. Además de contar con una interfaz visual, la funcionalidad del aplicativo se encuentra organizada en forma de librerías que pueden ser incorporadas en otros desarrollos.