• Domingo 15 de Diciembre de 2024, 00:43

Autor Tema:  Compilar Flex con Dev C/C++  (Leído 3756 veces)

rifarca

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: py
    • Ver Perfil
    • http://richard.zzl.org
Compilar Flex con Dev C/C++
« en: Martes 24 de Agosto de 2010, 01:12 »
0
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
  1. int num_lineas = 0, num_caracteres = 0;
  2. %%
  3. n ++num_lineas; ++num_caracteres;
  4. . ++num_caracteres;
  5. %%
  6. main(){
  7. yylex();
  8. printf( "# de líneas = %d, # de caracteres. = %dn", num_lineas, num_caracteres );
  9. }
  10.  

2. Genero un archivo c (ejemplo.c)
Código: Text
  1. c:flex>flex -oejemplo.c ejemplo.lex
  2.  

3. Muevo los archivos a flex-ejemplo (ejemplo.c y ejemplo.lex)
Código: Text
  1. c:flex>move ejemplo.* c:flex-ejemplo
  2.  

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

  • Nuevo Miembro
  • *
  • Mensajes: 4
  • Nacionalidad: py
    • Ver Perfil
    • http://richard.zzl.org
Re: Compilar Flex con Dev C/C++ (solucionado)
« Respuesta #1 en: Jueves 26 de Agosto de 2010, 00:25 »
0
muy bien ya lo resolvi y comparto la solucion
1. Creamo el ejemplo.lex
Código: C
  1. int num_lineas = 0, num_caracteres = 0;
  2.    %%
  3.    n ++num_lineas; ++num_caracteres;
  4.     . ++num_caracteres;
  5.    %%
  6.     /*debe definir el  yyerror*/
  7.      void yyerror(){
  8.           printf("Error en la linea %d ", num_lineas);
  9.        }
  10.    /*debe definir yywarp*/
  11.     void yywrap(){
  12.          return 1;
  13.      }
  14.     /*se defini el main con argc y argv*/
  15.     main(int arc, char *argcv){
  16.    yylex();
  17.    printf( "# de líneas = %d, # de caracteres. = %dn", num_lineas, num_caracteres );
  18.    }
  19.  
2 compilamos ejemplo.lex  
Código: C
  1. flex -olexer.c ejemplo.lex 
  2.  
y obtengo el lexer.
3 Compilamos el Lexer.c
Código: C
  1. gcc lexer.c
  2.  
4 le passo un archivo desde linea de   comandos
Código: C
  1. lexer < ejemplo.txt 
  2.  
daraia como resultado
# de lineas = 2  y # de Caracteres = 15
si ejemplo.txt seria
Código: C
  1. sietes
  2. ochocient
  3.