Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Autómata Finito......................................................................................2
Analizador Léxico...................................................................................6
FUNCIÓN DEL ANALIZADOR LÉXICO..................................................................8
Manejo De Buffer.................................................................................10
MANEJO DE LOS BUFFERS DE ENTRADA.......................................................11
PAREJAS DE BUFFERS.......................................................................................12
Tabla De Símbolos...............................................................................14
TIPOS DE ESTRUCTURAS DE TABLAS DE SÍMBOLOS...................................15
Manejo De Errores...............................................................................21
Referencias Bibliográficas...................................................................23
AF = {Q , ∑ , q0, F}
Como el analizador léxico es la parte del compilador que lee el texto fuente
también puede realizar ciertas funciones secundarias de la interfaz del usuario
como eliminar del programa fuente comentarios y espacios en blanco en forma de
caracteres TAB y de línea nueva. Otra función es relacionar los mensajes de error
del compilador con el programa fuente.
Ejemplo:
Aunque solo sea por razones de eficiencia, está justificado el manejo del buffer
para los caracteres de entrada. La extracción de un bloque de caracteres suele ser
más eficiente que la extracción de un carácter a la vez.
Como el analizador léxico es la única fase del compilador que lee el programa
fuente carácter a carácter, es posible que consuma mucho tiempo en la fase de
análisis léxico, aunque las fases posteriores sean conceptualmente más complejas.
Se leen N caracteres de entrada en cada mitad de buffer con una orden de lectura
de sistema, en vez de invocar una instrucción de lectura para cada carácter de
entrada.
E = M * C * * 2 eo
f
delantero
Comienzo lexema
Este esquema de manejo de buffer casi siempre funciona muy bien, pero limita a
cantidad de caracteres de pre análisis, y esto puede imposibilitar el
reconocimiento de los componentes léxicos cuando la distancia recorrida por el
apuntador delantero sea mayor que la longitud del buffer.
Sus atributos
Las operaciones más usuales que se realizan en una tabla se símbolos son:
…
Identificador IDENT1
Identificador INF1
Identificador IDENT2
Identificador INF2
…
9 identificador
… Información
11 Identificador
… información
…
NEWPROG NOMBRELAR
… ..
RA GO
Sistema que cuenta con una zona especial para los identificadores, de forma que
se evitan huecos. El campo identificador de la tabla de símbolos queda compuesto
por dos subcampos: el primero es un puntero a la primera posición del área donde
se encuentra el nombre y el segundo indica el número de caracteres que contiene.
IDENT1
info-1
IDENT2
info-2
...
...
IDENTn
info-n
LIBRE
El número entero obtenido se utiliza como índice de una tabla denominada tabla
hash. Por otra parte, llamamos tabla de símbolos hash a aquella tabla de
almacenamiento cuyo índice de acceso se obtiene a través de una tabla hash.
Al diseñar la función, habrá que tener en cuenta los calores que los valores que
devuelva tengan una distribución uniforma, que el rango de dichos valores no
supere la dimensión de la tabla hash y que esta dimensión sea un numero primo,
con el cual evitaremos gran numero se sinónimos y colisiones.
IDENT1
info-1
enlace-1
IDENT2
… info-2
2 enlace-2
… IDENT2
… info-2
3 enlace-3
…
LIBRE
Se utiliza una función hash para el acceso a una tabla de símbolos por el simple
hecho del ahorro de tiempo en las búsquedas. Y la razón de usar dos tablas es
porque con ello evitamos huecos y aprovechamos al 100% el espacio en la tabla
de almacenamiento.
De esta forma, la tabla hash estará compuesta de n punteros que apuntan a las
cabezas de n listas encadenadas situadas en la tabla de almacenamiento. Cada
estructura o entrada de la tabla de símbolos estará en una de estas listas.
Hay muchas estrategias generales distintas que puede emplear un analizador para
recuperarse de un error sintáctico. Aunque ninguna de ellas ha demostrado ser de
aceptación universal, algunos métodos tienen una amplia aplicabilidad. Aquí se
introducen las siguientes estrategias:
En modo pánico
A nivel de frase
De producciones de error
De corrección global
Una corrección local típica seria sustituir una coma por un punto y coma, suprimir
un punto y coma sobrante, o insertar un punto y coma que falta. La elección de la
corrección local corresponde al diseñador del compilador.
Referencias Bibliográficas
Lenguaje y Compiladores
Iván Pérez