Programacion

Páginas: 15 (3629 palabras) Publicado: 9 de junio de 2014
UAA – Sistemas Electrónicos

2

Compiladores

Eduardo Serna-Pérez

Análisis léxico (Scanner)

La fase de rastreo (scanner), tiene las funciones de leer el programa fuente como un archivo de
caracteres y dividirlo en tokens. Los tokens son las palabras reservadas de un lenguaje,
secuencia de caracteres que representa una unidad de información en el programa fuente. En
cada caso untoken representa un cierto patrón de caracteres que el analizador léxico
reconoce, o ajusta desde el inicio de los caracteres de entrada. De tal manera es necesario
generar un mecanismo computacional que nos permita identificar el patrón de transición entre
los caracteres de entrada, generando tokens, que posteriormente serán clasificados. Este
mecanismo es posible crearlo a partir de un tipoespecifico de maquina de estados llamado
autómata finito.

2.1

Función del analizador léxico

Es la primera fase de un compilador. Su principal función consiste en leer la secuencia de
caracteres del programa fuente, carácter a carácter, y elaborar como salida la secuencia de
componentes léxicos que utiliza el analizador sintáctico. El analizador sintáctico emite la orden
al analizadorléxico para que agrupe los caracteres y forme unidades con significado propio
llamados componentes léxicos (tokens). Los componentes léxicos representan:
o
o
o
o
o
o

Palabras reservadas: if, while, do, …
Identificadores: variables, funciones, tipos definidos por el usuario, etiquetas, …
Operadores: =, >, =, =
letra seguida de letras o números
cualquier literal numérica
caracteres entrecomillas

El analizador léxico recoge información sobre los componentes léxicos en sus atributos
asociados. Los tokens influyen en las decisiones del análisis sintáctico, y los atributos, en la
traducción de los tokens. En la practica los componentes léxicos suelen tener solo un atributo.
Para efectos de diagnostico, puede considerarse tanto el lexema para un identificador como el
numero delínea en el que se encontró por primera vez. Esta información puede ser
almacenada en la tabla de símbolos para el identificador (estructura de datos).
Para la cadena E=M*C**2 de ejemplo, los componentes léxicos y los valores de atributo
asociado son:







Tome en cuenta que ciertas parejas no necesitan un valor de atributo. Los atributos
relacionados con ese token deberán serconservados y transferidos a alguna estructura de
datos para que sean empleados en las siguientes etapas del análisis

2.3

Manejo de Buffer de entrada

Existen algunos aspectos de eficiencia relacionados con el manejo de buffer. Primero se
menciona un esquema de doble buffer de entrada que resulta útil como pre-análisis de la
entrada para identificar los componentes léxicos. El segundo esquemaintroduce algunas
técnicas útiles para aumentar la eficiencia del analizador léxico, empleando “centinelas”.
Hay veces en que el analizador léxico necesita analizar previamente varios caracteres, además
del lexema para un patrón, antes de poder anunciar una concordancia. Se pueden emplear
muchos esquemas de manejos de buffer, pero, aquí tan solo se señalarán algunos principios
básicos.

2 UAA – Sistemas Electrónicos

Compiladores

Eduardo Serna-Pérez

Parejas de buffer – Se utiliza un buffer dividido en dos mitades de N (1024 ó 512) caracteres
cada una, Se leen N caracteres de entrada en cada mitad del buffer con un orden de lectura del
sistema, en vez de invocar una instrucción de lectura para cada carácter de entrada. Si quedan
menos de N caracteres en la entrada,entonces se lee un carácter especial eof en el buffer
después de los caracteres de entrada. Es decir, eof marca el final del archivo fuente y es
distinto a cualquier carácter de la entrada.

E

=

M

*

C

*
*

Inicio
lexema

2
eof

frente

Se mantienen dos apuntadores en el buffer de entrada. La cadena de caracteres entre los dos
apuntadores es el lexema en curso. Al...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Programación
  • Programacion
  • Programacion
  • Programación
  • Programacion
  • Programacion
  • Programacion
  • Programacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS