Abstract
Este trabajo de fin de grado tiene como objetivo ofrecer herramientas de ayuda a los alumnos de las asignaturas de Procesadores de Lenguajes y Traductores de Lenguajes para que las puedan utilizar en la realización de sus prácticas. Se han implementado los módulos de los analizadores léxico, sintáctico y semántico para que los alumnos puedan construir su propio procesador de lenguajes. Además, se ha desarrollado otra herramienta con la que podrán calcular el FIRST y FOLLOW de una gramática, así como comprobar que cumple la condición LL1. Las asignaturas de Procesadores de Lenguajes y Traductores de Lenguajes tienen como objetivo que los alumnos aprendan los algoritmos y estructuras de datos utilizados en la construcción de compiladores. Sin embargo, no se exige conocer cómo se programan cada uno de estos módulos de un compilador. Es por esto que se ha decido dotar a los alumnos de estas herramientas, para que puedan utilizar los diseños de alto nivel que se ven en clase y puedan dejar a un lado la programación de los distintos módulos. Por último, cabe destacar que se ha creado un nuevo algoritmo para el cálculo del FIRST y FOLLOW que permite solucionar el problema de las dependencias entre dos o más conjuntos, que hacen que el algoritmo tradicional [1] se quede en un bucle infinito.---ABSTRACT---The aim of this project is to create a tool that will assist students with hands on projects in both Language Processors and Language Translators courses. The tools that have been developed include lexical, syntactic and semantic analyzer so that students are able to build their own language processor. Moreover, another tool has been developed in order to compute the FIRST and FOLLOW of a grammar, and also, to prove that this grammar meets the LL1 condition. The Language Processors and Language Translators courses aim to teach students about the algorithms and data structures used when making a compiler. Nevertheless, it is not required to know how every component is programmed. It is because of this it has been decided to provide students with this tools so that they can focus on the high level modules studied in class instead of programming of every module. Lastly, it should be noted that it has been created a new algorithm to compute the FIRST and FOLLOW that solves dependency problems between two or more sets that makes the currently used algorithm stuck in an infinite loop.