#include "bool.h"
#include "equation.h"
+#include "equation_list.h"
+#include "parser_common.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');
-}
+#include "memdebug_debugger.h"
-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);
-}
-
-#define PARSE_ERROR(str) ParseError_set_pos_message(error, str, i, c)
+#define PARSE_ERROR(str) ParseError_set_pos_message(error, str, i + 1, c)
bool parser_equation(const char* line, size_t len, DLList* equation_list,
ParseError* error) {
char c;
Equation* eq;
for (i = 0; i < len; i++) {
+ c = line[i];
switch (state) {
case SEARCH_VAR: /* Busca el comienzo de una variable. */
if (!is_space(c)) {
} else if (c == '=') {
/* Es igual, empieza la expresión. */
state = EXP;
+ /* Calculo la longitud de la variable. */
+ var_len = i - var_start;
} else { /* es otra cosa */
PARSE_ERROR(
"un espacio, una letra, un número o un igual");