Analizador lexico

Solo disponible en BuenasTareas
  • Páginas : 5 (1117 palabras )
  • Descarga(s) : 0
  • Publicado : 5 de diciembre de 2010
Leer documento completo
Vista previa del texto
Proceso de análisis léxico.
El trabajo del analizador léxico es leer los caracteres del código fuente y formarlos en unidades lógicas para que lo aborden las partes siguientes del compilador . Las unidades lógicas que genera el analizador léxico se denominan tokens .
Los tokens son entidades lógicas que por lo regular se definen como un tipo enumerado, esto es, el analizador léxico lee loscaracteres de entrada y los agrupa en “objetos token”; un token lleva información adicional en forma de valores de atributos, entonces un nombre token es un símbolo abstracto que representa u tipo de unidad léxica, por lo que con frecuencia nos referiremos a un token por su nombre.
A una secuencia de caracteres de entrada que conforman un solo token se le conoce como lexema , entonces se puede decirque el analizador léxico separa a un analizador sintáctico de la representación tipo lexema de los tokens.
Un patrón es una descripción de la forma que pueden tomar los lexemas de un token;p.e. en el caso de una palabra clave el patrón es la secuencia de caracteres que forman la palabra clave.
Ejemplo:
Se tiene la siguiente instrucción:
printf ( “ Total = %d\n” , puntuación);
tanto printfcomo puntuación son lexemas que coinciden con el patrón para el token id y “Total = %d\n” es un lexema que coincide con literal.
En un lenguaje de programación los siguientes tokens cubrenla mayoría de definiciones:


TOKEN | DESCRIPCION INFORMAL | LEXEMA DE EJEMPLO |
if | Caracteres i , f | if |
else | Caracteres e,l,s,e | else |
comparación | < o > o <= o >=o == o != | <= , != |
id | Letra seguida por letras y dígitos | pi, puntuación, D2 |
número | Cualquier constante numérica | 3.14159, 0 , 6.02E23 |
literal | Cualquier cosa excepto “ ,rodeada por “ ‘s | “core dumped” |
Atributos para los tokens.
Cuando más de un lexema coincide con un patrón, el analizador léxico debe proporcionar a las siguientes fases del compiladorinformación adicional sobre el lexema específico que coincidió, así que independientemente del nmobre del token se requerirá el valor del atributo o el atributo propio.
Ejemplo:
Número -> 0
Número-> 1
Ambos patrones tienen el mismo nombre de token, así que el analizador léxico devuelve entonces un valor de atributo que describe al lexema que representa ese token.
Errores Léxicos.
Porejemplo en caso de haber confusión entre tokens el analizador léxico debe de ser capaz de proceder con una estrategia de recuperación de errores y la más común es la llamada Modo Pánico, donde se eliminan caracteres sucesivos del resto de la entrada, hasta que el analizador léxico pueda encontrar un token bien formado al principio de lo que haya quedado de entrada.
También hay otras posiblesacciones de recuperación de errores que son:
1. Eliminar un carácter del resto de la entrada.
2. Insertar un carácter faltante en el resto de la entrada.
3. Sustituir un carácter por otro.
4. Transponer dos caracteres adyacentes.

El analizador léxico puede resolver dos problemas, utilizando una tabla para guardar cadenas de caracteres por:
* Representación simple . Unatabla de cadenas puede aislar al resto del compilador de la representación de las cadenas, ya que las fases del compilador pueden trabajar con referencias o apuntadores a la cadena en la tabla.
* Palabras reservadas. Las palabras reservadas pueden implementarse mediante la inicialización de la tabla de cadenas con las cadenas reservadas y sus tokens. Cuando el analizador léxico lee una cadena olexema que podría formar un identificador, primero verifica si el lexema se encuentra en la tabla de cadenas.

En Java una tabla de cadenas puede definirse como una Hash table utilizando una clase con este nombre Hashtable:

Hashtable palabras= new Hashtable();

Esta declaración establece a palabras como una tabla hash predeterminada, que asigna claves a valores, la cual puede ser empleada...
tracking img