Programación General > C/C++
Compilar Flex con Dev C/C++
(1/1)
rifarca:
Hola amigos de este foro soy nuevo, en fin..
Quiciera saber si alguien podria ayudarme en esta encrucijada:
Estoy probando el Flex sobre Windows y tengo el compilador Dev c/c++
1. Creo un archivo lex (ejemplo.lex)
--- Código: C ---int num_lineas = 0, num_caracteres = 0;%%n ++num_lineas; ++num_caracteres;. ++num_caracteres;%%main(){yylex();printf( "# de líneas = %d, # de caracteres. = %dn", num_lineas, num_caracteres );}
2. Genero un archivo c (ejemplo.c)
--- Código: Text ---c:flex>flex -oejemplo.c ejemplo.lex
3. Muevo los archivos a flex-ejemplo (ejemplo.c y ejemplo.lex)
--- Código: Text ---c:flex>move ejemplo.* c:flex-ejemplo
4. Trato de compilar(ejemplo.c)
Creo un proyecto nuevo y vacio llamado flex-ejemplo en la carpeta c:flex-ejemplo
y agrego la carpetas c:flexlib y c:flexinclude en opciones del compilador para el linker y
al compilar me da:
C:flex-ejemploejemplo.lex
In function `yylex':
Line 3:
`num_lines' undeclared (first use in this function)
(Each undeclared identifier is reported only once for each function it appears in.)
`num_chars' undeclared (first use in this function)
In function `main':
Line 10:
`num_lines' undeclared (first use in this function)
`num_chars' undeclared (first use in this function)
C:flex-ejemploMakefile.win [Build Error] [ejemplo.o] Error 1
desde ya gracias.. :good:
rifarca:
muy bien ya lo resolvi y comparto la solucion
1. Creamo el ejemplo.lex
--- Código: C ---int num_lineas = 0, num_caracteres = 0; %% n ++num_lineas; ++num_caracteres; . ++num_caracteres; %% /*debe definir el yyerror*/ void yyerror(){ printf("Error en la linea %d ", num_lineas); } /*debe definir yywarp*/ void yywrap(){ return 1; } /*se defini el main con argc y argv*/ main(int arc, char *argcv){ yylex(); printf( "# de líneas = %d, # de caracteres. = %dn", num_lineas, num_caracteres ); } 2 compilamos ejemplo.lex
--- Código: C ---flex -olexer.c ejemplo.lex y obtengo el lexer.
3 Compilamos el Lexer.c
--- Código: C ---gcc lexer.c 4 le passo un archivo desde linea de comandos
--- Código: C ---lexer < ejemplo.txt daraia como resultado
# de lineas = 2 y # de Caracteres = 15
si ejemplo.txt seria
--- Código: C ---sietesochocient
Navegación
Ir a la versión completa