EXTRUCTURA DE UN COMPILADOR UN COMPILADOR SE DIVIDE EM DOS FASES:
UNA PARTE QUE ANALIZA LA ENTRADA Y GENERA ESTRUCTURAS INTERMEDIAS Y OTRA
PARTE QUE SINTETIZA LA SALIDA ANALIZIS: LIXECOGRAFICO- SINTAXTICO-SEMANTICO SINTESIS: GENERACION DE CODIGO INTERMEDIO- OPTIMIZACION DE CODIGO - GENERACION DE CODIGO MAQUINA
COMPILADOR
FUENTE-----ANALIZIS------SINTETIZA------DESTINO
MENSAJE DE ERROR
bsicamente los objetivos de la fase de analizis son controlar la correccin del programa fuente generear estructuras necesarias para comenzar la sintesis el analizis consta de las siguientes tareas analizis lexicografico: divide el programa fuente en los componentes basicos : numeros , identificadores de usuarios ( variables, constantes,tipos, nombres de procedimientos. ) palabras reservadas signos de puntuacion analizis sintaxtico : comprueba que la extructura de los componentes basiscos sea correcta segun ciertas reglas gramaticales analizis semantico: compurueba todo lo demas posible, es decir, todo lo relacionado con el significado , chequeo de tipos , rango de valores, existencia de variables etc.
el objetivo de la fase de sisntesis consiste en : construir el programa objeto deseado a partir de las estructuras generadas por la fase de analizis. para ello realiza tres tareas fundamentales la primera: generacion de codigo intermedio: genera un codigo independiente de la maquina generacion de codigo maquina: crea un fichero .exe direcatamente o un fichero .obj fase de optimizacion: la optimizacion pede realizarse durante las fases de generas acciones de codigo intermedio y/o generacion de codigo maquina
analizis del programa fuente : se encarga de buscar los componentes lexicos o palabras segun las reglas o patrones la entrada del analizador lexico podemos definirla como una secuencia de caracteres
secuencia de caracateres --------lexico_--------secuencia terminales sintaxticos------arbol sintaxtico usa una gramatica (n,t,p,s)
gramatica N--- SMBOLO NO TERMINALES T----SIMBOLO NO TERMINALES P-----REGLAS DE PRODUCCIN S---AXIMA INICIAL
Funciones del analizador lxico El analizador lxico es la primera fase de un compilador. Su principal funcin consiste en leer los caracteres de entrada y elaborar como salida una secuencia de componentes lxicos que utiliza el analizador sintctico para hacer el anlisis. Esta interaccin suele aplicarse convirtiendo al analizador lxico en una sub rutina o co rutina del analizador sintctico
Dame el siguiente componente lxico Comprende texto Programa fuente----analizador lxico toma el componente lxico--- analizador sintctico
Tabla de smbolo
EJEMPLO : SE CONSIDERA LA GRAMATICA QUE ERECONOCE LAS OPERACIONES ARIMETICAS E-----E+T I T T----T*F IF F---ID I NUM I (E)
EN EL QUE: N=
E
E + E
E * E Id3
Id 1 id2
Ll 1 a este tipo de anlisis se le denomina ll (k).la primera L representa la forma de exploracin de la sentencia : de izq. A derecha (L: LEF THO READE) LA SEGUNDA (L) POR LA FORMA DE CONSTRUCCION DEL ARBOL(DESCENDENTE ) , UTILIZANDO LA DERIVACION DEL NO TERMINAL MAS A LA IZQUIERDA, EN CADA PASO (L: lest most). El smbolo K representa la cantidad de tokens o componentes lxicos de la sentencia que se tendrn en cuenta, para que el analizador sepa, predictivamente, que regla aplicar. Generalmente k = 1
Una gramatica LL (1) DEBE CUMPLIR CON LAS SIGUIENTES CONDICIONES DEBE SER UNA GRAMATICA LIMPIA NO DEBE SER AMBIGUA NO DEBE TENER RECURSIVIDADES POR IZQUIERDA EN SUS REGLAS
TOKENS: SIMBOLOS TERMINALES DE UNA GRAMATICA IDENTIFICADORES: PALABRAS RESERVADAS, OPERADORES VARIOS SIGNOS PUEDEN FORMAR EL MISMO TOKENS ATRIBUTOS: INFORMACION ADICIONAL QUE TIENE EL TOKENS DE UTILIDAD PARA EL ANALISIS SEMANTICO Y SINTAXTICO COMPONENTES LEXICOS: ( TOKENS) :
UNIDAD MINIMA DE INFORMACION QUE SIGNIFICA ALGO A LA HORA DE COMPILAR CONCEPTO DEM PALABRA LAS FASES DEL LENGUAJE CONSTAN DE CADENAS DE COMPONENTES LEXICOS LEXCEMA: UNA SECUENCIA DE CARACTERES DE ENTRADA QUE COMPRENDE UN SOLO COMPONENTE LEXICO SE LLAMA LEXCEMA CADENA DE CARACTERES QUE EXTRAE EL COMPONENTE ABSTRACTO DEL COMPONENTE LEXICO PATRON: DESCRIPCION DE LA FORMA QIE HAN DE TOMAR LOS LEXCEMAS PARA AJUSTARSE A UN CONPONENTE LEXICO
TABLA DE SIMBOLOS LA TABLA ALMACENA LA INFORMACIONQUE EN CADA MOMENTO SE NECESITA SOBRE LAS VARIABLES DEL PROGRAMA , I.NFORMACION TAL COMO: NOMBRE, TIPO , DIRECCION DE LOCALIZACION TAMAO , ETC LA GESTION DE LA TABLA DE SIMBOLOS ES MUY IMPORTANTE YA QUE CONSUME GRAN PARTE DEL TIEMPO DE COMPILACION , DE AH QUE SU EFICIENCIA SE CRITICA
ANALIZIS LEXICO FUNCION DEL ANALIZADOR LEXICOS: EL ANALIZADOR LEXICO ES LA PRIMERA FASE DE UN COMPILADOR. SU PRINCIPAL FUNCION CONSISTE EN LEER LOS CARACTERES DE ENTRADA Y ELABORAR COMO SALIDA UNA SECUENCIA DE COMPONENTEXS LEXICOS QUE UTILIZA EL ANALIZADOR SINTAXTICO PARA HACER EL ANALISIS EL ANALIZADOR LEXICO RECONOCE LAS PALABRAS EN FUNCION DE UNA GRAMATICA REGULAR DE MANERA QUE SUS SENTENCIAS SE CONVIERTEN EN LOS ELEMENTOS DE ENTRADA DE FASES POSTERIORES
COMPONENTES LEXICOS, PATRONES Y LEXEMAS LEXEMAS: REPRESENTAN CADENAS DE CARACTERES EN EL PROGRAMA FUENTE QUE SE PUEDEN TRATAR JUNTOS COMO UNA UNIDAD LEXICA. UN LEXEMA ES UNA SECUENCIA DE CARACTERES EN EL PROGRAMA FUENTE CON LA QUE CONCUERDA EL PATRON PARA UN COMPONETE LEXICO SE CONSIDERA COMPONENTES LEXICOS LAS SGTS. CONSTRUCCIONES: PALABRA CLAVE, OPERADORES , IDENTIFICADORES, CONSTANTES,CADENAS LITERALES Y SIGNOS DE PUNTUACION COMO PARENTESIS, COMA Y PUNTO, Y COMA. PATRON ES UNA REGLA QUE DESCRIBE EL CONJUNTO DE LEXEMAS QUE PUEDEN REPRESENTAR A UN DETERMINADO COMPONENTE LEXICO DE LOS PROGRAMAS FUENTES ATRIBUTOS DE LOS COMPONENTES LEXICOS CUANDO CONCUERDA CON UN LEXEMA MAS DE UN PATRON, EL ANALIZADOR LEXICO DEBE PROPORCIONAR INFORMACION ADICIONAL SOBRE EL EXCEMA CONCRETO QUE CONCORDO CON LAS SGTS. FASES DEL COMPILADOR
<id, apuntador a la entrada de la atabla de smbolos para E> < op-asig, > <id, apuntador a la entrada de la tabla del smbolo para M> <op-mult, > < Id,apuntadora la entrada de la tabla de smbolos dara C> <op-exp, > <num,valor entero 2>
ERRORES LXICOS SON POCOS LOS ERRORES QUE SE PUEDEN DETECTAR SIMPLEMENTE EN EL NIVEL LXICO PORQUE UN ANALIZADOR LXICO TIENE UNA MISIN MUY RESTRINGIDA DE UN PROGRAMA FUENTE MANEJO DE LOS BUFER DE ENTRADA BUFER: AREA DEL ALMACENAMIENTO PRIMARIO DESTINADA A CONTENER DATOS DURANTE TRANSFERENCIA DE ENTRADA SALIDA DURANTE LA ENTRADA LOS DATOS SON CARGADOS EN EL BUFER AL TERMINAR LA TRANSFERENCIA YA SE PUEDE TRABAJAR CON ELLOS TCNICA DE PAREJA DE BUFER EN LA TCNICA DE PAREJA DE BUFER SE UTILZA UN BUFER DIVIDIDO EN DOS MITADES DE N CARACTERES CADA UNO DONDE: N= NUMERO DE EN UN BLOQUE DE DISCO EOF= MARCA EL FINAL DEL ARCHIVO FUENTE AL PRINCIPIO , LOS DOS APUNTADORES APUNTAN AL PRIMER CARCTER DEL PROXIMO LEXEMA Y HAY QUE ENCONTRAR: EL APUNTADOR DELANTERO EXAMINA HACIA DELANTE HASTA ENCONTRAR UNA CONCORDANCIA CON UN PATRON . UNA VEZ DETERMINADO EL SIGUIENTE LEXEMA, EL APUNTADOR DELANTERO SE COLOCA EN EL CARCTER DE SU EXTREMO DERECHO. EL APUNTADOR DE LEXEMA SE QUEDA AL INICIO DEL LEXEMA Y LO PROCESA.
DESPUES DE HABER PROCESADO EL LEXEMA AMBOS APUNTADORES SE COLOCAN EN EL CARCTER SITUADO INMEDIATAMENTE DESPUES DEL LEXEMA DELANTERO
E= M *
C * * 2 EOF COMIENZA LEXEMA
TECNICAS DE CENTINELAS SI SE UTILIZA LA PAREJA DE BUFER, CADA VEZ QUE SE MUEVE EL APUNTADOR DELANTERO SE DEBE COMPROBAR SI SE HA SALIDO DE UNA MITAD DEL BUFER SI ASI OCURRIERA SE DEBERA CARGAR LA SEGUNDA MITAD ES DECIR , PARA HACER AVANZAR EL APUNTADOR SE REALIZAN DOS PRUEBA SE PUEDEN REDUCIR ESTAS DOS PRUEBAS A UNA SI SE AMPLIA CADA MITAD DEL BUFER PARA ADMITIR UN CARCTER CENTINELA ( CARCTER ESPECIAL QUE NO PUEDE SER PARTE DEL PROGRAMA FUENTE EOF ) AL FINAL. ESPECIFICACION Y RECONOCIMIENTO DE COMPONENTES LEXICOS EXPRESIONES REGULARES: SON UNA NOTACION IMPORTANTE PARA ESPECIFICAR PATRONES CADA PATRON CONCUERDA CON UNA SERIE DE CADENAS, DE MODO QUE LAS EXPRESIONES REGULARES SERVIRAN COMO NOMBRES PARA CONJUNTO DE CADENAS CADENAS Y LENGUAJE: EL TERMINO ALFABETO A CLASE DE CARACTER DENOTA CUALQUIER CONJUNTO FINITO de SMBOLOS EJEMPLOS TPICOS DE SMBOLOS SON LAS LETRAS Y LOS CARACTERES UNA CADENA SOBRE ALGUN ALFABETO ES UNA SECUENCIA FINITA DE SIMBOLOS TOMADOS DE ESE ALFABETO EL TERMINO LENGUAJE SE REFIERE A CUALQUIER CONJUNTO DE CADENAS DE UN ALFABETO FIJO
TRMINOS DE PARTE DE UNA CADENA Prefijo de s: una cadena que se obtiene eliminando O o mas smbolos de la cadena ejemplo band Sufijo de s: una cadena que se forma suprimiendo O o mas smbolos desde la izquierda de una cadena S ej: era
sub cadena de S: una cadena que se obtiene suprimiendo un prefijo y un sufijo de S ej: ande sub secuencia de S: cualquier cadena formada mediante la eliminacin de O o mas smbolos no necesariamente contiguos a S Ej: bada
OPERACIONES APLICADAS AL LENGUAJE HAY VARIAS OPERACIONES IMPORTANTES QUE SE PUEDEN APLICAR A LOS LENGUAJES PARA EL ANALIZIS LEXICO, INTEREZAN PRINCIPALMENTE LA UNION, LA CONCATENACION Y LA CERRADURA
OPERACION DEFINICION - UNION DE L Y M QUE SE ESCRIBE LUM - CONCATENACION DE L Y M QUE SE ESCRIBE LM - CERRADURA DE KLEENE DE L, QUE SE ESCRIBE L * - CERRADURA POSITICA DE L, QUE SE ESCRIBE L + LUM= ( S/S ES EN L O S ESTA EN M) LM= ( ST I ESTA EN L Y T ESTA EN M) L* DENOTA * CERO O MAS CONCATENACIONES DE L L + DENOTA UNA O MAS CONCATENACIONES DE L
SEA L EL CONJUNTO ( A,B,C,DZ.a,b,c,d,.z) D el conjunto (0,1,2,.9) 1- LUD: ES EL CONJUNTO DE LETRAS Y DIGITOS 2- LD: ES EL CONJUNTO DE CADENAS DE CONSTA DE UNA LETRA SEGUIDA DE UN DIGITO 3- L4: ES EL CONJUNTO DE TODAS LAS CADENAS DE CUATRO LETRAS 4- L* ES EL CONJUNTO DE TODAS LAS CADENAS DE LETRAS, INCLUYENDO LA CADENA VACIA L 5- ( LUD)*/ ES EL CONJUNTO DE TODAS LAS CADENAS DE LETRAS D Y DIGITOS QUE COMIENZAN CON UNA LETRA 6- D+ ES EL CONJUNTO DE TODAS LAS CADENAS O MAS DIGITOS