Generador De Analizadores Lexicos
Enviado por adnr • 13 de Julio de 2013 • 475 Palabras (2 Páginas) • 1.156 Visitas
GENERADORES DE ANALIZADORES LEXICOS
LEX-FLEX
FLEX LEX
Que es: Una herramienta para la generación de programas que realizan concordancia de patrones en texto.
Flex (Fast Lexical Analyzer Generator) es un generador automático de analizadores léxicos en lenguaje C.
Flex es software GNU creado a partir de lex, un generador de analizadores léxicos muy popularizado porque se distribuye gratuitamente con las versiones más comunes de Unix (es una utilidad estándar desde la séptima edición de Unix). Lex es un programa para generar analizadores léxicos .
Lex se utiliza comúnmente con el programa yacc que se utiliza para generar análisis sintáctico.
Es el analizador léxico estándar en los sistemas Unix.
Se incluye en el estándar de POSIX.
Características Entrada: un fichero texto con la especiación de los componentes léxicos, las expresiones regulares que los definen.
Este analizador esta especialmente diseñado para usarse conjuntamente con bison (yacc), un metacompilador.
Una especiación (o programa) flex es un fichero (usualmente con la extensión .l) compuesto por tres partes separadas por e%%:
Declaraciones
%%
Reglas
%%
Procedimientos auxiliares
Lex consiste de tres partes: definiciones, reglas y rutinas auxiliares, separadas por % %.
La sección de declaraciones incluye declaraciones de variables, constantes y definiciones regulares, que constituyen una manera cómoda de utilizar expresiones regulares largas en la sección de reglas; por ejemplo: letra [A-Za-z]
• La sección de reglas especifica los patrones a reconocer y las acciones
asociadas a éstos, de forma similar a la que utiliza awk:
patrón {acciones en C}
• La sección de rutinas permite definir funciones auxiliares en C, incluida la
Función main(). Por defecto, lex proporciona un main() que
llama a la función y ylex().
Como funciona: Funcionamiento:
En cada llamada, yylex():
1 toma caracteres de la entrada hasta que machea una E.R.
2 el texto que macheado se almacena en la variable yytext
3 se ejecutan las acciones asociadas al patrón de esa E.R.
Acciones:
Puede ser simplemente el procesamiento del texto macheado para enviarlo de nuevo a la salida.
En otras ocasiones podrán suponer la alteración de variables del código de usuario y la devolución a la rutina que llama a yylex() (mediante return) de un valor numérico que identifique al TOKEN reconocido Al contrario que sed y awk, lex no es un analizador sino un generador de Analizadores. Esto permite incluir de manera cómoda un analizador a medida en
cualquier programa:
...