Función de Un Análisis Léxico

4
Función de un Análisis Léxico Leer los caracteres de la entrada Generar una secuencia de componentes léxicos (TOKENS) Eliminar comentarios, delimitadores (espacios, símbolos de puntación, fin de línea) Relacionar los mensajes de error con las líneas del programa fuente Introducir los identificadores en la tabla de símbolos Manejo de Bufferes de entrada Buffer Área del almacenamiento primario destinada a contener datos durante transferencia de entrada salida. Técnica de Pareja de buffers Se divide en dos mitades de tamaño N (N= un bloque del disco (1024 o 4096) Dos punteros: comienzo_lexema y delantero. Al principio los dos igual y avanzo delantero hasta encontrar concordancia con patrón (un token). Delantero se coloca en su carácter derecho. Comienzo_lexema y delantero delimitan lexema. Procesa lexema (devuelvo token) y coloco comienzo_lexema en delantero (primer carácter del siguiente) Cando termina una mitad, recarga la otra y continua hasta encontrar token. Se mantienen dos apuntadores al buffer de entrada: Apuntador delantero: examina hacia delante hasta encontrar una concordancia con un patrón. Una vez determinado el siguiente lexema, el apuntador delantero se coloca en el carácter de su extremo derecho. Apuntador de lexema: se queda al inicio del lexema y lo procesa.

description

• Leer los caracteres de la entrada • Generar una secuencia de componentes léxicos (TOKENS)• Eliminar comentarios, delimitadores (espacios, símbolos de puntación, fin de línea)• Relacionar los mensajes de error con las líneas del programa fuente• Introducir los identificadores en la tabla de símbolos

Transcript of Función de Un Análisis Léxico

Funcin de un Anlisis Lxico

Leer los caracteres de la entrada Generar una secuencia de componentes lxicos (TOKENS) Eliminar comentarios, delimitadores (espacios, smbolos de puntacin, fin de lnea) Relacionar los mensajes de error con las lneas del programa fuente Introducir los identificadores en la tabla de smbolosManejo de Bufferes de entrada

Buffer

rea del almacenamiento primario destinada a contener datos durante transferencia de entrada salida.Tcnica de Pareja de buffers Se divide en dos mitades de tamao N (N= un bloque del disco (1024 o 4096) Dos punteros: comienzo_lexema y delantero. Al principio los dos igual y avanzo delantero hasta encontrar concordancia con patrn (un token). Delantero se coloca en su carcter derecho. Comienzo_lexema y delantero delimitan lexema. Procesa lexema (devuelvo token) y coloco comienzo_lexema en delantero (primer carcter del siguiente) Cando termina una mitad, recarga la otra y continua hasta encontrar token.Se mantienen dos apuntadores al buffer de entrada:Apuntador delantero: examina hacia delante hasta encontrar una concordancia con un patrn. Una vez determinado el siguiente lexema, el apuntador delantero se coloca en el carcter de su extremo derecho.Apuntador de lexema: se queda al inicio del lexema y lo procesa.

Tcnica de Centinelas

Si se utiliza la pareja de buffers, cada vez que se mueva el apuntador delantero se debe comprobar si se ha salido de una mitad del buffer, si as ocurriera se deber cargar la segunda mitad. Se pueden reducir estas dos pruebas a una si se ampla cada mitad del buffer para admitir un carcter centinela (EOF) al final.

Especificacin y reconocimiento de componentes lxicos

Componentes Lxicos Elementos bsicos de los lenguajes de programacin Se describen mediante: Una descripcin informal Una descripcin formal mediante expresiones regulares Ejemplos o paradigmas

Descripcin InformalCadena de caracteres compuestas por letras, cifras y smbolos de subrayado, pero que no comienza por una cifra.Descripcin formal(Letra + subrayado)(letra + cifra + subrayado)*Ejemplos o paradigmasDividiendo, divisor, cociente, resto, suma_total, x_1, entre otras.Autmata finito

Es un modelo computacional que realiza cmputos en forma automtica sobre una entrada para producir una salida.Este modelo est conformado por un alfabeto, un conjunto de estados finitos, una funcin de transicin, un estado inicial y un conjunto de estados finales. Su funcionamiento se basa en una funcin de transicin, que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto (entrada), y que va leyendo dicha cadena a medida que el autmata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptacin, que representa la salida.La finalidad de los autmatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales ms simples segn la Jerarqua de Chomsky.

Definicin formalUn autmata finito es una quintupla (Q, , q0, , F) donde: es un conjunto finito deestados; es unalfabetofinito; es el estado inicial; es unafuncin de transicin; es un conjunto de estados finales o de aceptacin.Paso de una expresin regular a un AFN

EntradaUna expresin regular r en un alfabeto A.SalidaUn AFN N que acepte L(r).MtodoPrimero se hace el anlisis sintctico de r en sus sub-expresiones constituyentes.Despus, por las reglar 1 y 2 que se vern ms adelante, se construyen los AFN para cada uno de los smbolos bsicos de r (aquellos que sean -psilon- o un smbolo de alfabeto). Los smbolos bsicos corresponden a las partes 1 y 2 de la definicin de una expresin regular. Es importante comprender que si un smbolo a aparecer varias veces en r, se construye un AFN independiente en cada caso. Despus, guindose por la estructura sintctica de la expresin regular r, se combinan inductivamente esos AFN utilizando la regla 3 que se ver ms adelante hasta obtener el AFN para la expresin completa. Todos los AFN intermedios producidos durante el curso de la construccin corresponden a una sub-expresin de r y tienen varias propiedades importantes: tiene exactamente un estado final, ninguna arista entra en el estado inicio, y ninguna arista sale del estado final.