Título: duda con flex y bison Publicado por: yoxter en 27 Agosto 2012, 03:04 am Saludos,
estoy aprendiendo flex y bison bajo c, pero me surge una duda, solo he visto lo basico de flex y me doy cuenta que es como un interprete (al estilo rails), es decir no puedo utilizarlo para traducir directamente el codigo que introduzca a c y luego compilar el codigo de c. espero haberme expresado correctamente. Título: Re: duda con flex y bison Publicado por: fabianjsm en 27 Agosto 2012, 03:44 am Flex es un compilador cruzado, es decir, recibe un código y genera código para otro compilador. No deberías modificar su salida, cada vez que quieras realizar un cambio modificas el fuente, generalmente con extensión l, y vuelves a procesarlo con flex.
La salida de flex puede ser directamente compilada, sin más procesamiento. Si tienes el main dentro del fuente de lex, su salida puede ser compilada y enlazada para genera el ejecutable. Este es un ejemplo clásico de este caso: Código
Procesar con flex y compilar: Código
Título: Re: duda con flex y bison Publicado por: yoxter en 27 Agosto 2012, 04:04 am Flex es un compilador cruzado, es decir, recibe un código y genera código para otro compilador. No deberías modificar su salida, cada vez que quieras realizar un cambio modificas el fuente, generalmente con extensión l, y vuelves a procesarlo con flex. La salida de flex puede ser directamente compilada, sin más procesamiento. Si tienes el main dentro del fuente de lex, su salida puede ser compilada y enlazada para genera el ejecutable. Este es un ejemplo clásico de este caso: Código
Procesar con flex y compilar: Código
Saludos gracias por la respuesta. eso es a lo que me refiero el archivo que genereas a partir del lex.yy.c es mas parecido a un interprete, lo que quiero (sin animo de crear nada serio) es un compilador. pd : el codigo deberia ir asi Código
Título: Re: duda con flex y bison Publicado por: fabianjsm en 29 Agosto 2012, 05:26 am Tienes razón, modifique el código y lo compile para probar
Código
'%option noyywrap' para que no requiera esta función. Lo compilé y lo probé de este modo: Código
Esta fue la salida: 193 caracteres en 19 lineas |