Programa lex

Solo disponible en BuenasTareas
  • Páginas : 6 (1293 palabras )
  • Descarga(s) : 0
  • Publicado : 11 de octubre de 2010
Leer documento completo
Vista previa del texto
TEMA: PROGRAMA LEX

ABSTRACTO

El lex es un generador de programas diseñado para el proceso léxico de cadenas de caracteres. El programa acepta una especificación, orientada a resolver un problema de alto nivel para comparar literales de caracteres, y produce un programa C que reconoce expresiones regulares. Estas expresiones las especifica el usuario en las especificaciones fuente que se ledan al lex.
El código lex reconoce estas expresiones en una cadena y divide en cadenas de caracteres que coinciden con las expresiones. En los bordes entre los literales, se ejecutan las secciones de programas proporcionados por el usuario. El fichero fuente lex asocia las expresiones regulares y los fragmentos de programas.

El lex convierte las expresiones y acciones del usuario en unprograma C llamado yylex. El programa yylex reconoce expresiones en un flujo y lleva a cabo las acciones especificadas para cada expresión a medida que se va detectando.

MARCO TEÓRICO

Formalmente, podemos definir a lex como una herramienta para construir analizadores léxicos o "lexers". Un lexer lee de un flujo de entrada cualquiera, y la divide en unidades léxicas (la tokeniza), para serprocesada por otro programa.

Para escribir una especificación léxica en lex, es necesario crear un conjunto de patrones (Expresiones Regulares), mismos, que cuando el programa este completo, van a ser reconocidos como tokens o unidades léxicas.

Lex no produce un programa compilado, lo que hace, es traducir esa especificación a C, incluyendo una rutina llamada yylex(), que es la usada para iniciaren análisis de la entrada.
La entrada es tomada de yyin, que por defecto su valor es stdin, es decir, la pantalla o terminal, pero este valor puede ser modificado por cualquier apuntador a un archivo.
También es posible leer la entrada desde un arreglo de caracteres u otros medios, para cual es necesario implementar algunas funciones de lex.

El Lex es una herramienta de software quepermite resolver una amplia variedad de problemas como el procesamiento de textos, deciframiento de código, escritura de compiladores y otros tantos. En el área del procesamiento de textos se pueden hacer chequeos de ortografía; en el deciframiento de código, podemos traducir ciertos patrones de caracteres por otros. Y en el área de la escritura de ocmpiladores se puede determinar qué marcas o tokensestán dentro del programa a compilar. El común denominador de todas estas tareas es el de reconocer diferentes cadenas de caracteres que satisfacen ciertas características. En el caso de la escitura de compiladores, el desarrollo de la habilidadpara resolver el problema requiere de la implementción de un analizador léxico en dicho compilador.
No es esencial el uso de Lex para manejar problemas deesta naturaleza pues podríamos escribir programas en otros lenguajes estándares como el C. De hecho lo que Lex hace es producir tales programas de C. Lex es considerado por algunos como un generador de programas. Lex ofrece una manera más fácil y veloz para crear programas que se encarguen de las tareas antes mencionadas. Su debilidad es que frecuentemente se producen programas más grandes de lonecesario que dan por resultado ejecuciones más lentas de lo que podrían ser. En cierto sentido esta desventaja puede resultar de poca importancia al compararla con el potencial que Lex ofrece.
Para entender el funcionamiento de Lex observamos el diagrama de la figura 1. Comencemos por el código en Lex, también conocido como especificación Lex, que el programador escribe.
El código en Lex consistede una lista de reglas que especifican secuencias de caracteres (expresiones) a buscar en un texto y las acciones a tomar cuando se halla dicha expresión. El código se lee y se traduce por el generador de programas en un código en C que a su vez, debe ser compilado para que genere el programa ejecutable que hace el análisis léxico. Cabe mencionar que este procedimiento no es automático....
tracking img