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

COMPILADORES

UANCV C.A.P. DE INGENIERA DE SISTEMAS

COMPILADORES
COMPILADORES Y SUS FASES

ING. EDWIN RAL CAPAQUIRA CHURA

COMPILADORES

TABLA DE CONTENIDO

INTRODUCCION.1
JUSTIFICACION..4
OBJETIVO GENERAL.5
OBJETIVO ESPECIFICO6
CONCLUSION...7
BIBLIOGRAFIA..8
VOCABULARIO.9
COMPILADOR Y SUS FASES11
FASES DE UN COMPILADOR16
MANEJO DE ERRORES SINTATICOS.17
ANALIZADOR LEXICO.19
FUNCION DEL ANALIZADOR LEXICO.20
AUTOMATA FINITO21
AUTOMATA DE PILA.23

COMPILADORES

ES AQUEL QUE SE ENCARGA DE HACER EJECUTABLE NUESTRO PROGRAMA.

INTRODUCCION
"Cmo funciona un compilador? ", es la pregunta de todo aquel que se hace llamar
programador, a grandes rasgos un compilador toma un programa escrito en un
lenguaje de programacin con una gramtica, sintaxis y semntica definida, revisa que
este dentro de las pautas de definicin del lenguaje, y lo traduce en programa de salida
escrito en lenguaje binario, el cual es entendido por el ordenador y por lo tanto puede
ser ejecutado por el mismo (recordar que un intrprete a diferencia de un compilador no
traduce todo el programa sino que va realizando la traduccin e interpretacin de la
misma paso a paso, sin crear ningn programa de salida ejecutable). Las partes del
proceso de compilacin se dividen en dos: una llamada fase de Anlisis y otra llamada
fase de Sintaxis, las cuales interactan entre s para la creacin de la tabla de smbolos
y el control del manejador de errores, dentro del anlisis hay tres etapas llamadas
anlisis lxico, anlisis sintctico, anlisis semntico. Dentro de la fase de Sntesis
existen las etapas de generacin de cdigo intermedio, optimizacin de cdigo
intermedio, y generacin de cdigo.
Al tener que describir cmo funciona un compilador tenemos
que tener en claro en no confundir los trminos compilador y compilacin, se debe
entender que al decir compilador nos referimos al programa, y al decir compilacin al
proceso en s. En esencia ambos trminos cumplen con la definicin ms simple de un
compilador, es decir, sea el programa compilador o el proceso de compilacin, ambos
2

COMPILADORES
reciben como entrada un cdigo escrito en algn lenguaje y producen como salida otro
cdigo escrito en otro lenguaje.

COMPILADORES

JUSTIFICASION

La teora de Compiladores es un rea de conocimientos fundamental para la formacin


del estudiante de Ciencias de la Computacin.
Posee una relevancia prctica y terica en la formacin del futuro profesional tanto en
el aspecto de la programacin de computadoras
Como en la construccin de la base terica de conocimientos del mismo.
. Es importante que un profesional de la informtica tenga
una slida formacin en este tema, ya que aunque durante su vida profesional no se
dedique al diseo de compiladores, sus aplicaciones podrn ser mucho ms eficientes
si aplica los conocimientos adquiridos.

COMPILADORES

OBJETIVO GENERAL

Comprender el problema al que se enfrenta un compilador. Comprender los


Algoritmos que se utilizan para resolver cada una de las fases del compilador.
Dominar completamente el proceso para convertir un lenguaje de alto nivel a un
Lenguaje de bajo nivel.

COMPILADORES

OBJETIVO ESPECIFICO

1.1 Aplicar el concepto de compiladores como alternativa de solucin de problemas.


1.2 Que nosotros los estudiantes realicemos una aplicacin interactiva que trabaje
conjuntamente con el analizador.
1.3Que el estudiante sea capaz de crear gramticas y de recuperarse de errores
lxicos, sintcticos.
1.4Iniciar el proceso de aprendizaje de herramientas generadoras de Analizadores
Lxicos y Sintcticos.

COMPILADORES

CONCLUSION

Comprend que un compilador, requiere de una sintaxis y lenguajes especficos, ya


que, al igual que el lenguaje humano, si no lo escribimos correctamente el compilador
no har lo que deseamos. Y que en la compilacin hay dos partes: Anlisis y Sntesis.
La parte del anlisis divide al programa fuente en sus elementos componentes y crea
una representacin intermedia.
Aprend que las herramientas que muestran tipos de anlisis
de programas fuente, son muy tiles al momento de crear un programa al codificar un
algoritmo, ya que estas herramientas nos ayudan formateando el texto, corrigiendo
errores, dando tips; para que nosotros como programadores seamos ms eficientes al
momento de crear alguna aplicacin.

COMPILADORES

BIBLIOGRAFIA

Es.scribd.com/doc./4750326/INTRODUCCION-A-COMPILADORES
www.cualtos.udg.mx/programas/computacion/cc317_compiladores.pdf
www.monografias.com/trabajos11/compil/compil2.shtml
yanethcardenas09.wix.com/compiladores#!anlisis/ck1

COMPILADORES

VOCABULARIO
1. bytecode: Es un cdigo intermedio ms abstracto que el cdigo mquina.
2. lexicogrfico: persona que recopila o selecciona los vocablos que han entrar en un
lxico.
3. tokens: un token o tambin llamado componente lxico es una cadena de caracteres
que tiene un significado coherente en cierto lenguaje de programacin.
4. while: El bucle while o bucle mientras es una estructura de la mayora de los
lenguajes de programacin estructurados cuyo propsito es repetir un bloque de
cdigo mientras una condicin se mantenga verdadera.
5. subrutina: E n computacin una subrutina o subprograma (tambin llamado
procedimientos, funcin o rutina), como idea general se presenta como un su algoritmo
que forma parte del algoritmo principal.
6. corrutina: Una corrutina es un componente que poseen los programas que son
capaces de crear subrutinas.

COMPILADORES

10

COMPILADORES

UN COMPILADOR Y SUS FASES

Compilador

Es un programa que permite traducir el cdigo fuente de un programa en lenguaje de


alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina).
De esta manera un programador puede disear un programa
en un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego
compilarlo a un programa ms manejable por un computador.

Imagen1.esta imagen nos muestra como traduce los textos del compilador.
Un compilador es un programa informtico que traduce un
programa escrito en un lenguaje de programacin a otro lenguaje de programacin,
generando un programa equivalente que la mquina ser capaz de interpretar.
Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un
cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se
conoce como compilacin.

11

COMPILADORES
El compilador es el que permite traducir el cdigo fuente de
un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente
lenguaje de mquina). De esta manera un programador puede disear un programa en
un lenguaje mucho ms cercano a cmo piensa un ser humano, para luego compilarlo
a un programa ms manejable por una computadora.

Imagen2. Diagrama a bloques de la operacin de un buen compilador.


12

COMPILADORES

Bsicamente, El programa compilador traduce las


instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede
interpretar y ejecutar. Para cada lenguaje de programacin se requiere un compilador
separado dos grandes formas de ejecutar programas: programas compilados
(previamente pasados por un compilador) y programas interpretados (necesitan pasar
por un intrprete para ejecutarse en tiempo real).
Un compilador es un programa informtico, que se encarga
de traducir el cdigo fuente de una aplicacin que este en desarrollo, es decir convierte
un programa hecho en lenguaje de programacin de alto nivel a un lenguaje de
mquina, el cual es conocido como de bajo nivel, de tal forma que sea ms entendible
y mucho ms fcil de procesar en el equipo en el que se est ejecutando.

13

COMPILADORES
Imagen3. Estructura de proceso de compilacin.
De igual manera un traductor es el que toma como entrada
un texto escrito y da como salida otro texto en un lenguaje llamado objeto.
Un compilador es un programa que crea una lista de
instrucciones de cdigo mquina basndose en un cdigo fuente resultando en un
programa listo y rpido para usarse. Por otro lado el intrprete es ms lento puesto
que, no produce ningn cdigo sino que lo reconoce. Ambos son lenguajes de
programacin.
Conceptualmente un compilador opera en fases. Cada una
de las cuales transforma el programa fuente de una representacin en otra. En la
imagen 4 se muestra una descomposicin tpica de un compilador. En la prctica se
pueden agrupar fases y las representaciones intermedias entres las fases agrupadas
no necesitan ser construidas explcitamente.
Programa fuente.

14

COMPILADORES

Imagen4. Nos muestra una descomposicin tpica de un compilador.


El programa compilador traduce las instrucciones en un
lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar.

Fases De Un Compilador
15

COMPILADORES

1. El anlisis es la fase en la cual se trata de la escritura correcta del cdigo fuente.


Esta a su vez comprende varias fases:
Anlisis lxico: esta fase es la encargada de leer el cdigo fuente y separarlo en lotes
para poder ser ledo por el anlisis sintctico. Esta fase se encarga de verificar si todas
las cadenas pertenecen o no al lenguaje. Es decir realiza un anlisis smbolo por
smbolo indicando el toquen por cada uno de los elementos reconocidos o el error en
caso de no reconocer.
Este anlisis no logra detectar muchos errores por su caracterstica.
1.1 Anlisis sintctico: esta fase evala los lotes de cdigo con el fin de que este
cumpla con los requerimientos definidos por el compilador. En esta fase se analiza la
estructura de las expresiones en base a gramticas. Aqu ya se puede determinar si
una estructura por ejemplo una expresin matemtica mal formada. El anlisis que se
realiza es jerrquico es decir en base a rboles de derivacin que se obtienen de las
mismas gramticas.
En teora, se supone que la salida del analizador sintctico es alguna representacin
del rbol sintctico que reconoce la secuencia de tokens suministrada por el analizador
lxico.

Manejo De Errores Sintcticos


16

COMPILADORES
Si un compilador tuviera que procesar slo programas correctos, su diseo e
implantacin se simplificaran mucho. Pero los programadores a menudo escriben
programa incorrectos, y un buen compilador debera ayudar al programador a
identificar y localizar errores. Es ms, considerar desde el principio el manejo de
errores puede simplificar la estructura de un compilador y mejorar su respuesta a los
errores.
Los errores en la programacin pueden ser de los siguientes tipos:
Lxicos, producidos al escribir mal un identificador, una palabra clave o un operador.
Sintcticos, por una expresin aritmtica o parntesis no equilibrados.
Semnticos, como un operador aplicado a un operando incompatible.
Lgicos, puede ser una llamada infinitamente recursiva.
El manejo de errores de sintaxis es el ms complicado desde el punto de vista de la
Creacin de compiladores. Nos interesa que cuando el compilador encuentre un error,
se recupere y siga buscando errores.
1.2 Anlisis semntico: en esta fase se busca establecer que el cdigo fuente cumpla
con la semntica solicitada por el compilador, es decir que el cdigo este correctamente
escrito para poder ser interpretado. Este anlisis es ms difcil de formalizar, determina
el tipo de los resultados intermedios, comprobar que los argumentos que tienen un
operador pertenecen al conjunto de operadores posible, y si son compatibles entre s.
Ejemplo: Suponiendo que tenemos esta lnea de cdigo en
C: res=valor1+valor2; El anlisis semntico se va a encargar que tanto el valor1 como
17

COMPILADORES
el valor2 tengan datos que son compatibles en comn y que adems se les pueda
aplicar dicho operador. En C el smbolo (+) implica una suma de valores o una unin de
las cadenas.
El anlisis semntico utiliza como entrada el rbol sintctico detectado por el anlisis
sintctico para comprobar restricciones de tipo y otras limitaciones semnticas y
preparar la generacin de cdigo.
En compiladores de un solo paso, las llamadas a las rutinas semnticas se realizan
directamente desde el analizador sintctico y son dichas rutinas las que llaman al
generador de cdigo. El instrumento ms utilizado para conseguirlo es la gramtica de
atributos.
En compiladores de dos o ms pasos, el anlisis semntico se realiza
independientemente de la generacin de cdigo, pasndose informacin a travs de un
archivo intermedio, que normalmente contiene informacin sobre el rbol sintctico en
forma lineal izada (para facilitar su manejo y hacer posible su almacenamiento en
memoria auxiliar).

ANALIZADOR LEXICO

18

COMPILADORES

El analizador lxico, tambin conocido como scanner, lee los caracteres uno a uno
desde la entrada y va formando grupos de caracteres con alguna relacin entre s
(tokens), que constituirn la entrada para la siguiente etapa del compilador. Cada
tokens representa una secuencia de caracteres que son tratados como una nica
entidad. Por ejemplo, en Pascal un tokens es la palabra reservada BEGIN, en C:
WHILE, etc. Las tiras especficas slo tienen tipo (lo que representan), mientras que las
tiras no especficas tienen tipo y valor. Por ejemplo, si Contador es un identificador, el
tipo de tokens ser identificador y su valor ser la cadena Contador. El Analizador
Lxico es la etapa del compilador que va a permitir saber si es un lenguaje de formato
libre o no. Frecuentemente va unido al analizador sintctico en la misma pasada,
funcionando entonces como una subrutina de este ltimo. Ya que es el que va leyendo
los caracteres del programa, ignorar aquellos elementos innecesarios para la
siguiente fase, como los tabuladores, comentarios, espacios en blanco, etc.
Se encarga de buscar los componentes lxicos (tokens En ingls) o palabras que
componen el programa fuente, segn unas reglas o patrones. La entrada del analizador
lxico podemos definirla como una secuencia de caracteres.

Imagen5.analizador lxico.

19

COMPILADORES
El analizador lxico tiene que dividir la secuencia de
caracteres en palabras con significado propio y despus convertirlo a una secuencia de
terminales desde el punto de vista del analizador sintctico, que es la entrada del
analizador sintctico.
El analizador lxico reconoce las palabras en funcin de una gramtica regular de
manera que sus NO TERMINALES se convierten en los elementos de entrada de fases
posteriores. En LEX, por ejemplo, esta gramtica se expresa mediante expresiones
regulares.
Funcin 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 subrutina o
corrutina del analizador sintctico.

Imagen6.interaccion de un analizador lxico con el analizador sintctico.


AUTOMATA FINITO
20

COMPILADORES

Un autmata finito es un modelo matemtico de una


mquina que acepta cadenas de un lenguaje definido sobre un alfabeto A. Consiste en
un conjunto finito de estados y un conjunto de transiciones entre esos estados, que
dependen de los smbolos de la cadena de entrada. El autmata finito acepta una
cadena x si la secuencia de transiciones correspondientes a los smbolos de x conduce
desde el estado inicial a un estado final.
Si para todo estado del autmata
existe como mximo una transicin definida para cada smbolo del alfabeto, se dice
que el autmata es determinstico (AFD). Si a partir de algn estado y para el mismo
smbolo de entrada, se definen dos o ms transiciones se dice que el autmata es no
determinstico (AFND).

Formalmente un autmata finito se define como una 5-upla M =


<E, A, , e0, F> donde E: conjunto finito de estados A: alfabeto o conjunto finito de
smbolos de entrada : funcin de transicin de estados, que se define como - : E x A
E si el autmata es determinstico - : E x A P(E) si el autmata es no
determinstico (P(E) es el conjunto potencia de E, es decir el conjunto de todos los
subconjuntos de E) e0: estado inicial; e0 E F: conjunto de estados finales o estados
de aceptacin; F E.
Generalmente se asocia con cada autmata un grafo dirigido, llamado diagrama de
transicin de estados. Cada nodo del grafo corresponde a un estado. El estado inicial
21

COMPILADORES
se indica mediante una flecha que no tiene nodo origen. Los estados finales se
representan con un crculo doble.

Imagen7.automata y lenguajes formales.


Un autmata finito o mquina de estado finito es un modelo computacional que realiza
cmputos en forma automtica sobre una entrada para producir una salida.

22

COMPILADORES
.

23

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