%0 Generic %A Planes Ruiz, Fernando %C Madrid, España %D 2020 %F upm:64749 %T Herramientas de ayuda para la construcción de compiladores %U https://oa.upm.es/64749/ %X Este documento recoge el desarrollo llevado a cabo para la realización del Trabajo de Fin de Grado, en el cual se ha buscado generar una herramienta que ayude a los alumnos de la asignatura de Procesadores de Lenguajes a realizar la práctica de la asignatura así como favorecer su aprendizaje. El punto de partida de este proyecto fue la revisión de otras herramientas que ya existían para resolver el mismo problema. Dado que otros alumnos ya habían realizado proyectos similares, se buscó darle un enfoque distinto, haciendo especial hincapié en la manera en que los alumnos usarían la herramienta en lugar de buscar simplemente que la herramienta permitiese construir un procesador. En un primer momento, se desarrolló un prototipo para probar algunas ideas de diseño, como la incorporación de interfaces gráficas atractivas, distintas técnicas que facilitasen a los alumnos utilizar la herramienta de manera similar a como realizan los ejercicios de clase en lugar de depender de un manual, así como varios ejemplos de posibles simulaciones para dar a los alumnos retroalimentación clara al momento de manera que pudiesen solucionar sus errores por ellos mismos al instante. Este prototipo no seguía estrictamente la estructura propuesta en clase para la realización de la práctica y se tomaron ciertas libertades en este sentido para poder elaborar un prototipo rápido pero cercano a la experiencia final que se buscaría para el alumno. Del prototipo se extrajeron muchas conclusiones respecto a que sí funcionaba y que no, además de que facilitó la discusión sobre cómo debía ser la herramienta final y cómo extender al caso general las ideas que más valor aportaban. Dada la complejidad del proyecto, para el prototipo final se decidió desarrollar únicamente el módulo para la construcción del analizador léxico, aunque el código se ha desarrollado pensando en facilitar la integración de módulos posteriores sobre este. La herramienta se ha desarrollado en formato de página web para facilitar la compatibilidad con los distintos equipos de los alumnos, además de que el prototipo final también tiene en cuenta su posible uso en dispositivos móviles como teléfonos o tabletas.---ABSTRACT---This document collects all the details in regards to the development of the Degree’s Final Project. It’s objective has been generating a tool to help the students of the subject on Language Processors develop the subject’s project, but also enhance their learning. The starting point for this project was the revision of other tools that aimed to solve the same problem. Since other students had already carried out similar projects, we approached the problem in a different way. Instead of focusing on making a tool that could generate a language processor, we focused on the way the students would use the tool. We developed a first prototype to test some design ideas, like using attractive graphical interfaces, using multiple techniques so that students could use the tool in a way close to what they were already doing when solving exercises in class instead of relying on manuals, and also different examples of simulations to give a quick feedback to the students so that they could correct their mistakes and learn from them in real time. This first prototype didn’t follow strictly the proposed structure seen in class for developing a language processor and some assumptions were made as to develop the prototype fast, but close to the experience we wanted to achieve for the students. We gathered a lot of conclusions in terms of what worked and what didn’t, and the prototype also helped the discussion on what the final tool should look like and on how we could extend the most valuable ideas to the general case. Given the complexity of the project, we ultimately decided on developing only the module for the lexical analyzer, although the code has been written so that it can facilitate the later integration of the rest of the modules. The tool has been developed as a web page to avoid compatibility issues with the student’s computer, and the final prototype is also designed so that it can be used in mobile devices such as smartphones or tablets.