[en] Computer history has been always linked with mathematical problem solving. For centuries, well-known personalities have been looking forward to build a system capable of self-proving theorems and math results. Is on this scenario where Computer Algebra systems arise: tools that allow symbolic calculus by doing manipulations that reflect the human manual way. This Bachelor Thesis is about using a compiler to create this kind of tools, to provide a rewriting term system for mathematical expression solving by manipulating them with equivalency rules. As a particular case, it is pretended to achieve a system that replaces the actual one used in Chalkpy, a tool used to improve the presentation of mathematical content in educational enviroment. Thanks to that, the created tool would be better adapted to the user requirements. The developed functionality solves the problems caused by the need of modifying a system when adding new features by code generation, according to a definition file. This file contains the desired rules that will be used in the system once it is generated. A waterfall with feedback lifecycle was the method choosen to create the compilator, and an iterative and incremental one was used for generating the engines code. To build the lexical analyzer was chosen, whilst JFlex was chosen; CUP was the tool used to build the sintactic/semantic analyzer. This project can be considered successful as it allows generation of multiple algebraic engine, the Chalkpy algebraic system being a special case.

[es] La historia de la computación ha estado estrechamente relacionada con la resolución de problemas matemáticos. Durante siglos, grandes figuras en este campo han buscado la construcción de sistemas que deduzcan teoremas y resultados matemáticos. Es en este marco donde surgen los Sistemas de Álgebra Computacional, herramientas que permiten el cálculo simbólico mediante manipulaciones que reflejan los cálculos manuales que realizaría una persona. Este Trabajo de Fin de Grado busca la creación de motores algebraicos computacionales, a través de un compilador, que proporcionen un sistema de reescritura de términos para la resolución de expresiones matemáticas por medio de manipulaciones. Como caso particular de estos sistemas se pretende conseguir un motor que sustituya el sistema actual de Chalkpy, una herramienta para mejorar la presentación de contenido matemático en el aula. De este modo, se pretende que la herramienta se adapte mejor a las especificaciones de un usuario. La funcionalidad aportada soluciona los problemas que genera la necesidad de modificar un sistema, ante la introducción de nuevas funcionalidades, mediante la generación de código por un fichero de definiciones. Este recoge los elementos y las reglas de equivalencia que se desean utilizar en el sistema. El desarrollo de este proyecto ha seguido un ciclo de vida en cascada con retroalimentación para la creación del compilador, y un ciclo de vida iterativo incremental para la parte de la generación del código de los motores. Para la creación del analizador léxico se ha utilizado la herramienta JFlex y para el analizador sintáctico/semántico el generador CUP. El éxito de este proyecto se refleja en la creación de diversos motores entre los que se encuentra el motor algebraico para la nueva versión de Chalkpy.