ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Cofigurar Flex En Windows


Enviado por   •  22 de Enero de 2014  •  1.150 Palabras (5 Páginas)  •  289 Visitas

Página 1 de 5

Cómo configurar Flex en Windows

¿A cuántos de nosotros, durante nuestras carreras en la Universidad, nos han pedido como proyecto hacer un analizador léxico, hacer un compilador o cosas afines?, ¿A cuántos de nosotros se nos pasó el tiempo, y sobre la hora queremos desarrollar estos proyectos desde cero? ¿A cuántos de nosotros nos fascinaría estructurar nuestro propio lenguaje o quizás desarrollar nuestro propio compilador? ... Pues en este post les presentó la herramienta básica de quien se aventura (y también para quién solo está de pasada) en este maravilloso mundo de los compiladores y otros programas que no son exactamente compiladores, pero que presentan algunas características de estos como los coloreadores de código.

Flex es una herramienta para generar escáneres, es decir programas que reconocen patrones léxicos en un texto. En otras palabras, flex se encarga de convertir esos patrones léxicos en tokens que pueden servir para estructurar una gramática (en el caso de un compilador) o para colorear código (En caso de un coloreador de código).

A continuación mostraré un ejemplo de script para flex:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62 %{

#include <stdio.h>

#include <conio.h>

int num_lineas = 0, num_caracteres = 0;

%}

%option noyywrap

%option yylineno

letra [a-zA-Z]

digito [0-9]

binario [0-1]

ignora " "|\t|\n

operarit *|+|-|/

operlog &|$

comparador <|>|<=|>=|==|!=

%%

{ignora}+ {;}

{letra}({letra}|{digito})* {printf("IDENTIFICADOR\n");}

{letra}+ {printf("CADENA\n");}

{binario}+ {printf("BOOLEANO\n");}

{digito}+ {printf("ENTERO\n");}

{digito}+"."{digito}+ {printf("REAL\n");}

{comparador} {printf("COMPARADOR\n");}

":=" {printf("ASIGNADOR\n");}

";" {printf("PUNTO_COMA\n");}

"!=" {printf("DIFERENCIA\n");}

"," {printf("COMA\n");}

"==" {printf("IGUAL\n");}

"." {printf("PUNTO\n");}

">=" {printf("MAYOR_IGUAL\n");}

"<=" {printf("MENOR_IGUAL\n");}

"(" {printf("OPEN_PARENTESIS\n");}

")" {printf("CLOSE_PARENTESIS\n");}

">" {printf("MAYOR\n");}

"<" {printf("MENOR\n");}

"{" {printf("OPEN_LLAVE\n");}

"}" {printf("CLOASE_LLAVE\n");}

"+" {printf("SUMA\n");}

"-" {printf("RESTA\n");}

"*" {printf("MUTIPLICACION\n");}

"/" {printf("DIVISION\n");}

"&" {printf("AND\n");}

"$" {printf("OR\n");}

\n ++num_lineas;

. {printf("ERROR LEXICO EN LINEA %d \n",yylineno);}

%%

int main(int argc,char *argv[])

{

char NomArch[30];

printf("Ingrese nombre de archivo: ");

gets(NomArch);

if ((yyin = fopen(NomArch, "rt")) == NULL)

{

printf("\nNo se puede abrir el archivo: %s\n", NomArch);

}

else

{

yylex();

}

fclose(yyin);

getch();

return 0;

}

Ahora bien, este script debemos enviarlo al Flex para que nos retorne un archivo en lenguaje C el cuál podemos integrar a nuestro proyecto que estamos realizando, de manera sencilla.

Lo primero que debemos hacer es descargar el archivo djgpp.rar, crear una carpeta llamada DJGPP en la unidad D:\ y descomprimir todos los archivos del *.rar aquí.

Luego debemos crear una carpeta en la unidad D:\ llamada PRUEBAS. Con esto será suficiente, pero es bueno recordar que las rutas son relativas. Eso sí, al momento de configurar las variables de entorno debemos tener cuidado de la ubicación de ambas carpetas.

Bueno, el siguiente paso es configurar el Flex para lo cuál haremos lo siguiente:

1. Presionar window+r y escribir cmd. Se abrirá la consola del windows, ahí debemos escribir lo siguiente:

?

1

2

3

4

5 d:

cd PRUEBAS

set djgpp=d:\djgpp\djgpp.env

set path=d:\djgpp\bin

flex -oanalisis.c FLE.L

Con esto se generará un archivo llamado analisis.c el cuál podemos integrarlo a nuesto proyecto en C. En este caso el archivo tiene su función main por lo que puede trabajar por si solo. Al ejecutar y enviarle un archivo con patrones léxicos veremos que nos devolverá los tokens correspondientes.

Acá les dejo un proyecto en Dev-C++, en la carpeta hay un archivo llamado test.txt el cuál es la entrada al programa.

Espero les sea de utilidad, y en un siguiente post explicaré como utilizar el Bison para analizar sintácticamente estructuraras más complejas como son las gramáticas.

...

Descargar como  txt (4.9 Kb)  
Leer 4 páginas más »
txt