]> git.llucax.com Git - z.facultad/75.42/calculadora.git/blobdiff - parser_variable.c
Últimos retoques.
[z.facultad/75.42/calculadora.git] / parser_variable.c
index ce19f9ba149976c57f8a21444b7348bebe3a11b9..cf9a0269ab0b735b60c64a349409b4ecc5c88574 100644 (file)
  * $Id$
  */
 
  * $Id$
  */
 
+#include "parser_variable.h"
 #include "bool.h"
 #include "variable.h"
 #include "bool.h"
 #include "variable.h"
-#include "parser_variable.h"
+#include "variable_list.h"
+#include "parser_common.h"
 #include "parseerror.h"
 #include "dllist.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 
 #include "parseerror.h"
 #include "dllist.h"
 #include <stdlib.h>
 #include <stdio.h>
 #include <string.h>
 
-bool is_space(char c) {
-    return (c == ' ') || (c == '\t');
-}
-
-bool is_number(char c) {
-    return ('0' <= c) && (c <= '9');
-}
-
-bool is_alpha(char c) {
-    return (c == '_') || (('a' <= c) && (c <= 'z')) || (('A' <= c) && (c <= 'Z'));
-}
-
-bool is_alpha_num(c) {
-    return is_number(c) || is_alpha(c);
-}
-
-bool DLList_variable_find(DLList* l, Variable* var) {
-    Variable* v;
-    for (v = DLList_begin(l); DLList_have_more(l); v = DLList_next(l)) {
-        if (!strcmp(v->variable, var->variable)) {
-            return TRUE;
-        }
-    }
-    return FALSE;
-}
-
-size_t DLList_variable_print(DLList* l, FILE* fp) {
-    size_t cant = 0;
-    Variable* v;
-    for (v = DLList_begin(l); DLList_have_more(l); v = DLList_next(l)) {
-        cant += Variable_print(v, fp);
-    }
-    return cant;
-}
-
-void DLList_variable_delete(DLList* l) {
-    if (l) {
-        while (!DLList_empty(l)) {
-            Variable_delete((Variable*)DLList_pop(l));
-        }
-    }
-    DLList_delete(l);
-}
+#include "memdebug_debugger.h"
 
 #define PARSE_ERROR(str) ParseError_set_pos_message(error, str, i + 1, c)
 
 
 #define PARSE_ERROR(str) ParseError_set_pos_message(error, str, i + 1, c)
 
@@ -121,6 +81,8 @@ bool parser_variable(const char* line, size_t len, DLList* variable_list,
                     state = VAL;
                     /* Pone el inicio del valor. */
                     val_start = i;
                     state = VAL;
                     /* Pone el inicio del valor. */
                     val_start = i;
+                    /* Calcula la longitud como si fuera hasta el final. */
+                    val_len = len - i;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
@@ -139,6 +101,8 @@ bool parser_variable(const char* line, size_t len, DLList* variable_list,
                     state = MIN;
                     /* Pone el inicio del mínimo. */
                     min_start = i;
                     state = MIN;
                     /* Pone el inicio del mínimo. */
                     min_start = i;
+                    /* Calcula la longitud como si fuera hasta el final. */
+                    min_len = len - i;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
@@ -159,7 +123,7 @@ bool parser_variable(const char* line, size_t len, DLList* variable_list,
                     max_start = i;
                     /* Pone la longitud del máximo hasta el final (ya no hay más
                      * valores a buscar). */
                     max_start = i;
                     /* Pone la longitud del máximo hasta el final (ya no hay más
                      * valores a buscar). */
-                    max_len = i - len;
+                    max_len = len - i;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
                 }
                 /* Si es espacio, no hace nada, deja que siga. */
                 break;
@@ -234,7 +198,7 @@ bool parser_variable(const char* line, size_t len, DLList* variable_list,
         return FALSE;
     }
     /* Ahora sí, la puedo agregar a la lista de variables. */
         return FALSE;
     }
     /* Ahora sí, la puedo agregar a la lista de variables. */
-    if (DLList_variable_find(variable_list, var)) {
+    if (DLList_variable_find(variable_list, var->variable)) {
         /* Si ya había uno, lo borro. */
         DLList_remove_current(variable_list);
     }
         /* Si ya había uno, lo borro. */
         DLList_remove_current(variable_list);
     }