descripcion de lex

Páginas: 25 (6098 palabras) Publicado: 10 de abril de 2013
PROGRAMACIÓN DE ANALIZADORES MEDIANTE LEX.
En este apartado y en el siguiente se describe una herramienta particular, llamada Lex, que ha sido ampliamente usada para especificar analizadores léxicos para una variedad de lenguajes. Se hará referencia a la herramienta como el compilador Lex, y a su especificación de entrada como el lenguaje Lex. La discusión de una herramienta existente nospermitirá mostrar como la especificación de patrones usando expresiones regulares puede estar combinada con acciones, como por ejemplo, crear entradas en una tabla de símbolos, expandir macros, o incluso generar documentación automáticamente.
El programa Lex está diseñado para ser utilizado junto con el programa Yacc, que como se verá en el capítulo IV es un generador de analizadores sintácticos.
Lexsuele ser usado según la siguiente figura:

Primero, se prepara una especificación de un analizador léxico creando un programa contenido, por ejemplo en el fichero prog.l, en lenguaje Lex. Entonces, prog.l se pasa a través del compilador Lex para producir un programa en C, que por defecto se denomina lex.yy.c en el sistema operativo UNIX. Éste consiste en una representación tabular de undiagrama de transición construido a partir de las expresiones regulares de prog.l, junto con una rutina estándar que usa la tabla de reconocimiento de lexemas. Las acciones asociadas con expresiones regulares en prog.l son trozos de código C, y son transcritas directamente a lex.yy.c. Finalmente, lex.yy.c se pasa a través del compilador C para producir un programa objeto, que por defecto se llama a.out,el cual es el analizador léxico que transforma una entrada en una secuencia de tokens.
Un programa Lex consta de tres secciones:

%%

%%

La sección de declaraciones incluye declaraciones de variables, constantes y definiciones regulares. Las definiciones regulares son sentencias usadas como componentes de las expresiones regulares que aparecen en las reglas.
Las reglas de traducción deun programa Lex son sentencias de la forma:
p1 {acción 1}
p2 {acción 2}
... ...
pn {acción n}
Donde cada pi es una expresión regular y cada accióni es un fragmento de programa, describiendo qué acción debe realizar el analizador léxico cuando el patrón pi se corresponde con un lexema. En Lex, las acciones están escritas en C.
La tercera sección contiene cualesquiera procedimientos auxiliaresque sean requeridos por las acciones. Alternativamente, estos procedimientos pueden ser compilados separadamente y montados junto con el analizador léxico.
Un analizador léxico creado por Lex funciona en concierto con un analizador sintáctico de la siguiente manera. Cuando es activado por el analizador sintáctico, el analizador léxico comienza leyendo de su entrada un carácter a la vez, hasta queencuentre el prefijo más largo de la entrada que ha correspondido con una de las expresiones regulares pi. Entonces, ejecuta accióni, que típicamente devolverá el control al parser. Pero, si no lo hace, entonces el analizador léxico procede a buscar más lexemas, hasta que una acción contenga una sentencia return o se lea el fichero completo. La búsqueda repetida de lexemas hasta una devoluciónexplícita del control permite que el analizador léxico procese los espacios en blanco y comentarios convenientemente.
El analizador léxico devuelve un entero, que representa el token, al analizador sintáctico. Para pasar un valor de atributo con información sobre el lexema, se puede usar una variable global llamada y ylval. Esto se hace cuando se use Yacc como generador del analizador sintáctico.Los analizadores léxicos, para ciertas construcciones de lenguajes de programación, necesitan ver adelantadamente más allá del final de un lexema antes de que puedan determinar un token con certeza. En Lex, se puede escribir un patrón de la forma r1/r2, donde r1 y r2 son expresiones regulares, que significa que una cadena se corresponde con r1, pero sólo si está seguida por una cadena que se...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • lexo
  • Lexar
  • lexa
  • Lex
  • Lex
  • Lexo
  • Dura lex, sed lex
  • lex dura lex

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS