You are on page 1of 2

3.

6 GENERADORES DE CDIGO LXICO: LEX Y FLEX LEX es un programa para generar analizadores lxicos (en ingls scanners o lexers). LEX, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador lxico estndar en los sistemas Unix, y se incluye en el estndar de POSIX. LEX toma como entrada una especificacin de analizador lxico y devuelve como salida el cdigo fuente implementando el analizador lxico en C. Funcionamiento De LEX

Archivo

FLEX es una herramienta para generar escneres: programas que reconocen patrones lxicos en un texto. FLEX es una reescritura de la herramienta LEX del Unix de AT&T (aunque las dos implementaciones no comparten ningn cdigo), con algunas extensiones e incompatibilidades, de las que ambas conciernen a aquellos que desean escribir analizadores aceptables por cualquier implementacin. FLEX lee los archivos de entrada dados, o la entrada estndar si no se le ha indicado ningn nombre de archivo, con la descripcin de un escner a generar. La descripcin se encuentra en forma de parejas de expresiones regulares y cdigo C, denominadas reglas.

Uso de FLEX Archivo

Estructura de una especificacin y Tres partes separadas por el smbolo % %. y Las dos primeras son obligatorias, aunque pueden estar vacas. < seccin de declaraciones > %% < seccin de reglas y acciones > %% < seccin de rutinas de usuario > Seccin de declaraciones Cdigo C necesario para las acciones asociadas a los patrones: El cdigo C ir entre % y %, ser copiado tal cual a lex.yy.c Generalmente sern #include, #define y estructuras o variables del cdigo de usuario afectadas por las acciones: Seccin de reglas Formato: [exp. reg. 1] [accin 1] .... [exp. reg. n] [accin n] Es la seccin ms importante; asocia patrones a sentencias de C. Los patrones son simplemente expresiones regulares. Cuando el lexer encuentra un texto en la entrada que es asociable a un patrn dado, ejecuta el cdigo asociado de C. sta es la base del funcionamiento de LEX. Manejo de ambigedades Si la entrada empareja ms de una expresin regular se elegir la expresin que empareje mayor nmero de caracteres. Si el nmero caracteres emparejados es el mismo, se elige a la que aparezca primero en el archivo FLEX Seccin de rutinas de usuario Esta seccin se puede escribir cdigo C adicional, bien funciones llamadas desde las acciones de las reglas o, en el caso de programas pequeos, suelen incluirse las funciones main() y yywrap() propias del usuario.

You might also like