Analizador Léxico_03Mzo

22
Analizador Léxico Unidad III

Transcript of Analizador Léxico_03Mzo

Analizador Lxico

Analizador LxicoUnidad IIIFases de un compiladorAnalizador lxicoAnalizador sintcticoAnalizador semnticoGenerador de cdigo intermedioOptimizacinGenerador de cdigoCdigo fuenteCdigo objetoAdministrador de la tabla de smbolosManejador de erroresAnalizador lxicoLee la secuencia de caracteres del programa fuente, carcter por carcter, y los agrupa para formar unidades con significado propio, los componentes lxicos.

Es la primer fase del compilador.

Analizador lxicoAnalizador sintcticoTabla de smbolosAdministracin de la tabla de smbolosEstructura de datos que contiene un registro por cada identificador, con los campos para los atributos del identificador.

Memoria asignada a un identificadorTipombitoProcedimientos o funciones, valor de retorna y cantidad y tipos de parmetros que recibe. Analizador SintcticoAgrupar los componentes lxicos del programa fuente en frases gramaticales que el compilador utilizar para sintetizar la salida.

El anlisis sintctico utiliza rboles sintcticos y reglas recursivas.

Analizador semnticoDetecta errores semnticos y rene informacin sobre los tipos.

Utiliza las estructuras generadas en el anlisis sintctico para identificar los operadores y operandos de expresiones y proposiciones.Deteccin e informacin de erroresEn todas las fases se detectan errores.Cada fase debe de tratar de alguna forma ese error, para poder continuar analizando.Lxico el caracteres no forman un componente lxico.

Sintctico La cadena de componentes lxico no cumple con las reglas de la estructura.

Semntico Estructuras sintcticas correctas, que no tenga significado para la operacin.

Generacin de cdigo intermedioRepresentacin intermedia mquina abstracta.Fcil de producirFcil de traducir al programa objeto

OptimizacinMejorar el cdigo intermedioCdigo mquina rpido de ejecutar

Cdigo objetoCdigo mquina relocalizable o cdigo ensamblador.Posiciones de memoria variables del programaInstrucciones intermedias instrucciones mquina

Generacin de cdigoEjercicioDefinir un AFD y una expresin regular para reconocer:Nmeros enteros.Identificador (deben de iniciar con una letra, y pueden contener letras y nmeros)

Analizador lxicoFunciones:Identificar los componentes lxicosIdentificadoresOperadores Smbolos especialesPalabras claveConstantes numricas y de caracteres

Eliminar comentariosInclusin bibliotecasExpansin de macros y funcionesLlevar el control del nmero de filas y columnas

Especificacin de los componentes lxicosLas expresiones regulares es una notacin que permite especificar patrones.

Patrn: Es la descripcin del componente lxico mediante una regla.

Alfabeto: denota cualquier conjunto finito de smbolos.

Cadena: secuencia finita de smbolos tomados de un alfabeto.Cadena vaca: cadena especial de longitud cero.

Lenguaje: Conjunto de cadenas de un alfabeto fijo.Componente lxico: cadena de caracteres que tiene un significado coherente en cierto lenguaje de programacin.

Lexema: cadena de smbolos que concuerdan con un patrn que describe un componente lxico.

Sea num el componente lxico que representa un entero.Secuencia de dgitos -> numEl valor entero -> atributo de num

Se generan tuplas componente lxico y atributo(valor)Analizador lxico -> componente lxicoAnalizador semntico -> atributo(valor)En un compilador, se deben de tener definidos los componentes lxicos a travs de un patrn y un nombre que identifica a da uno de ellos.

Cuando se encuentra un lexema, ste se relaciona con un componente lxico.

Los lexemas se ingresan a una tabla de smbolos, s es que an no existe esa entrada.

La representacin interna de un identificador es diferente de la secuencia de caracteres que forman el identificador.

Ejemplo:b =a * 2 ;

Relaciona un componente lxico con un lexema.

,, ,

El analizador lxico convierte la expresin inicial en una cadena de componentes lxicos.

ident = ident * num;Expresiones regularesOperaciones bsicas:ConcatenacinRepeticin * (cero o ms repeticiones)Repeticin + (una o ms repeticiones)Opcionalidad ? (puede aparecer 1 vez, o no)Alternativas |Clase [ ]Rango de smbolos [ inicio - fin]

Autmata finitoLas expresiones regulares sirven para construir diagramas de transiciones, llamados autmatas finitos.

Un AFD y AFN, puede reconocer con precisin lo que denota una expresin regular.

RapidezAFDEspacio (tamao)AFNAFDNingn estado tiene transicin .Para cada estado s y cada smbolo de entrada a, hay a lo ms una arista etiquetada a que sale de s.

Esta formado por:Un conjunto de estados Un conjunto de smbolosFunciones de transicionesUn estado de inicio o inicialUn conjunto de estados finalesEn la prctica, la implementacin de autmatas finitos, genera un cdigo extenso y complicado al momento de modificar, ya sea agregando nuevos estados o smbolos del alfabeto.

La utilizacin de una tabla de transiciones, es una opcin.

ImplementacinDefinir los componentes lxicos.

Definir las palabras reservadas como elementos de la tabla de smbolos.

Identificar tipo de componente lxico y lexema.

Gestionar la entrada del cdigo fuente, a travs de una funcin y una estructura donde se almacenar la cadena a leer.

Almacenar como atributo de identificadores, la lnea y columna donde se detecto la lectura.

Errores lxicosQu pasa con un prefijo de la entrada que no tiene concordancia con ningn patrn?

Modo pnico: Borran caracteres sucesivas de la entrada restante, hasta que el analizador lxico pueda encontrar un componente lxico bien formado.Borrar un caracter extrao.Insertar un caracter que faltaReemplazar un caracter incorrecto por otro correcto.Intercambiar dos caracteres adyacentes.