Вы находитесь на странице: 1из 10

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

Вам также может понравиться