1 /* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t:
3 * Taller de Programación (75.42).
6 * Programa calculadora.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: mar sep 16 02:24:44 ART 2003
19 * Hace varios chequeos para probar si anda bien la función
20 * parser_expression().
27 #include "memdebug_debugger.h"
28 #include "parser_expression.h"
30 #include "variable_list.h"
34 * Programa para probar parser_expression().
36 * \return EXIT_SUCCESS si se realizó bien, EXIT_FAILURE si no.
38 int main(int argc, char* argv[]) {
39 /* Declaración de variables. */
48 fprintf(stderr, "Debe pasar expresiones a evaluar como parámetros.\n");
49 fprintf(stderr, "Ejemplo: %s ' (50 + 10 ) *2/(-1)'\n", argv[0]);
55 fprintf(stderr, "No se pudo crear la lista.\n");
59 var = Variable_new("a", 0, 3);
61 fprintf(stderr, "No se pudo crear la variable.\n");
64 Variable_set_value(var, "5", 0, 1);
66 if (!DLList_push(lista, var)) {
67 fprintf(stderr, "No se pudo agregar variable a la lista.\n");
71 DLList_variable_print(lista, stdout);
73 error = ParseError_new();
75 fprintf(stderr, "No se pudo crear el error.\n");
79 for (i = 1; i < argc; i++) {
80 arg = strutil_copy_stripspaces(argv[i], strlen(argv[i]));
82 fprintf(stderr, "No se pudo crear copia de argv[%u].\n", i);
85 if (!parser_expression(arg, strlen(arg), &result, lista,
88 ParseError_print(error, stderr);
90 printf("Resultado %u: %f\n", i, result);
95 DLList_variable_delete(lista);
97 ParseError_delete(error);
99 /* Veo si pierdo memoria. */