El Trabajo de Fin de Máster que se presenta forma parte de un proyecto más amplio, el objetivo de este es el desarrollo de un sistema integral que permite a los alumnos autoevaluar de forma automática el trabajo práctico de la asignatura Traductores de Lenguajes, del Grado en Ingeniería Informática de la Universidad Politécnica de Madrid.
Este sistema se integra en DRACO, una plataforma web gamificada orientada a mejorar el aprendizaje en las asignaturas de Procesadores de Lenguajes y Traductores de Lenguajes.
El trabajo práctico de la asignatura consiste en desarrollar un compilador para un lenguaje definido. Actualmente no existe ningún entorno donde los alumnos puedan realizar pruebas sobre el sistema que desarrollan, por lo que la labor de validación recae exclusivamente sobre ellos, dificultando el trabajo.
Ante esta situación, se plantea como solución el desarrollo de un sistema automatizado capaz de evaluar los resultados generados por los compiladores desarrollados por los estudiantes. Además, este sistema es reutilizable puesto que es independiente de las distintas especificaciones del lenguaje que se definan cada año.
A partir del código intermedio o del ensamblador, que produce el compilador del alumno, el sistema realiza un análisis en busca de errores, lo traduce a código objeto y ejecuta para comparar la salida con el resultado esperado. Gracias a esto se logra una evaluación automatizada y objetiva que muestra a los estudiantes los errores encontrados.
El proyecto completo del compilador genérico incluye varias fases: definición del lenguaje fuente genérico, compilador fuente con traducción a una representación intermedia en forma de cuartetos, compilador de cuartetos y su traducción a lenguaje ensamblador, analizador de código ensamblador, módulo de ejecución del código y la integración de este sistema en la plataforma web.
Este Trabajo de Fin de Máster se centra en el diseño y desarrollo de tres componentes clave: el diseño del lenguaje intermedio (cuartetos), el compilador de cuartetos a ensamblador y el analizador de código ensamblador. Todos estos componentes se han programado en PHP, el lenguaje base del sistema DRACO, lo que permite una integración eficiente con el entorno ya existente. Además, el desarrollo se ha llevado a cabo siguiendo un diseño riguroso y aplicando distintas técnicas propias de la Ingeniería del Software con el objetivo de garantizar la mantenibilidad, claridad y coherencia del sistema.
Los resultados obtenidos con este trabajo suponen un avance significativo en la futura funcionalidad del sistema DRACO. Con su integración final en DRACO el compilador genérico supondrá una herramienta de apoyo clave para los alumnos durante el desarrollo del trabajo práctico. Todo ello permitirá aumentar la motivación y la implicación de los alumnos, así como la calidad del aprendizaje en la asignatura.
–ABSTRACT–
This Master Thesis is part of a broader project whose objective is the development of a comprehensive system that enables students to automatically self-assess the practical assignment of the Language Translators course in the Bachelor’s Degree in Computer Engineering at the Universidad Politécnica de Madrid.
This system is integrated into DRACO, a gamified web platform aimed at enhancing learning in the courses Language Processors and Language Translators.
The practical assignment in this course consists of developing a compiler for a defined language. Currently, there is no environment available where students can test the systems they develop, so the responsibility for validation lies entirely with them, making the task more difficult.
To address this situation, the proposed solution is the development of an automated system capable of evaluating the outputs generated by the compilers developed by the students. Furthermore, the system is reusable, as it is independent of the specific language specifications defined each academic year.
From the intermediate code or assembly code produced by the student’s compiler, the system performs an analysis to detect errors, translates the code into object code, and executes it to compare the output with the expected result. This enables an automated and objective self-assessment process that shows students the errors found.
The complete generic compiler project consists of several phases: definition of the generic source language, source code compiler with translation to an intermediate representation in the form of quadruples, quadruple-to-assembly compiler, assembly code analyzer, code executor module, and integration of the system into the web platform.
This Master’s Thesis focuses on the design and development of three key components: the design of the intermediate language (quadruples), the quadruple-to-assembly compiler, and the assembly code analyzer. All these components have been implemented in PHP, the base language of the DRACO platform, enabling efficient integration with the existing environment. Additionally, the development has followed a rigorous design process, applying various Software Engineering techniques to ensure the system’s maintainability, clarity, and consistency.
The results obtained through this work represent a significant step forward in the future functionality of the DRACO system. Once fully integrated into DRACO, the generic compiler will become a key support tool for students during the development of the practical assignment. Altogether, it is expected to increase student motivation and engagement, as well as the overall quality of learning in the course.
El Trabajo de Fin de Máster que se presenta forma parte de un proyecto más amplio, el objetivo de este es el desarrollo de un sistema integral que permite a los alumnos autoevaluar de forma automática el trabajo práctico de la asignatura Traductores de Lenguajes, del Grado en Ingeniería Informática de la Universidad Politécnica de Madrid.
Este sistema se integra en DRACO, una plataforma web gamificada orientada a mejorar el aprendizaje en las asignaturas de Procesadores de Lenguajes y Traductores de Lenguajes.
El trabajo práctico de la asignatura consiste en desarrollar un compilador para un lenguaje definido. Actualmente no existe ningún entorno donde los alumnos puedan realizar pruebas sobre el sistema que desarrollan, por lo que la labor de validación recae exclusivamente sobre ellos, dificultando el trabajo.
Ante esta situación, se plantea como solución el desarrollo de un sistema automatizado capaz de evaluar los resultados generados por los compiladores desarrollados por los estudiantes. Además, este sistema es reutilizable puesto que es independiente de las distintas especificaciones del lenguaje que se definan cada año.
A partir del código intermedio o del ensamblador, que produce el compilador del alumno, el sistema realiza un análisis en busca de errores, lo traduce a código objeto y ejecuta para comparar la salida con el resultado esperado. Gracias a esto se logra una evaluación automatizada y objetiva que muestra a los estudiantes los errores encontrados.
El proyecto completo del compilador genérico incluye varias fases: definición del lenguaje fuente genérico, compilador fuente con traducción a una representación intermedia en forma de cuartetos, compilador de cuartetos y su traducción a lenguaje ensamblador, analizador de código ensamblador, módulo de ejecución del código y la integración de este sistema en la plataforma web.
Este Trabajo de Fin de Máster se centra en el diseño y desarrollo de tres componentes clave: el diseño del lenguaje intermedio (cuartetos), el compilador de cuartetos a ensamblador y el analizador de código ensamblador. Todos estos componentes se han programado en PHP, el lenguaje base del sistema DRACO, lo que permite una integración eficiente con el entorno ya existente. Además, el desarrollo se ha llevado a cabo siguiendo un diseño riguroso y aplicando distintas técnicas propias de la Ingeniería del Software con el objetivo de garantizar la mantenibilidad, claridad y coherencia del sistema.
Los resultados obtenidos con este trabajo suponen un avance significativo en la futura funcionalidad del sistema DRACO. Con su integración final en DRACO el compilador genérico supondrá una herramienta de apoyo clave para los alumnos durante el desarrollo del trabajo práctico. Todo ello permitirá aumentar la motivación y la implicación de los alumnos, así como la calidad del aprendizaje en la asignatura.
–ABSTRACT–
This Master Thesis is part of a broader project whose objective is the development of a comprehensive system that enables students to automatically self-assess the practical assignment of the Language Translators course in the Bachelor’s Degree in Computer Engineering at the Universidad Politécnica de Madrid.
This system is integrated into DRACO, a gamified web platform aimed at enhancing learning in the courses Language Processors and Language Translators.
The practical assignment in this course consists of developing a compiler for a defined language. Currently, there is no environment available where students can test the systems they develop, so the responsibility for validation lies entirely with them, making the task more difficult.
To address this situation, the proposed solution is the development of an automated system capable of evaluating the outputs generated by the compilers developed by the students. Furthermore, the system is reusable, as it is independent of the specific language specifications defined each academic year.
From the intermediate code or assembly code produced by the student’s compiler, the system performs an analysis to detect errors, translates the code into object code, and executes it to compare the output with the expected result. This enables an automated and objective self-assessment process that shows students the errors found.
The complete generic compiler project consists of several phases: definition of the generic source language, source code compiler with translation to an intermediate representation in the form of quadruples, quadruple-to-assembly compiler, assembly code analyzer, code executor module, and integration of the system into the web platform.
This Master’s Thesis focuses on the design and development of three key components: the design of the intermediate language (quadruples), the quadruple-to-assembly compiler, and the assembly code analyzer. All these components have been implemented in PHP, the base language of the DRACO platform, enabling efficient integration with the existing environment. Additionally, the development has followed a rigorous design process, applying various Software Engineering techniques to ensure the system’s maintainability, clarity, and consistency.
The results obtained through this work represent a significant step forward in the future functionality of the DRACO system. Once fully integrated into DRACO, the generic compiler will become a key support tool for students during the development of the practical assignment. Altogether, it is expected to increase student motivation and engagement, as well as the overall quality of learning in the course. Read More


