srfreire/CalculadoraBison
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
USO DEL MAKEFILE Y DETALLES DE IMPLEMENTACIÓN
---------------------------------------------
📌 Descripción
Este proyecto incluye un Makefile que facilita la compilación y ejecución del programa. Proporciona diversas opciones para compilar, ejecutar y depurar el código de manera eficiente.
El programa funciona como una calculadora que permite realizar operaciones aritméticas básicas, tales como suma, resta, multiplicación, división y exponenciación. También admite funciones matemáticas avanzadas como senos, cosenos, tangentes, logaritmos y raíces cuadradas.
⚙️ Comandos disponibles
make → Compila el programa y genera el ejecutable.
make clean → Elimina los archivos objeto (.o) generados durante la compilación. Elimina también los .c y .h generados por Flex y Bison.
make clean_flex_bison → Elimina los archivos generados por Flex y Bison.
make run → Ejecuta el programa. Si no está compilado, lo compila antes de ejecutarlo.
make valgrind → Ejecuta el programa con Valgrind para detectar fugas de memoria y errores de gestión. Si no está compilado, lo compila antes.
make flex → Compila el analizador léxico (lexer.c) utilizando Flex.
make bison → Compila el analizador sintáctico (parser.c) utilizando Bison.
make libraries → Compila las librerías dinámicas mylib.so y mylib2.so.
📌 Requisitos y versiones
Para utilizar este Makefile, es necesario contar con:
Un compilador compatible con C/C++ (gcc), version 9.4.0.
make instalado en el sistema, versión 4.2.1.
Valgrind instalado si se desea utilizar la herramienta de depuración, version 3.15.0.
Flex instalado si se desea utilizar make flex, version 2.6.4.
Bison instalado si se desea modificar el analizador sintáctico, versión 3.5.1.
Readline instalado si se desea utilizar la entrada de comandos interactiva, versión 8.0-4.
📌 Consideraciones adicionales
Las variables deberan comenzar por una letra minuscula, seguido de letras mayusculas, minusculas, digitos o guiones bajos.
Las constantes deberan comenzar por una letra mayuscula, seguido de letras mayusculas y digitos.
Las funciones de la libreria math están escritas en minusculas.
Los comandos de la calculadora están escritos en minusculas como se podrá ver en el help().
Se pueden asignar valores a variables y modificarlas posteriormente.
Las constantes no pueden ser modificadas una vez definidas.
📌 Distribución de archivos
El proyecto está organizado de la siguiente manera:
- El directorio "sources" contiene el codigo fuente del programa, asi como los ficheros de Flex y Bison
- El directorio "includes" contiene los ficheros de cabecera del programa.
- El directorio "examples" contiene ejemplos de archivos de texto que pueden ser utilizados como entrada para el programa.
- El fichero "example.txt" contiene un conjunto de todos los comandos propios de la calculadora. Este fichero llama a su vez a otros ficheros de ejemplo.
- Los ficheros "mylib.so" y "mylib2.so" son librerías dinámicas que contienen funciones matemáticas adicionales, se llaman desde el fichero "example.txt".
📌 Nota
Las fugas de memoria "still reachable" detectadas por Valgrind son debidas a la librería readline y no a errores en el código del programa.
Se debe modificar example.txt con la ruta absoluta de la libreria que queramos usar