Vous êtes sur la page 1sur 2

ATRIBUTOS DE LOS COMPONENTES LEXICOS

Cuando concuerda con un lexema ms de un patrn, el analizador lxico debe proporcionar


informacin adicional cobre el lexema concreto que concord con las siguientes fases de
compilador. Por ejemplo, el patrn num concuerda con las cadenas 0 y 1, pero es indispensable
que el generador de cdigo conozca que cadena fue realmente la que se emparejo.
El analizador lxico recoge informacin sobre los componentes lxicos en sus atributos asociados.
Los componentes lxicos influyen en las decisiones del anlisis sintctico, y los atributos, en la
traduccin de los componentes lxicos. En la prctica, los componentes lxicos suelen tener un
solo atributo.
Un apuntador a la entrada de la tabla de smbolos donde se guarda la informacin sobre el
componente lxico; el apuntador se convierte en el atributo del componente lxico. A afecto de
diagnstico, puede considerarse tanto el lexema para un identificador como el nmero de lnea
en el que este se encontr por primera vez. Estos dos elementos de informacin se pueden
almacenar en la entrada de la tabla de smbolos para el identificador.
Ejemplo: los componentes lxicos y los valores de atributo asociados para la proposicin de
FORTRAN.
E = M * C ** 2
Se escriben a continuacin como una secuencia de parejas:


Obsrvese que en ciertas parejas no se necesitan un valor de atributo: el primer componente es
suficiente para identificar el lexema. En este pequeo ejemplo. Se ha dado al componente lxico
nm un atributo de valor entero. El compilador puede almacenar la cadena de caracteres que
forma un numero en una tabla de smbolos y dejar que el atributo del componente lxico num sea
un apuntador a la entrada de la tabla.

ERRORES LEXICOS
Son pocos los errores que se pueden detectar simplemente en el nivel lxico poruqe un analizador
lxico tiene una visin muy restringida de un programa fuente. Si aparece la cadena fi por vez en
un programa de C en el contexto
Fi ( a == f(x) )
Un analizador lxico no puede distinguir si fi es un error de escritura de la palabra clave if o si un
identificador de funcin no declarado. Como fi es un identificador valido, el analizador lxico debe
devolver el componente lxico de un identificador y dejar que alguna otra fase del compilador su
ocupe de los errores.
Pero. Supngase que surge una situacin en la que el analizador lxico no puede continuar porque
ninguno de los patrones concuerda con un prefijo de la entrada restante. Tal vez la estrategia de
recuperacin mas cencilla sea la recuperacion en modo de panico. Se borran caracteres
sucesivos de la entrada restante hasta que el analizador lxico pueda encontrar un componente
lxico bien formado. Esta tcnica de recuperacin puede confundir en ocaciones al analizador
sintctico, pero en una ambiente de computacin interactivo puede resultar bastante adecuada.
Otras posibles acciones de recuperacin de errores son:
1. Borrar un carcter extrao
2. Insertar un carcter que falta
3. Reemplazar un carcter incorrecto por otro correcto
4. Intercambiar dos caracteres adyacentes
Se puede probar este tipo de transformaciones de error para intentar reparar la entrada. La ms
sencilla de tales estrategias consiste en observar si un prefijo de la entrada restante se puede
transformar en un lexema valido mediante una sola transformacin de error. Esta estrategia da
por supuesto que la mayora de los errores lxicos se deben a una sola transformacin de error,
suposicin que normalmente. Pero no siempre, se cumple en la prctica.

Una forma de encontrar los errores en un programa consiste en calcular el nmero mnimo de
transformaciones necesarias para transformar el programa errneo en otro que este
sintcticamente bien construido. Se dice que el programa errneo tiene K errores cuando la
secuencia ms corta de transformaciones de error que lo transformara en algn programa valido
tiene la longitud k. la correccin de errores de distancia mnima es un criterio terico apropiado,
pero no se suele usar en la prctica porque su aplicacin es demasiado costosa.
Sin embargo, algunos compiladores experimentales han empleado el criterio de la distancia
mnima para hacer correcciones locales

Vous aimerez peut-être aussi