Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/08/2010, 12:47
Javi_Portillo
 
Fecha de Ingreso: julio-2010
Mensajes: 7
Antigüedad: 14 años, 4 meses
Puntos: 0
Bus error con punteros y estructuras

Buenas tardes,
Recurro a vosotros ya como última opción porque no consigo solucionar un "Bus error" que me genera mi código al manejar punteros y que no sé cómo solucionar.

Estoy implementando un compilador con Flex y Yacc y en la parte de Flex incluyo el siguiente código C, que he probado a sacarlo a un fichero .c y me sigue dando el mismo fallo:

Código:
	#include <stdlib.h>
	#include <stdio.h>
	#include <string.h>
	#include "y.tab.h"
	
	typedef struct reserv {/* tipo creado para las palabras reservadas de C */
    	char *palabra;
    	int  token;
	} reservadas;
	
	reservadas reserv[] = {
		{"if", 3},
		{"else", 4},
		{"while", 5},
		{"main", 6},
		{"printf", 7},
		{"include", 8},
		{"return", 9},
		{"nil", 0}
	};
	char *tipos[] = {"int", "void", "nil"}; /* nil añadido para marcar el fin de los tipos */
	
	extern int lineno;
	extern FILE *yyin;
	
	void yyerror(char *);
	int reservada(char *palabra);
	
int reservada(char *palabra) {
	int i = 0;
	int tipo = 1;

	while (strcasecmp(reserv[i].palabra, "nil")) {
    	if (strcasecmp(reserv[i].palabra, palabra) == 0) {
    		tipo = reserv[i].token;
 	 	}
 	 	i++;
    }
    
    while (strcasecmp(tipos[i], "nil")) {
    	if (strcasecmp(tipos[i], palabra) == 0) {
    		tipo = 2;
 	 	}
 	 	i++;
    }
	
	return tipo;
}

int main() {
	int tipo = reservada("while");
	printf("%d", tipo);
	return tipo;
}
Por favor, ¿algún alma caritativa al que le tenga que deber aprobar mi última asignatura de la carrera?

Un saludo, y muchas gracias.

Última edición por Javi_Portillo; 31/08/2010 a las 13:34