[C con Clase] Punteros extern flex

vicente lozano vicentelozano en gmail.com
Mie Mayo 9 16:29:31 CEST 2012


Hola buenas,

 Tengo una dudilla a ver si me podeis echar una mano.

 Estoy haciendo un proyecto con bison, flex y C (un compliador para un
lenguaje ficticio).

 Hay una libreria para tratamiento de errores en la que se declara:

extern int *lineno*,*linepos*;
extern char *yytext*[];

y se redefine:

void *yyerror *(char **mens*)
{
fprintf (stderr, "ERROR SINTACTICO! (%d, %d, %s): %s\n", *lineno*, *linepos*,
*yytext*, *mens*);
exit (1);
}

Esta funcion la llama bison cuando se produce un error sintactico y las
variables externas son de flex.

lineno lleva el numero de la linea
linepos lleva la posicion dentro de la linea
yytext[] lleva la cadena de texto que corresponde al ultimo "token" leido
del fichero fuente

El problema es que aunque cuando hago printf en el propio funte flex de
yytext aparece la cadena correctamente pero al usar la funcion de error
yyerror sale caracteres extraños como si la memoria donde se encuentra el
puntero se hubiera perdido.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120509/e4307f7d/attachment.html>


Más información sobre la lista de distribución Cconclase