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

[0] Índice de Mensajes

Ir a la versión completa